1
0
mirror of https://github.com/uetchy/namae.git synced 2025-03-16 20:20:38 +09:00

feat: crates.io

This commit is contained in:
uetchy 2019-07-31 03:17:56 +09:00
parent 28530ce90a
commit 71e90c90d7
3 changed files with 42 additions and 0 deletions

View File

@ -11,6 +11,7 @@ import NpmCard from './components/NpmCard'
import JsOrgCard from './components/JsOrgCard'
import PypiCard from './components/PypiCard'
import S3Card from './components/S3Card'
import CratesioCard from './components/CratesioCard'
import './App.css'
const GlobalStyle = createGlobalStyle`
@ -54,6 +55,7 @@ export default function App() {
<NpmCard name={query} />
<JsOrgCard name={query} />
<PypiCard name={query} />
<CratesioCard name={query} />
<S3Card name={query} />
</CardHolder>
</Result>

View File

@ -0,0 +1,17 @@
import React from 'react'
import { DiRust } from 'react-icons/di'
import { Card, CardTitle, DedicatedAvailability } from './Card'
export default function CratesioCard({ name }) {
return (
<Card key={name}>
<CardTitle>crates.io (Rust)</CardTitle>
<DedicatedAvailability
name={name}
provider="cratesio"
url={`https://crates.io/crates/${name}`}
icon={<DiRust />}
/>
</Card>
)
}

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

@ -0,0 +1,23 @@
const fetch = require('isomorphic-unfetch')
async function getAvailability(name) {
const response = await fetch(
`https://crates.io/api/v1/crates/${encodeURIComponent(name)}`
)
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 })
}
}