-
-
Notifications
You must be signed in to change notification settings - Fork 181
Expand file tree
/
Copy pathquotesController.js
More file actions
97 lines (82 loc) · 2.43 KB
/
Copy pathquotesController.js
File metadata and controls
97 lines (82 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
const themes = require("../../themes/themes");
const animations = require("../../animations/animation");
const layouts = require("../../layouts/layout");
const quoteService = require("../services/quotesService");
const fonts = require("../../fonts/fonts");
const quoteController = async (req, res, next) => {
try {
let theme = themes[req.query.theme]
? themes[req.query.theme]
: themes["default"];
const fontColor = req.query.fontColor;
if (fontColor) {
theme.quote_color = fontColor;
}
const bgColor = req.query.bgColor;
const bgSource = req.query.bgSource || "";
if (bgSource === "unsplash") {
theme.bg_color = "transparent";
} else if (bgColor) {
theme.bg_color = bgColor;
}
let borderColor = req.query.borderColor || "rgba(0, 0, 0, 0.2)";
let animation = animations[req.query.animation]
? animations[req.query.animation]
: animations["default"];
let layout = layouts[req.query.layout]
? layouts[req.query.layout]
: layouts["default"];
let quotesUrl = req.query.quotesUrl || "";
let quoteCategory = req.query.quoteCategory || "";
let font = fonts[req.query.font] ? fonts[req.query.font] : fonts["default"];
let quoteType = req.query.quoteType || "";
let unsplashQuery = req.query.unsplashQuery || "";
let quoteObject = {
theme,
animation,
layout,
quotesUrl,
quoteCategory,
font,
quoteType,
borderColor,
bgSource,
unsplashQuery,
};
let svgResponse = await quoteService.getQuote(quoteObject);
res.setHeader("Content-Type", "image/svg+xml");
res.header(
"Cache-Control",
"no-cache,max-age=0,no-store,s-maxage=0,proxy-revalidate"
);
res.header("Pragma", "no-cache");
res.header("Expires", "-1");
res.send(svgResponse);
} catch (error) {
console.error(error);
res.status(500).send({
name: error.name,
message: error.message,
});
}
};
const imageController = async (req, res, next) => {
try {
const responseURL = await quoteService.getUnsplashImage(
req.query.unsplashQuery
);
const escapeHtml = require("escape-html");
const safeUrl = escapeHtml(responseURL);
res.send({ url: safeUrl });
} catch (error) {
console.error(error);
res.status(500).send({
name: error.name,
message: error.message,
});
}
};
module.exports = {
quoteController,
imageController,
};