This commit is contained in:
QkoSad
2023-08-08 16:02:54 +03:00
commit 0a7a469d56
315 changed files with 426907 additions and 0 deletions
+12
View File
@@ -0,0 +1,12 @@
require("dotenv").config();
const MONGODB_URI =
process.env.NODE_ENV === "test"
? process.env.TEST_MONGODB_URI
: process.env.MONGODB_URI;
module.exports = {
SECRET:process.env.SECRET,
MONGODB_URI,
PORT: process.env.PORT,
};
+30
View File
@@ -0,0 +1,30 @@
const dummy = (blogs) => {
return 1;
};
const totalLikes = (blogs) => {
return blogs.reduce((acc, cur) => acc + cur.likes, 0);
};
const favoriteBlog = (blogs) => {
let result = blogs.sort((a, b) => a.score - b.score);
return result[0].likes;
};
const mostLikes = (blogs) => {
let authors = new Map();
blogs.forEach((el) => {
if (authors.has(el.author))
authors.set(el.author, authors.get(el.author) + el.likes);
else authors.set(el.author, el.likes);
});
return Math.max(...authors.values())
};
const mostBlogs = (blogs) => {
let authors = new Map();
blogs.forEach((el) => {
if (authors.has(el.author))
authors.set(el.author, authors.get(el.author) + 1);
else authors.set(el.author, 1);
});
return Math.max(...authors.values())
};
module.exports = { dummy, mostLikes, mostBlogs, totalLikes, favoriteBlog };
+12
View File
@@ -0,0 +1,12 @@
const info = (...params) => {
console.log(...params);
};
const error = (...params) => {
console.error(...params);
};
module.exports = {
info,
error,
};
+22
View File
@@ -0,0 +1,22 @@
const User = require("../models/user");
const jwt = require("jsonwebtoken");
const config = require("./config");
const tokenExtractor = (req, res, next) => {
const authorization = req.get("authorization");
if (authorization && authorization.startsWith("Bearer "))
req.token = authorization.replace("Bearer ", "");
next();
};
const userExtractor = async (req, res, next) => {
const decodedToken = jwt.verify(req.token, config.SECRET);
if (!decodedToken.id) return res.status(401).json({ error: "invalid token" });
const user = await User.findById(decodedToken.id);
console.log('user from the middleware',user)
req.user = user;
next();
};
module.exports = { tokenExtractor, userExtractor };