Changed from Github to Codestats

Signed-off-by: Florian Bouillon <florian.bouillon@delta-wings.net>
This commit is contained in:
Florian Bouillon 2020-09-08 12:14:07 +02:00
parent 9471072491
commit 1b9e41ba1b
5 changed files with 1745 additions and 46 deletions

View file

@ -21,7 +21,8 @@
"css-to-object": "^1.1.0",
"husky": "^4.2.5",
"jest": "^26.1.0",
"parse-diff": "^0.7.0"
"parse-diff": "^0.7.0",
"vercel": "^20.1.0"
},
"dependencies": {
"dotenv": "^8.2.0",

View file

@ -80,13 +80,20 @@ function fallbackColor(color, fallbackColor) {
function request(data, headers) {
return axios({
url: "https://codestats.net/api/users/" + data.username,
method: "get",
url: "https://api.github.com/graphql",
method: "post",
headers,
data,
});
}
function codeStatsRequest(data) {
return axios({
url: "https://codestats.net/api/users/" + data.login,
method: "get",
});
}
/**
*
* @param {String[]} items
@ -194,6 +201,7 @@ module.exports = {
encodeHTML,
isValidHexColor,
request,
codeStatsRequest,
parseArray,
parseBoolean,
fallbackColor,

View file

@ -1,35 +1,11 @@
const { request, logger } = require("../common/utils");
const { codeStatsRequest, logger } = require("../common/utils");
const retryer = require("../common/retryer");
const languageColor = require('../../themes/language-bar')
require("dotenv").config();
const fetcher = (variables, token) => {
return request(
{
query: `
query userInfo($login: String!) {
user(login: $login) {
# fetch only owner repos & not forks
repositories(ownerAffiliations: OWNER, isFork: false, first: 100) {
nodes {
languages(first: 10, orderBy: {field: SIZE, direction: DESC}) {
edges {
size
node {
color
name
}
}
}
}
}
}
}
`,
variables,
},
{
Authorization: `bearer ${token}`,
}
const fetcher = (variables) => {
return codeStatsRequest(
variables
);
};
@ -43,30 +19,38 @@ async function fetchTopLanguages(username) {
throw Error(res.data.errors[0].message || "Could not fetch user");
}
let repoNodes = res.data.data.user.repositories.nodes;
let repoNodes = res.data.languages;
repoNodes = repoNodes
.filter((node) => {
return node.languages.edges.length > 0;
// Remap nodes
const list = []
for (const key in repoNodes) {
const item = repoNodes[key]
list.push({
name: key,
xp: item.xps
})
// flatten the list of language nodes
.reduce((acc, curr) => curr.languages.edges.concat(acc), [])
.sort((a, b) => b.size - a.size)
}
repoNodes = list
.filter((node) => {
return node.xp > 0;
})
.sort((a, b) => b.xp - a.xp)
.reduce((acc, prev) => {
// get the size of the language (bytes)
let langSize = prev.size;
let langSize = prev.xp;
// if we already have the language in the accumulator
// & the current language name is same as previous name
// add the size to the language size.
if (acc[prev.node.name] && prev.node.name === acc[prev.node.name].name) {
langSize = prev.size + acc[prev.node.name].size;
if (acc[prev.name] && prev.name === acc[prev.name].name) {
langSize = prev.size + acc[prev.name].size;
}
return {
...acc,
[prev.node.name]: {
name: prev.node.name,
color: prev.node.color,
[prev.name]: {
name: prev.name,
color: languageColor[prev.name] ? languageColor[prev.name].color : '#000000',
size: langSize,
},
};

1706
themes/language-bar.js Normal file

File diff suppressed because it is too large Load diff

View file

@ -2,7 +2,7 @@
"redirects": [
{
"source": "/",
"destination": "https://github.com/anuraghazra/github-readme-stats"
"destination": "https://github.com/aviortheking/github-readme-stats"
}
]
}