From b8ce81b276f8be86b48d22873d6cd6ad87351d60 Mon Sep 17 00:00:00 2001 From: Yasuaki Uechi Date: Thu, 11 Jun 2020 21:59:58 +0900 Subject: [PATCH] fix: use dedicated api for twittter --- api/services/twitter.ts | 27 +++++++++++++++++++ .../components/cards/providers/Twitter.tsx | 19 +++++++------ 2 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 api/services/twitter.ts diff --git a/api/services/twitter.ts b/api/services/twitter.ts new file mode 100644 index 0000000..635e1c1 --- /dev/null +++ b/api/services/twitter.ts @@ -0,0 +1,27 @@ +import {send, sendError, fetch, NowResponse, NowRequest} from '../util/http'; + +export default async function handler( + req: NowRequest, + res: NowResponse, +): Promise { + const {query} = req.query; + + if (!query) { + 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://api.twitter.com/i/users/username_available.json?username=${query}`, + 'GET', + ).then((res) => res.json()); + const availability = response.valid; + send(res, {availability}); + } catch (err) { + sendError(res, err); + } +} diff --git a/web/src/components/cards/providers/Twitter.tsx b/web/src/components/cards/providers/Twitter.tsx index 888cba4..a55f4a1 100644 --- a/web/src/components/cards/providers/Twitter.tsx +++ b/web/src/components/cards/providers/Twitter.tsx @@ -7,16 +7,20 @@ import {Card, Repeater, DedicatedAvailability} from '../core'; const TwitterCard: React.FC<{query: string}> = ({query}) => { const {t} = useTranslation(); - const lowerCase = query.toLowerCase(); - const capitalCase = capitalize(query); - const names = [query, `${capitalCase}App`, `${lowerCase}hq`]; + const sanitizedQuery = query + .replace(/[^0-9a-zA-Z_-]/g, '') + .replace(/-/g, '_'); + const lowerCase = sanitizedQuery.toLowerCase(); + const capitalCase = capitalize(sanitizedQuery); + + const names = [sanitizedQuery, `${capitalCase}App`, `${lowerCase}hq`]; const moreNames = [ `hey${lowerCase}`, `${capitalCase}Team`, - `${lowerCase}-support`, + `${lowerCase}_support`, `${lowerCase}_org`, - `${lowerCase}-app`, + `${lowerCase}_app`, `${capitalCase}JS`, ]; @@ -26,11 +30,10 @@ const TwitterCard: React.FC<{query: string}> = ({query}) => { {(name) => ( } /> )}