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:
parent
f9c70c3363
commit
396cd18aa6
@ -7,6 +7,7 @@ import TwitterCard from './components/TwitterCard'
|
|||||||
import NpmCard from './components/NpmCard'
|
import NpmCard from './components/NpmCard'
|
||||||
import JsOrgCard from './components/JsOrgCard'
|
import JsOrgCard from './components/JsOrgCard'
|
||||||
import HomebrewCard from './components/HomebrewCard'
|
import HomebrewCard from './components/HomebrewCard'
|
||||||
|
import PypiCard from './components/PypiCard'
|
||||||
import './App.css'
|
import './App.css'
|
||||||
|
|
||||||
const GlobalStyle = createGlobalStyle`
|
const GlobalStyle = createGlobalStyle`
|
||||||
@ -47,6 +48,7 @@ export default function App() {
|
|||||||
<NpmCard name={query} />
|
<NpmCard name={query} />
|
||||||
<JsOrgCard name={query} />
|
<JsOrgCard name={query} />
|
||||||
<HomebrewCard name={query} />
|
<HomebrewCard name={query} />
|
||||||
|
<PypiCard name={query} />
|
||||||
</CardHolder>
|
</CardHolder>
|
||||||
</Result>
|
</Result>
|
||||||
) : null}
|
) : null}
|
||||||
|
@ -86,7 +86,7 @@ export function ExistenceAvailability({
|
|||||||
const response = useFetch(target, null, { metadata: true })
|
const response = useFetch(target, null, { metadata: true })
|
||||||
|
|
||||||
if (response.status !== 404 && response.status !== 200) {
|
if (response.status !== 404 && response.status !== 200) {
|
||||||
throw new Error(`Homebrew: ${response.statusText}`)
|
throw new Error(`${name}: ${response.status}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
const availability = response.status === 404
|
const availability = response.status === 404
|
||||||
@ -106,8 +106,6 @@ export function ExistenceAvailability({
|
|||||||
export function Alternatives({ nameList, children }) {
|
export function Alternatives({ nameList, children }) {
|
||||||
const [show, setShow] = useState(false)
|
const [show, setShow] = useState(false)
|
||||||
|
|
||||||
console.log(children)
|
|
||||||
|
|
||||||
function onClick() {
|
function onClick() {
|
||||||
setShow(true)
|
setShow(true)
|
||||||
}
|
}
|
||||||
|
17
src/components/PypiCard.js
Normal file
17
src/components/PypiCard.js
Normal 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
23
src/services/pypi.js
Normal 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 })
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user