From 41e4424c8fad4867a84d617f139497688315759d Mon Sep 17 00:00:00 2001 From: devStorm <59678453+developStorm@users.noreply.github.com> Date: Sun, 6 Jun 2021 23:43:12 -0700 Subject: [PATCH] parameterize affiliation --- api/top-langs.js | 2 ++ src/fetchers/top-languages-fetcher.js | 11 ++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/api/top-langs.js b/api/top-langs.js index 52ac593a..833396f9 100644 --- a/api/top-langs.js +++ b/api/top-langs.js @@ -30,6 +30,7 @@ module.exports = async (req, res) => { locale, border_radius, border_color, + role, } = req.query; res.setHeader("Content-Type", "image/svg+xml"); @@ -45,6 +46,7 @@ module.exports = async (req, res) => { const topLangs = await fetchTopLanguages( username, parseArray(exclude_repo), + parseArray(role).filter(value => ['OWNER', 'ORGANIZATION_MEMBER', 'COLLABORATOR'].includes(value)), parseArray(hide), ); diff --git a/src/fetchers/top-languages-fetcher.js b/src/fetchers/top-languages-fetcher.js index 0fc6fc69..6d5289b1 100644 --- a/src/fetchers/top-languages-fetcher.js +++ b/src/fetchers/top-languages-fetcher.js @@ -3,13 +3,18 @@ const retryer = require("../common/retryer"); require("dotenv").config(); const fetcher = (variables, token) => { + let ownerAffiliations = ["OWNER"]; + if (variables.ownerAffiliations.length > 0) { + ownerAffiliations = variables.ownerAffiliations; + } + delete variables.ownerAffiliations; return request( { query: ` query userInfo($login: String!) { user(login: $login) { # fetch only owner repos & not forks - repositories(ownerAffiliations: [OWNER, ORGANIZATION_MEMBER, COLLABORATOR], isFork: false, first: 100) { + repositories(ownerAffiliations: [${ownerAffiliations.join(', ')}], isFork: false, first: 100) { nodes { name languages(first: 10, orderBy: {field: SIZE, direction: DESC}) { @@ -34,10 +39,10 @@ const fetcher = (variables, token) => { ); }; -async function fetchTopLanguages(username, exclude_repo = []) { +async function fetchTopLanguages(username, exclude_repo = [], ownerAffiliations) { if (!username) throw Error("Invalid username"); - const res = await retryer(fetcher, { login: username }); + const res = await retryer(fetcher, { login: username, ownerAffiliations }); if (res.data.errors) { logger.error(res.data.errors);