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) => (
+ <>
+ }
+ />
+ }
+ />
+ >
+ )}
+
+ )
+}