From 63bd18b38d254159a622a42697c7962868343bc8 Mon Sep 17 00:00:00 2001 From: Yasuaki Uechi Date: Fri, 5 Mar 2021 17:32:40 +0900 Subject: [PATCH] feat: add archlinux --- api/services/archlinux/[query].ts | 28 ++++++++++++++++++++++ public/locales/en/translation.json | 3 +++ src/components/Welcome.tsx | 21 +++++++++++----- src/components/cards/providers/Linux.tsx | 9 ++++++- src/components/cards/providers/Twitter.tsx | 6 ++--- src/util/i18n.ts | 2 +- 6 files changed, 58 insertions(+), 11 deletions(-) create mode 100644 api/services/archlinux/[query].ts diff --git a/api/services/archlinux/[query].ts b/api/services/archlinux/[query].ts new file mode 100644 index 0000000..aa7759b --- /dev/null +++ b/api/services/archlinux/[query].ts @@ -0,0 +1,28 @@ +import { send, sendError, fetch } from '../../../util/http'; +import { NowRequest, NowResponse } from '@vercel/node'; + +export default async function handler( + req: NowRequest, + res: NowResponse +): Promise { + const { query } = req.query; + + if (!query || typeof query !== 'string') { + return sendError(res, new Error('No query given')); + } + + if (/[^a-zA-Z0-9_-]/.test(query)) { + return sendError(res, new Error('Invalid characters')); + } + + try { + const response = await fetch( + `https://archlinux.org/packages/?sort=&q=${encodeURIComponent(query)}`, + 'GET' + ).then((res) => res.text()); + const availability = !/
= { domains: , github: , gitlab: , + twitter: , + homebrew: , npm: , rust: , pypi: , rubygems: , ocaml: , - homebrew: , - linux: , - twitter: , + archlinux: , + ubuntu: , + debian: , // instagram: , - spectrum: , slack: , + spectrum: , heroku: , now: , netlify: , diff --git a/src/components/cards/providers/Linux.tsx b/src/components/cards/providers/Linux.tsx index 7879464..d280c8f 100644 --- a/src/components/cards/providers/Linux.tsx +++ b/src/components/cards/providers/Linux.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; -import { SiDebian, SiUbuntu } from 'react-icons/si'; +import { SiDebian, SiUbuntu, SiArchlinux } from 'react-icons/si'; import { normalize } from '../../../util/text'; import { Card, DedicatedAvailability, Repeater } from '../core'; @@ -16,6 +16,13 @@ const LinuxCard: React.FC<{ query: string }> = ({ query }) => { {(name) => ( <> + } + /> = ({ query }) => { const names = [ normalizedQuery, `${capitalCase}App`, - `${capitalCase}Team`, - `${lowerCase}hq`, + `${lowerCase}_team`, + `${capitalCase}HQ`, + `hey${lowerCase}`, ]; const moreNames = [ - `hey${lowerCase}`, `${lowerCase}_support`, `${lowerCase}_org`, `${lowerCase}_app`, diff --git a/src/util/i18n.ts b/src/util/i18n.ts index 2b5cd32..910ed46 100644 --- a/src/util/i18n.ts +++ b/src/util/i18n.ts @@ -5,7 +5,7 @@ import XHR from 'i18next-xhr-backend'; import LanguageDetector from 'i18next-browser-languagedetector'; import { initReactI18next } from 'react-i18next'; -const TRANSLATION_VERSION = '4'; +const TRANSLATION_VERSION = '5'; i18n .use(Backend)