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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147 |
1×
1×
1×
1×
1×
1×
1×
1×
1×
2×
1×
1×
11×
11×
9×
9×
2×
7×
7×
2×
1×
3×
3×
1×
1×
2×
2×
2×
2×
1×
1×
1×
1×
1×
4×
3×
3×
3×
3×
3×
3×
3×
2×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1×
1× | 'use strict';
var _express = require('express');
var _express2 = _interopRequireDefault(_express);
var _jsonpatch = require('jsonpatch');
var _path = require('path');
var _fs = require('fs');
var _resize = require('../imgutils/resize.js');
var _jsonwebtoken = require('jsonwebtoken');
var _request = require('request');
var _request2 = _interopRequireDefault(_request);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var router = _express2.default.Router();
/**
* It authenticate json_patching and thumbnail_generation api
* @name Api Authentications
* @param {object} req contains headers
* @param {object} res contains the decoded username and password
* @param {function} next
*/
// ###################################################################################
// API VALIDATIONS
// ###################################################################################
router.use('/', function (req, res, next) {
// decode token
var token = req.headers.authorization;
if (token) {
// verifies secret and checks exp
(0, _jsonwebtoken.verify)(token, 'anil', function (err, decoded) {
if (err) {
return res.status(403).send({ message: 'Not authenticated' });
} else {
// if everything is good, save to request for use in other routes
req.decoded = decoded;
next();
}
});
} else {
return res.status(403).send({
success: false,
message: 'No token provided.'
});
}
});
// ################################################################################
// API FOR JSON_PATCHING
// ################################################################################
/**
* Api to apply json patch on json object and Update json
* @name Json-Patching
* @param {object} req contains jsonObject and Patch
* @param {object} res give patchedDocument op json
* @param {function} next
*/
router.post('/patch', function (req, res, next) {
Iif (typeof req.body.jsonObject === 'undefined') {
res.statusCode = 400;
res.json({ 'message': 'missing jsonObject' });
} else if (typeof req.body.Patch === 'undefined') {
res.statusCode = 400;
res.json({ 'message': 'missing patch operations' });
} else {
var jsonObject = req.body.jsonObject;
var operation = req.body.Patch;
try {
var patchDocument = (0, _jsonpatch.apply_patch)(jsonObject, operation);
res.statusCode = 200;
res.json({ patch: patchDocument });
} catch (e) {
res.statusCode = 400;
res.json({ 'message': 'wrong patch operations' });
}
}
});
// ####################################################################################
// API FOR THUMBNAIL_GENERATIONS
// ####################################################################################
/**
* Create thumbnail of image
* @name Thumbnail-Generation
* @param {object} req contains the url of image
* @param {object} res gives the thumnail image of 50*50 size
* @param {function} next
*/
//
router.post('/thumbnail', function (req, res, next) {
if (typeof req.query.imageUrl !== 'undefined') {
var imageUrl = req.query.imageUrl;
_request2.default.head(imageUrl, function (err, response, body) {
Iif (err) {
next(err);
} else {
var contentType = response.headers['content-type'].substring(0, 5);
var imgFormat = response.headers['content-type'].substring(6);
var date = response.headers['date'].split(' ').join('_');
if (response.statusCode === 200 && contentType === 'image') {
if (response.headers['content-length'] <= 10 * 1024 * 1024) {
var originalLocation = (0, _path.resolve)((0, _path.join)(baseDirectory, 'img')) + '/original_' + date + '.' + imgFormat;
var thumbnailLocation = (0, _path.resolve)((0, _path.join)(baseDirectory, 'img')) + '/thumbnail_' + date + '.' + imgFormat;
var stream = _request2.default.get(imageUrl).pipe((0, _fs.createWriteStream)(originalLocation));
stream.on('finish', function () {
(0, _resize.thumbnailSize)(originalLocation, thumbnailLocation, function (err, out) {
Iif (err) {
next(err);
} else {
res.writeHead(200, { 'content-type': response.headers['content-type'], 'Connection': 'close' });
res.end((0, _fs.readFileSync)(thumbnailLocation), 'binary');
}
});
});
} else {
res.status(400);
res.json({ message: 'image exceeds than 10 MB' });
}
} else {
res.status(400);
res.json({ message: 'image not found' });
}
}
});
} else {
res.status(400);
res.json({ message: 'url not found' });
}
});
module.exports = router; |