이세진

Merge branch 'master' into 'master'

getContribution



See merge request !10
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
24 "mongoose": "^5.12.9", 24 "mongoose": "^5.12.9",
25 "morgan": "^1.10.0", 25 "morgan": "^1.10.0",
26 "multer": "^1.4.2", 26 "multer": "^1.4.2",
27 + "node-fetch": "^2.6.1",
27 "nodemon": "^2.0.7", 28 "nodemon": "^2.0.7",
28 "passport": "^0.4.1", 29 "passport": "^0.4.1",
29 "passport-github2": "^0.1.12", 30 "passport-github2": "^0.1.12",
......
1 import axios from "axios"; 1 import axios from "axios";
2 import passport from "passport"; 2 import passport from "passport";
3 import User from "../models/User"; 3 import User from "../models/User";
4 +import fetch from "node-fetch";
4 5
5 const getQuote = async (req, res) => { 6 const getQuote = async (req, res) => {
6 const url = "http://quotes.stormconsultancy.co.uk/random.json"; 7 const url = "http://quotes.stormconsultancy.co.uk/random.json";
...@@ -74,11 +75,18 @@ export const getUserDetail = async (req, res) => { ...@@ -74,11 +75,18 @@ export const getUserDetail = async (req, res) => {
74 const id = req.params.id; 75 const id = req.params.id;
75 const quote = await getQuote(); 76 const quote = await getQuote();
76 const user = await User.findById(id); 77 const user = await User.findById(id);
78 + const repo = await getRepos();
79 + const totalCon = await getContributions();
77 res.render("userDetail", { 80 res.render("userDetail", {
78 pagetTitle: "User Detail", 81 pagetTitle: "User Detail",
79 quote: quote.quote, 82 quote: quote.quote,
80 author: quote.author, 83 author: quote.author,
81 user, 84 user,
85 + fitstRepoName: repo.fitstRepoName,
86 + firstRepoUrl: repo.firstRepoUrl,
87 + secondRepoName: repo.secondRepoName,
88 + secondRepoUrl: repo.secondRepoUrl,
89 + totalContributions: totalCon,
82 }); 90 });
83 } catch(error){ 91 } catch(error){
84 console.log(error); 92 console.log(error);
...@@ -194,3 +202,36 @@ export const logout = (req, res) => { ...@@ -194,3 +202,36 @@ export const logout = (req, res) => {
194 req.logout(); 202 req.logout();
195 res.redirect("/"); 203 res.redirect("/");
196 }; 204 };
205 +
206 +const getRepos = async(req,res) =>{
207 + const url = "https://api.github.com/users/lsj8706/repos?sort=updated&per_page=2";
208 + const latelyRepos = await axios.get(url).then(function(response){
209 + return response.data;
210 + });
211 + const fitstRepoName = latelyRepos[0].name;
212 + const secondRepoName = latelyRepos[1].name;
213 + const firstRepoUrl = latelyRepos[0].html_url;
214 + const secondRepoUrl = latelyRepos[1].html_url;
215 +
216 + return {
217 + fitstRepoName,
218 + firstRepoUrl,
219 + secondRepoName,
220 + secondRepoUrl,
221 + };
222 +};
223 +
224 +const getContributions = async(req, res) =>{
225 + const token = process.env.GH_SECRET_SH;
226 + const username = 'lsj8706'
227 + const headers = {
228 + 'Authorization': `bearer ${token}`,
229 + };
230 + const body = {
231 + "query": `query {user(login: "${username}") {contributionsCollection {contributionCalendar {totalContributions}}}}`
232 + };
233 + const response = await fetch('https://api.github.com/graphql', { method: "POST", body: JSON.stringify(body), headers: headers });
234 + const totalContributions = await response.json();
235 + const total = totalContributions.data.user.contributionsCollection.contributionCalendar.totalContributions;
236 + return total;
237 +};
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -37,6 +37,9 @@ block content ...@@ -37,6 +37,9 @@ block content
37 hr 37 hr
38 .user-status 38 .user-status
39 .user-status__contributions 39 .user-status__contributions
40 + img(src="http://ghchart.rshah.org/lsj8706" alt="Name Your Github chart")
41 + a(href=Url0, style={color:'grey'})
42 + p=totalContributions
40 img(src=`http://ghchart.rshah.org/${user.githubName}` alt="Name Your Github chart") 43 img(src=`http://ghchart.rshah.org/${user.githubName}` alt="Name Your Github chart")
41 .user-status__character 44 .user-status__character
42 h3 Your step | commit numbers 45 h3 Your step | commit numbers
...@@ -44,6 +47,9 @@ block content ...@@ -44,6 +47,9 @@ block content
44 .user-repositories 47 .user-repositories
45 .user-repo 48 .user-repo
46 h3 REPO 1 49 h3 REPO 1
47 -
48 -
49 -
...\ No newline at end of file ...\ No newline at end of file
50 + a(href=Url0, style={color:'grey'})
51 + p=fitstRepoName+": "+firstRepoUrl
52 + br
53 + h3 REPO 2
54 + a(href=Url0, style={color:'grey'})
55 + p=secondRepoName+": "+secondRepoUrl
......