Skip to content

Commit

Permalink
Merge pull request anuraghazra#29 from omidnikrah/master
Browse files Browse the repository at this point in the history
refactor: added request helper function to reduce code duplication
  • Loading branch information
anuraghazra authored Jul 12, 2020
2 parents 5f4ada0 + 7a7ad71 commit 3e9ce48
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 69 deletions.
61 changes: 27 additions & 34 deletions src/fetchRepo.js
Original file line number Diff line number Diff line change
@@ -1,48 +1,41 @@
const axios = require("axios");
const { request } = require("./utils");

async function fetchRepo(username, reponame) {
if (!username || !reponame) {
throw new Error("Invalid username or reponame");
}

const res = await axios({
url: "https://api.github.com/graphql",
method: "post",
headers: {
Authorization: `bearer ${process.env.GITHUB_TOKEN}`,
},
data: {
query: `
fragment RepoInfo on Repository {
const res = await request({
query: `
fragment RepoInfo on Repository {
name
stargazers {
totalCount
}
description
primaryLanguage {
color
id
name
stargazers {
totalCount
}
description
primaryLanguage {
color
id
name
}
forkCount
}
query getRepo($login: String!, $repo: String!) {
user(login: $login) {
repository(name: $repo) {
...RepoInfo
}
forkCount
}
query getRepo($login: String!, $repo: String!) {
user(login: $login) {
repository(name: $repo) {
...RepoInfo
}
organization(login: $login) {
repository(name: $repo) {
...RepoInfo
}
}
organization(login: $login) {
repository(name: $repo) {
...RepoInfo
}
}
`,
variables: {
login: username,
repo: reponame,
},
}
`,
variables: {
login: username,
repo: reponame,
},
});

Expand Down
59 changes: 25 additions & 34 deletions src/fetchStats.js
Original file line number Diff line number Diff line change
@@ -1,46 +1,37 @@
const axios = require("axios");
const { request } = require("./utils");
require("dotenv").config();

async function fetchStats(username) {
if (!username) throw Error("Invalid username");

const res = await axios({
url: "https://api.github.com/graphql",
method: "post",
headers: {
Authorization: `bearer ${process.env.GITHUB_TOKEN}`,
},
data: {
query: `
query userInfo($login: String!) {
user(login: $login) {
name
repositoriesContributedTo(first: 100, contributionTypes: [COMMIT, ISSUE, PULL_REQUEST, REPOSITORY]) {
totalCount
}
contributionsCollection {
totalCommitContributions
}
pullRequests(first: 100) {
totalCount
}
issues(first: 100) {
totalCount
}
repositories(first: 100) {
nodes {
stargazers {
totalCount
}
const res = await request({
query: `
query userInfo($login: String!) {
user(login: $login) {
name
repositoriesContributedTo(first: 100, contributionTypes: [COMMIT, ISSUE, PULL_REQUEST, REPOSITORY]) {
totalCount
}
contributionsCollection {
totalCommitContributions
}
pullRequests(first: 100) {
totalCount
}
issues(first: 100) {
totalCount
}
repositories(first: 100) {
nodes {
stargazers {
totalCount
}
}
}
}
`,
variables: {
login: username,
},
},
}
`,
variables: { login: username }
});

const stats = {
Expand Down
19 changes: 18 additions & 1 deletion src/utils.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
const axios = require("axios");

const renderError = (message) => {
return `
<svg width="495" height="100" viewBox="0 0 495 100" fill="none" xmlns="http://www.w3.org/2000/svg">
Expand Down Expand Up @@ -31,4 +33,19 @@ function isValidHexColor(hexColor) {
).test(hexColor);
}

module.exports = { renderError, kFormatter, encodeHTML, isValidHexColor };
function request(data) {
return new Promise((resolve, reject) => {
axios({
url: "https://api.github.com/graphql",
method: "post",
headers: {
Authorization: `bearer ${process.env.GITHUB_TOKEN}`,
},
data,
})
.then((response) => resolve(response))
.catch((error) => reject(error));
});
}

module.exports = { renderError, kFormatter, encodeHTML, isValidHexColor, request };

0 comments on commit 3e9ce48

Please sign in to comment.