1
0
mirror of https://github.com/uetchy/namae.git synced 2025-07-01 22:10:04 +09:00

feat: add PyPI

This commit is contained in:
uetchy 2019-07-31 01:43:12 +09:00
parent f9c70c3363
commit 396cd18aa6
4 changed files with 43 additions and 3 deletions

View File

@ -7,6 +7,7 @@ import TwitterCard from './components/TwitterCard'
import NpmCard from './components/NpmCard'
import JsOrgCard from './components/JsOrgCard'
import HomebrewCard from './components/HomebrewCard'
import PypiCard from './components/PypiCard'
import './App.css'
const GlobalStyle = createGlobalStyle`
@ -47,6 +48,7 @@ export default function App() {
<NpmCard name={query} />
<JsOrgCard name={query} />
<HomebrewCard name={query} />
<PypiCard name={query} />
</CardHolder>
</Result>
) : null}

View File

@ -86,7 +86,7 @@ export function ExistenceAvailability({
const response = useFetch(target, null, { metadata: true })
if (response.status !== 404 && response.status !== 200) {
throw new Error(`Homebrew: ${response.statusText}`)
throw new Error(`${name}: ${response.status}`)
}
const availability = response.status === 404
@ -106,8 +106,6 @@ export function ExistenceAvailability({
export function Alternatives({ nameList, children }) {
const [show, setShow] = useState(false)
console.log(children)
function onClick() {
setShow(true)
}

View File

@ -0,0 +1,17 @@
import React from 'react'
import { Card, CardTitle, DedicatedAvailability } from './Card'
import { FaPython } from 'react-icons/fa'
export default function PypiCard({ name }) {
return (
<Card key={name}>
<CardTitle>PyPI</CardTitle>
<DedicatedAvailability
name={name}
provider="pypi"
url={`https://pypi.org/project/${name}`}
icon={<FaPython />}
/>
</Card>
)
}

23
src/services/pypi.js Normal file
View File

@ -0,0 +1,23 @@
const fetch = require('isomorphic-unfetch')
async function getAvailability(name) {
const response = await fetch(
`https://pypi.org/pypi/${encodeURIComponent(name)}/json`
)
return response.status !== 200
}
module.exports = async (req, res) => {
const name = req.query.name
if (!name) {
return res.status(400).json({ error: 'no query given' })
}
try {
const availability = await getAvailability(name)
res.json({ availability })
} catch (err) {
res.status(400).json({ error: err.message })
}
}