mirror of
https://github.com/r-freeman/portfolio.git
synced 2024-11-14 11:45:41 +00:00
47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
|
import fetch from 'node-fetch'
|
||
|
import type {Repo} from '@/types'
|
||
|
|
||
|
const GITHUB_ACCESS_TOKEN = process.env.GITHUB_ACCESS_TOKEN
|
||
|
const GITHUB_GRAPHQL = "https://api.github.com/graphql"
|
||
|
|
||
|
type Response = {
|
||
|
data: {
|
||
|
user: {
|
||
|
pinnedItems: {
|
||
|
nodes: Repo[]
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export async function getPinnedRepos() {
|
||
|
const response = await fetch(GITHUB_GRAPHQL, {
|
||
|
method: 'POST',
|
||
|
headers: {
|
||
|
'Content-Type': 'application/json',
|
||
|
'Authorization': `Bearer ${GITHUB_ACCESS_TOKEN}`
|
||
|
},
|
||
|
body: JSON.stringify({
|
||
|
query: `{
|
||
|
user(login: "r-freeman") {
|
||
|
pinnedItems(first: 6, types: REPOSITORY) {
|
||
|
nodes {
|
||
|
... on Repository {
|
||
|
name
|
||
|
description
|
||
|
url
|
||
|
stargazerCount
|
||
|
primaryLanguage {
|
||
|
name
|
||
|
color
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}`
|
||
|
})
|
||
|
}).then(r => r.json()) as Response
|
||
|
|
||
|
return response.data.user.pinnedItems.nodes
|
||
|
}
|