Lee SeJin

profile photo update

...@@ -11,6 +11,7 @@ KHU-Hub repo: [khuhub.khu.ac.kr/2018102216/dev-profile](https://khuhub.khu.ac.kr ...@@ -11,6 +11,7 @@ KHU-Hub repo: [khuhub.khu.ac.kr/2018102216/dev-profile](https://khuhub.khu.ac.kr
11 - [x] random quotes **_for developers_** to motivate you :sparkles: 11 - [x] random quotes **_for developers_** to motivate you :sparkles:
12 - [ ] the amount of commits you've done on [GitHub](https://github.com/) at a glance 12 - [ ] the amount of commits you've done on [GitHub](https://github.com/) at a glance
13 - [ ] your most-contributed project on GitHub 13 - [ ] your most-contributed project on GitHub
14 +- [x] today's trending repositories on GitHub
14 <br> 15 <br>
15 16
16 ### Additional Features 17 ### Additional Features
......
...@@ -2,26 +2,83 @@ import axios from "axios"; ...@@ -2,26 +2,83 @@ 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 4
5 -const getQuote = async (req,res) =>{ 5 +const getQuote = async (req, res) => {
6 const url = "http://quotes.stormconsultancy.co.uk/random.json"; 6 const url = "http://quotes.stormconsultancy.co.uk/random.json";
7 - const quoteData = await axios.get(url).then(function(response){ 7 + const quoteData = await axios.get(url).then(function (response) {
8 return response.data; 8 return response.data;
9 }); 9 });
10 const quote = quoteData.quote; 10 const quote = quoteData.quote;
11 const author = quoteData.author; 11 const author = quoteData.author;
12 - return {quote,author}; 12 + return { quote, author };
13 -} 13 +};
14 14
15 -export const handleHome = async (req,res)=>{ 15 +const gitTrend = async (req, res) => {
16 - const quote = await getQuote(); 16 + const url =
17 - res.render("home",{pageTitle:"Home", quote:quote.quote, author:quote.author}); 17 + "https://api.trending-github.com/github/repositories?period=daily";
18 -} 18 + const trendData = await axios.get(url).then(function (response) {
19 + return response.data;
20 + });
21 + const name0 = trendData[0].name;
22 + const description0 = trendData[0].description;
23 + const Url0 = trendData[0].url;
24 + const stars0 = trendData[0].stars;
25 + const name1 = trendData[1].name;
26 + const description1 = trendData[1].description;
27 + const Url1 = trendData[1].url;
28 + const stars1 = trendData[1].stars;
29 + const name2 = trendData[2].name;
30 + const description2 = trendData[2].description;
31 + const Url2 = trendData[2].url;
32 + const stars2 = trendData[2].stars;
33 +
34 + return {
35 + name0,
36 + description0,
37 + Url0,
38 + stars0,
39 + name1,
40 + description1,
41 + Url1,
42 + stars1,
43 + name2,
44 + description2,
45 + Url2,
46 + stars2,
47 + };
48 +};
19 49
20 50
21 -export const getUserDetail = async (req,res) =>{ 51 +
52 +export const handleHome = async (req, res) => {
22 const quote = await getQuote(); 53 const quote = await getQuote();
23 - res.render("userDetail",{pagetTitle:"User Detail", quote:quote.quote, author:quote.author}) 54 + const trend = await gitTrend();
24 -} 55 + res.render("home", {
56 + pageTitle: "Home",
57 + quote: quote.quote,
58 + author: quote.author,
59 + name0: trend.name0,
60 + description0: trend.description0,
61 + Url0: trend.Url0,
62 + stars0: trend.stars0,
63 + name1: trend.name1,
64 + description1: trend.description1,
65 + Url1: trend.Url1,
66 + stars1: trend.stars1,
67 + name2: trend.name2,
68 + description2: trend.description2,
69 + Url2: trend.Url2,
70 + stars2: trend.stars2,
71 + });
72 +};
73 +
74 +export const getUserDetail = async (req, res) => {
75 + const quote = await getQuote();
76 + res.render("userDetail", {
77 + pagetTitle: "User Detail",
78 + quote: quote.quote,
79 + author: quote.author,
80 + });
81 +};
25 82
26 export const getEditProfile = async (req,res)=> { 83 export const getEditProfile = async (req,res)=> {
27 const{ 84 const{
...@@ -67,23 +124,32 @@ export const postEditProfile = async (req,res) =>{ ...@@ -67,23 +124,32 @@ export const postEditProfile = async (req,res) =>{
67 } 124 }
68 }; 125 };
69 126
70 - 127 +export const getJoin = (req, res) => {
71 -export const getJoin = (req,res)=>{ 128 + res.render("join", { pageTitle: "Join" });
72 - res.render("join",{pageTitle: "Join"});
73 }; 129 };
74 130
75 -export const getLogin = (req,res)=>{ 131 +export const getLogin = (req, res) => {
76 - res.render("login",{pageTitle: "Login"}); 132 + res.render("login", { pageTitle: "Login" });
77 }; 133 };
78 134
79 -export const handleUsers = (req,res)=>{ 135 +export const handleUsers = (req, res) => {
80 - res.render("users",{pageTitle:"Users"}); 136 + res.render("users", { pageTitle: "Users" });
81 -} 137 +};
82 138
83 -export const githubLogin = passport.authenticate("github", {scope: [ "user:email" ]}); 139 +export const githubLogin = passport.authenticate("github", {
140 + scope: ["user:email"],
141 +});
84 142
85 -export const githubLoginCallback = async (_, __, profile, done) =>{ 143 +export const githubLoginCallback = async (_, __, profile, done) => {
86 - const {_json: {id:githubId, login:githubName, avatar_url:avatarUrl, name, email}} = profile; 144 + const {
145 + _json: {
146 + id: githubId,
147 + login: githubName,
148 + avatar_url: avatarUrl,
149 + name,
150 + email,
151 + },
152 + } = profile;
87 153
88 try{ 154 try{
89 const user = await User.findOne({githubId}); 155 const user = await User.findOne({githubId});
...@@ -107,12 +173,12 @@ export const githubLoginCallback = async (_, __, profile, done) =>{ ...@@ -107,12 +173,12 @@ export const githubLoginCallback = async (_, __, profile, done) =>{
107 } 173 }
108 }; 174 };
109 175
110 -export const postGithubLogin = (req,res)=>{ 176 +export const postGithubLogin = (req, res) => {
111 const userId = req.user.id; 177 const userId = req.user.id;
112 res.redirect(`/users/${userId}`); 178 res.redirect(`/users/${userId}`);
113 -} 179 +};
114 180
115 -export const logout = (req,res)=>{ 181 +export const logout = (req, res) => {
116 req.logout(); 182 req.logout();
117 res.redirect("/"); 183 res.redirect("/");
118 -}
...\ No newline at end of file ...\ No newline at end of file
184 +};
......
...@@ -2,15 +2,13 @@ import express from "express"; ...@@ -2,15 +2,13 @@ import express from "express";
2 import { getEditProfile, getUserDetail, handleUsers, postEditProfile } from "../controllers/userController"; 2 import { getEditProfile, getUserDetail, handleUsers, postEditProfile } from "../controllers/userController";
3 import { onlyPrivate, uploadFiles } from "../middlewares"; 3 import { onlyPrivate, uploadFiles } from "../middlewares";
4 4
5 -
6 const userRouter = express.Router(); 5 const userRouter = express.Router();
7 6
8 -userRouter.get("/",handleUsers); 7 +userRouter.get("/", handleUsers);
9 8
10 userRouter.get("/edit-profile", onlyPrivate, getEditProfile); 9 userRouter.get("/edit-profile", onlyPrivate, getEditProfile);
11 userRouter.post("/edit-profile", onlyPrivate, uploadFiles.single("photo"),postEditProfile); 10 userRouter.post("/edit-profile", onlyPrivate, uploadFiles.single("photo"),postEditProfile);
12 11
13 userRouter.get("/:id", getUserDetail); 12 userRouter.get("/:id", getUserDetail);
14 13
15 -
16 export default userRouter; 14 export default userRouter;
......
...@@ -15,3 +15,14 @@ block content ...@@ -15,3 +15,14 @@ block content
15 a(href="/login") Login 15 a(href="/login") Login
16 else 16 else
17 a(href=`/users/${loggedUser._id}`) My profile 17 a(href=`/users/${loggedUser._id}`) My profile
18 +
19 + .gotoTrend(style="border: 1px solid blue;")
20 + p(style='color: orange;') Trending Repositories:
21 + br
22 + a(href=Url0, style={color:'grey'})
23 + p=name0+": "+description0+" - "+stars0+" stars"
24 + a(href=Url1, style={color:'grey'})
25 + p=name1+": "+description1+" - "+stars1+" stars"
26 + a(href=Url2, style={color:'grey'})
27 + p=name2+": "+description2+" - "+stars2+" stars"
28 +
......