
* Display username in repo card (optional) * fix: show_owner boolean flag & used nameWithOwner from gql api
71 lines
1.5 KiB
JavaScript
71 lines
1.5 KiB
JavaScript
const { request } = require("./utils");
|
|
const retryer = require("./retryer");
|
|
|
|
const fetcher = (variables, token) => {
|
|
return request(
|
|
{
|
|
query: `
|
|
fragment RepoInfo on Repository {
|
|
name
|
|
nameWithOwner
|
|
stargazers {
|
|
totalCount
|
|
}
|
|
description
|
|
primaryLanguage {
|
|
color
|
|
id
|
|
name
|
|
}
|
|
forkCount
|
|
}
|
|
query getRepo($login: String!, $repo: String!) {
|
|
user(login: $login) {
|
|
repository(name: $repo) {
|
|
...RepoInfo
|
|
}
|
|
}
|
|
organization(login: $login) {
|
|
repository(name: $repo) {
|
|
...RepoInfo
|
|
}
|
|
}
|
|
}
|
|
`,
|
|
variables,
|
|
},
|
|
{
|
|
Authorization: `bearer ${token}`,
|
|
}
|
|
);
|
|
};
|
|
|
|
async function fetchRepo(username, reponame) {
|
|
if (!username || !reponame) {
|
|
throw new Error("Invalid username or reponame");
|
|
}
|
|
|
|
let res = await retryer(fetcher, { login: username, repo: reponame });
|
|
|
|
const data = res.data.data;
|
|
|
|
if (!data.user && !data.organization) {
|
|
throw new Error("Not found");
|
|
}
|
|
|
|
if (data.organization === null && data.user) {
|
|
if (!data.user.repository) {
|
|
throw new Error("User Repository Not found");
|
|
}
|
|
return data.user.repository;
|
|
}
|
|
|
|
if (data.user === null && data.organization) {
|
|
if (!data.organization.repository) {
|
|
throw new Error("Organization Repository Not found");
|
|
}
|
|
return data.organization.repository;
|
|
}
|
|
}
|
|
|
|
module.exports = fetchRepo;
|