diff --git a/api/services/debian.js b/api/services/debian.js new file mode 100644 index 0000000..bfdeb85 --- /dev/null +++ b/api/services/debian.js @@ -0,0 +1,21 @@ +const { send, sendError, fetch } = require('../util/http') + +module.exports = async (req, res) => { + const name = req.query.name + + if (!name) { + return sendError(res, new Error('no query given')) + } + + try { + const response = await fetch( + `https://packages.debian.org/buster/${encodeURIComponent(name)}`, + 'GET' + ) + const body = await response.text() + const availability = body.includes('No such package') + send(res, availability) + } catch (err) { + sendError(res, err) + } +} diff --git a/api/services/launchpad.js b/api/services/launchpad.js new file mode 100644 index 0000000..64004ec --- /dev/null +++ b/api/services/launchpad.js @@ -0,0 +1,22 @@ +const { send, sendError, fetch } = require('../util/http') + +module.exports = async (req, res) => { + const name = req.query.name + + if (!name) { + return sendError(res, new Error('no query given')) + } + + try { + const response = await fetch( + `https://api.launchpad.net/devel/ubuntu/+source/${encodeURIComponent( + name + )}`, + 'GET' + ) + const availability = response.status !== 200 + send(res, availability) + } catch (err) { + sendError(res, err) + } +} diff --git a/web/public/locales/ja/translation.json b/web/public/locales/ja/translation.json index ff44243..c0b5dc2 100644 --- a/web/public/locales/ja/translation.json +++ b/web/public/locales/ja/translation.json @@ -1,5 +1,5 @@ { - "title": "その名前、もう使われてる?", + "title": "その名前、もう取られてる?", "description": "namæ をつかって、思いついた「名前」が被っていないか調べよう。", "placeholder": "検索", "providers": { @@ -13,7 +13,8 @@ "jsorg": "js.org", "s3": "AWS S3", "twitter": "Twitter", - "slack": "Slack" + "slack": "Slack", + "linux": "Linux" }, "try": "これはどう?" } diff --git a/web/src/App.js b/web/src/App.js index 513d791..07744d0 100644 --- a/web/src/App.js +++ b/web/src/App.js @@ -14,6 +14,7 @@ import PypiCard from './components/cards/PypiCard' import S3Card from './components/cards/S3Card' import CratesioCard from './components/cards/CratesioCard' import RubyGemsCard from './components/cards/RubyGemsCard' +import LinuxCard from './components/cards/LinuxCard' import { EventReporter } from './components/Analytics' import Welcome from './components/Welcome' @@ -100,6 +101,7 @@ export default function App() { + diff --git a/web/src/components/cards/LinuxCard.js b/web/src/components/cards/LinuxCard.js new file mode 100644 index 0000000..1187c52 --- /dev/null +++ b/web/src/components/cards/LinuxCard.js @@ -0,0 +1,34 @@ +import React from 'react' +import { useTranslation } from 'react-i18next' +import { DiUbuntu } from 'react-icons/di' +import { DiDebian } from 'react-icons/di' +import { Card } from '../Cards' +import { DedicatedAvailability } from '../Cards' + +export default function LinuxCard({ name }) { + const { t } = useTranslation() + const lowerCase = name.toLowerCase() + + return ( + + {(name) => ( + <> + } + /> + } + /> + + )} + + ) +}