@webda/core 1.2.1 → 1.6.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/lib/application.d.ts +3 -0
  2. package/lib/application.js +26 -22
  3. package/lib/application.js.map +1 -1
  4. package/lib/application.spec.js +185 -2
  5. package/lib/application.spec.js.map +1 -1
  6. package/lib/core.d.ts +62 -6
  7. package/lib/core.js +127 -86
  8. package/lib/core.js.map +1 -1
  9. package/lib/core.spec.js +151 -6
  10. package/lib/core.spec.js.map +1 -1
  11. package/lib/index.d.ts +4 -0
  12. package/lib/index.js +4 -0
  13. package/lib/index.js.map +1 -1
  14. package/lib/models/aclmodel.d.ts +42 -3
  15. package/lib/models/aclmodel.js +58 -3
  16. package/lib/models/aclmodel.js.map +1 -1
  17. package/lib/models/aclmodel.spec.js +46 -0
  18. package/lib/models/aclmodel.spec.js.map +1 -1
  19. package/lib/models/coremodel.d.ts +58 -10
  20. package/lib/models/coremodel.js +39 -32
  21. package/lib/models/coremodel.js.map +1 -1
  22. package/lib/models/coremodel.spec.js +68 -6
  23. package/lib/models/coremodel.spec.js.map +1 -1
  24. package/lib/models/ident.d.ts +8 -2
  25. package/lib/models/ident.js.map +1 -1
  26. package/lib/models/ident.spec.js +16 -0
  27. package/lib/models/ident.spec.js.map +1 -1
  28. package/lib/models/ownermodel.d.ts +1 -1
  29. package/lib/models/ownermodel.js.map +1 -1
  30. package/lib/models/ownermodel.spec.js +22 -19
  31. package/lib/models/ownermodel.spec.js.map +1 -1
  32. package/lib/models/user.d.ts +2 -0
  33. package/lib/models/user.js +4 -2
  34. package/lib/models/user.js.map +1 -1
  35. package/lib/models/user.spec.js +9 -2
  36. package/lib/models/user.spec.js.map +1 -1
  37. package/lib/queues/filequeue.d.ts +63 -0
  38. package/lib/queues/filequeue.js +161 -0
  39. package/lib/queues/filequeue.js.map +1 -0
  40. package/lib/queues/filequeue.spec.d.ts +1 -0
  41. package/lib/queues/filequeue.spec.js +90 -0
  42. package/lib/queues/filequeue.spec.js.map +1 -0
  43. package/lib/queues/memoryqueue.d.ts +18 -4
  44. package/lib/queues/memoryqueue.js +20 -13
  45. package/lib/queues/memoryqueue.js.map +1 -1
  46. package/lib/queues/memoryqueue.spec.js +142 -39
  47. package/lib/queues/memoryqueue.spec.js.map +1 -1
  48. package/lib/queues/pubsubservice.d.ts +27 -0
  49. package/lib/queues/pubsubservice.js +21 -0
  50. package/lib/queues/pubsubservice.js.map +1 -0
  51. package/lib/queues/queue.spec.js +16 -7
  52. package/lib/queues/queue.spec.js.map +1 -1
  53. package/lib/queues/queueservice.d.ts +108 -13
  54. package/lib/queues/queueservice.js +100 -36
  55. package/lib/queues/queueservice.js.map +1 -1
  56. package/lib/router.js +4 -6
  57. package/lib/router.js.map +1 -1
  58. package/lib/router.spec.js +27 -2
  59. package/lib/router.spec.js.map +1 -1
  60. package/lib/services/asyncevents.d.ts +110 -5
  61. package/lib/services/asyncevents.js +134 -39
  62. package/lib/services/asyncevents.js.map +1 -1
  63. package/lib/services/asyncevents.spec.js +58 -4
  64. package/lib/services/asyncevents.spec.js.map +1 -1
  65. package/lib/services/authentication.d.ts +57 -5
  66. package/lib/services/authentication.js +93 -84
  67. package/lib/services/authentication.js.map +1 -1
  68. package/lib/services/authentication.spec.js +118 -82
  69. package/lib/services/authentication.spec.js.map +1 -1
  70. package/lib/services/binary.d.ts +175 -48
  71. package/lib/services/binary.js +205 -170
  72. package/lib/services/binary.js.map +1 -1
  73. package/lib/services/binary.spec.d.ts +22 -3
  74. package/lib/services/binary.spec.js +327 -22
  75. package/lib/services/binary.spec.js.map +1 -1
  76. package/lib/services/configuration.d.ts +94 -13
  77. package/lib/services/configuration.js +98 -28
  78. package/lib/services/configuration.js.map +1 -1
  79. package/lib/services/configuration.spec.js +40 -1
  80. package/lib/services/configuration.spec.js.map +1 -1
  81. package/lib/services/cron.d.ts +4 -4
  82. package/lib/services/cron.js +37 -53
  83. package/lib/services/cron.js.map +1 -1
  84. package/lib/services/cron.spec.d.ts +1 -0
  85. package/lib/services/cron.spec.js +76 -0
  86. package/lib/services/cron.spec.js.map +1 -0
  87. package/lib/services/debugmailer.spec.js +18 -4
  88. package/lib/services/debugmailer.spec.js.map +1 -1
  89. package/lib/services/echo.js +22 -13
  90. package/lib/services/echo.js.map +1 -1
  91. package/lib/services/echo.spec.d.ts +1 -0
  92. package/lib/services/echo.spec.js +52 -0
  93. package/lib/services/echo.spec.js.map +1 -0
  94. package/lib/services/filebinary.d.ts +16 -9
  95. package/lib/services/filebinary.js +58 -73
  96. package/lib/services/filebinary.js.map +1 -1
  97. package/lib/services/filebinary.spec.d.ts +8 -1
  98. package/lib/services/filebinary.spec.js +133 -7
  99. package/lib/services/filebinary.spec.js.map +1 -1
  100. package/lib/services/fileconfiguration.d.ts +9 -3
  101. package/lib/services/fileconfiguration.js +13 -6
  102. package/lib/services/fileconfiguration.js.map +1 -1
  103. package/lib/services/fileconfiguration.spec.js +100 -5
  104. package/lib/services/fileconfiguration.spec.js.map +1 -1
  105. package/lib/services/kubernetesconfiguration.d.ts +8 -2
  106. package/lib/services/kubernetesconfiguration.js +16 -5
  107. package/lib/services/kubernetesconfiguration.js.map +1 -1
  108. package/lib/services/kubernetesconfiguration.spec.js +53 -16
  109. package/lib/services/kubernetesconfiguration.spec.js.map +1 -1
  110. package/lib/services/mailer.d.ts +11 -2
  111. package/lib/services/mailer.js +28 -34
  112. package/lib/services/mailer.js.map +1 -1
  113. package/lib/services/mailer.spec.js +69 -23
  114. package/lib/services/mailer.spec.js.map +1 -1
  115. package/lib/services/oauth.d.ts +5 -2
  116. package/lib/services/oauth.js +22 -8
  117. package/lib/services/oauth.js.map +1 -1
  118. package/lib/services/oauth.spec.js +33 -3
  119. package/lib/services/oauth.spec.js.map +1 -1
  120. package/lib/services/resource.spec.js +39 -2
  121. package/lib/services/resource.spec.js.map +1 -1
  122. package/lib/services/service.d.ts +16 -0
  123. package/lib/services/service.js +47 -6
  124. package/lib/services/service.js.map +1 -1
  125. package/lib/services/service.spec.d.ts +1 -0
  126. package/lib/services/service.spec.js +119 -0
  127. package/lib/services/service.spec.js.map +1 -0
  128. package/lib/stores/aggregator.d.ts +43 -0
  129. package/lib/stores/aggregator.js +106 -0
  130. package/lib/stores/aggregator.js.map +1 -0
  131. package/lib/stores/file.d.ts +49 -11
  132. package/lib/stores/file.js +84 -81
  133. package/lib/stores/file.js.map +1 -1
  134. package/lib/stores/file.spec.d.ts +6 -1
  135. package/lib/stores/file.spec.js +134 -9
  136. package/lib/stores/file.spec.js.map +1 -1
  137. package/lib/stores/mapper.d.ts +151 -0
  138. package/lib/stores/mapper.js +294 -0
  139. package/lib/stores/mapper.js.map +1 -0
  140. package/lib/stores/mapper.spec.d.ts +1 -0
  141. package/lib/stores/mapper.spec.js +55 -0
  142. package/lib/stores/mapper.spec.js.map +1 -0
  143. package/lib/stores/memory.d.ts +52 -7
  144. package/lib/stores/memory.js +71 -33
  145. package/lib/stores/memory.js.map +1 -1
  146. package/lib/stores/memory.spec.d.ts +6 -1
  147. package/lib/stores/memory.spec.js +65 -4
  148. package/lib/stores/memory.spec.js.map +1 -1
  149. package/lib/stores/store.d.ts +263 -126
  150. package/lib/stores/store.js +285 -493
  151. package/lib/stores/store.js.map +1 -1
  152. package/lib/stores/store.spec.d.ts +20 -0
  153. package/lib/stores/store.spec.js +242 -18
  154. package/lib/stores/store.spec.js.map +1 -1
  155. package/lib/test.d.ts +1 -7
  156. package/lib/test.js +3 -12
  157. package/lib/test.js.map +1 -1
  158. package/lib/utils/abstractdeployer.spec.d.ts +1 -0
  159. package/lib/utils/abstractdeployer.spec.js +23 -0
  160. package/lib/utils/abstractdeployer.spec.js.map +1 -0
  161. package/lib/utils/context.d.ts +25 -2
  162. package/lib/utils/context.js +33 -12
  163. package/lib/utils/context.js.map +1 -1
  164. package/lib/utils/context.spec.js +81 -11
  165. package/lib/utils/context.spec.js.map +1 -1
  166. package/lib/utils/cookie.d.ts +12 -0
  167. package/lib/utils/cookie.js +13 -1
  168. package/lib/utils/cookie.js.map +1 -1
  169. package/lib/utils/cookie.spec.js +42 -11
  170. package/lib/utils/cookie.spec.js.map +1 -1
  171. package/lib/utils/logger.d.ts +23 -4
  172. package/lib/utils/logger.js +29 -6
  173. package/lib/utils/logger.js.map +1 -1
  174. package/lib/utils/logger.spec.js +8 -0
  175. package/lib/utils/logger.spec.js.map +1 -1
  176. package/lib/utils/serializers.d.ts +5 -5
  177. package/lib/utils/serializers.js +10 -10
  178. package/lib/utils/serializers.js.map +1 -1
  179. package/lib/utils/serializers.spec.js +41 -16
  180. package/lib/utils/serializers.spec.js.map +1 -1
  181. package/lib/utils/waiter.d.ts +59 -1
  182. package/lib/utils/waiter.js +86 -3
  183. package/lib/utils/waiter.js.map +1 -1
  184. package/lib/utils/waiter.spec.js +48 -4
  185. package/lib/utils/waiter.spec.js.map +1 -1
  186. package/package.json +16 -11
  187. package/test/badapp/package.json +4 -0
  188. package/test/badapp/webda.config.json +1 -0
  189. package/test/cachedapp/webda.config.json +7 -0
  190. package/test/config-file-no-reload.json +70 -0
  191. package/test/config-file-reload.json +7 -1
  192. package/test/config-kube-reload.json +7 -1
  193. package/test/config.json +45 -21
  194. package/test/config.old-default.json +0 -16
  195. package/test/config.old.json +0 -16
  196. package/test/deployments/invalid.json +1 -0
  197. package/test/moddas/fakeservice.js +5 -0
  198. package/test/models/ident.js +10 -14
  199. package/test/models/task.js +2 -4
@@ -9,13 +9,23 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.Binary = exports.BinaryParameters = exports.BinaryMap = void 0;
12
+ exports.Binary = exports.BinaryParameters = exports.BinaryMap = exports.BinaryNotFoundError = void 0;
13
13
  const crypto = require("crypto");
14
14
  const fs = require("fs");
15
15
  const mime = require("mime-types");
16
16
  const path = require("path");
17
+ const __1 = require("..");
17
18
  const store_1 = require("../stores/store");
18
19
  const service_1 = require("./service");
20
+ /**
21
+ * Emitted if binary does not exist
22
+ */
23
+ class BinaryNotFoundError extends __1.WebdaError {
24
+ constructor(hash, storeName) {
25
+ super("BINARY_NOTFOUND", `Binary not found ${hash} BinaryService(${storeName})`);
26
+ }
27
+ }
28
+ exports.BinaryNotFoundError = BinaryNotFoundError;
19
29
  /**
20
30
  * This is a map used to retrieve binary
21
31
  *
@@ -29,7 +39,20 @@ class BinaryMap {
29
39
  this.__store = service;
30
40
  }
31
41
  /**
32
- * Get the CoreModel
42
+ * Prevent all the attributes starting with '__' to be serialized
43
+ * @returns
44
+ */
45
+ toJSON() {
46
+ let res = {};
47
+ Object.keys(this)
48
+ .filter(k => !k.startsWith("__"))
49
+ .forEach(k => {
50
+ res[k] = this[k];
51
+ });
52
+ return res;
53
+ }
54
+ /**
55
+ * Get the binary data
33
56
  *
34
57
  * @returns
35
58
  */
@@ -42,10 +65,11 @@ class BinaryMap {
42
65
  * Shortcut to call {@link Binary.downloadTo} with current object
43
66
  *
44
67
  * @param filename
45
- * @returns
46
68
  */
47
69
  downloadTo(filename) {
48
- return this.__store.downloadTo(this, filename);
70
+ return __awaiter(this, void 0, void 0, function* () {
71
+ return this.__store.downloadTo(this, filename);
72
+ });
49
73
  }
50
74
  /**
51
75
  * Set the http context
@@ -58,29 +82,27 @@ class BinaryMap {
58
82
  exports.BinaryMap = BinaryMap;
59
83
  class BinaryParameters extends service_1.ServiceParameters {
60
84
  constructor(params, service) {
85
+ var _a;
61
86
  super(params);
62
- if (typeof params.expose == "boolean") {
63
- if (params.expose) {
64
- this.expose = {
65
- url: "/" + service.getName().toLowerCase()
66
- };
67
- }
68
- }
69
- else if (typeof params.expose == "string") {
70
- this.expose = {
71
- url: params.expose
72
- };
73
- }
74
87
  if (this.expose) {
75
88
  this.expose.restrict = this.expose.restrict || {};
76
89
  }
90
+ (_a = this.map) !== null && _a !== void 0 ? _a : (this.map = {});
77
91
  }
78
92
  }
79
93
  exports.BinaryParameters = BinaryParameters;
80
94
  /**
81
95
  * This is an abstract service to represent a storage of files
82
- * The binary allow you to expose this service as HTTP ( therefore is an executor )
83
- * It needs an object to attach the binary too
96
+ * The binary allow you to expose this service as HTTP
97
+ *
98
+ * It supports two modes:
99
+ * - attached to a CoreModel (attach, detach, reattach)
100
+ * - pure storage with no managed id (read, write, delete)
101
+ *
102
+ * As we have deduplication builtin you can get some stats
103
+ * - getUsageCount(hash)
104
+ * - getUsageCountForRaw()
105
+ * - getUsageCountForMap()
84
106
  *
85
107
  * The Binary storage should store only once a binary and reference every object that are used by this binary, so it can be cleaned.
86
108
  *
@@ -93,12 +115,6 @@ exports.BinaryParameters = BinaryParameters;
93
115
  * @class Binary
94
116
  */
95
117
  class Binary extends service_1.Service {
96
- /**
97
- * @inheritdoc
98
- */
99
- loadParameters(params) {
100
- return new BinaryParameters(params, this);
101
- }
102
118
  /**
103
119
  * Get a binary
104
120
  *
@@ -121,36 +137,38 @@ class Binary extends service_1.Service {
121
137
  * @param {String} filepath to save the binary to
122
138
  */
123
139
  downloadTo(info, filename) {
124
- var readStream = this._get(info);
125
- var writeStream = fs.createWriteStream(filename);
126
- return new Promise((resolve, reject) => {
127
- writeStream.on("finish", src => {
128
- return resolve();
129
- });
130
- writeStream.on("error", src => {
131
- try {
132
- fs.unlinkSync(filename);
133
- }
134
- catch (err) {
135
- this._webda.log("ERROR", err);
136
- }
137
- return reject();
138
- });
139
- readStream.pipe(writeStream);
140
- });
141
- }
142
- /** @ignore */
143
- init() {
144
140
  return __awaiter(this, void 0, void 0, function* () {
145
- this.initMap(this.parameters.map);
141
+ var readStream = yield this._get(info);
142
+ var writeStream = fs.createWriteStream(filename);
143
+ return new Promise((resolve, reject) => {
144
+ writeStream.on("finish", src => {
145
+ return resolve();
146
+ });
147
+ writeStream.on("error", src => {
148
+ try {
149
+ fs.unlinkSync(filename);
150
+ }
151
+ catch (err) {
152
+ this._webda.log("ERROR", err);
153
+ }
154
+ return reject(src);
155
+ });
156
+ readStream.pipe(writeStream);
157
+ });
146
158
  });
147
159
  }
148
- _getUrl(info, ctx) {
149
- return;
150
- }
151
- _get(info) {
152
- return;
160
+ /**
161
+ * @override
162
+ */
163
+ resolve() {
164
+ super.resolve();
165
+ this.initMap(this.parameters.map);
153
166
  }
167
+ /**
168
+ * Init the declared maps, adding reverse maps
169
+ *
170
+ * @param map
171
+ */
154
172
  initMap(map) {
155
173
  if (map == undefined || map._init) {
156
174
  return;
@@ -164,25 +182,32 @@ class Binary extends service_1.Service {
164
182
  map[prop]["-onerror"] = "NoStore";
165
183
  continue;
166
184
  }
167
- if (typeof map[prop] === "string") {
168
- reverseStore.addReverseMap(map[prop], {
169
- store: this._name,
170
- name: map[prop]
171
- }, this);
185
+ for (let i in map[prop]) {
186
+ reverseStore.addReverseMap(map[prop][i], this);
172
187
  }
173
- else {
174
- for (let i in map[prop]) {
175
- reverseStore.addReverseMap(map[prop][i], {
176
- store: this._name,
177
- name: map[prop][i]
178
- }, this);
188
+ // Cascade delete
189
+ reverseStore.on("Store.Deleted", (evt) => __awaiter(this, void 0, void 0, function* () {
190
+ let infos = [];
191
+ if (evt.object[map[prop]]) {
192
+ infos.push(...evt.object[map[prop]]);
179
193
  }
180
- }
194
+ yield Promise.all(infos.map(info => this.cascadeDelete(info, evt.object.getUuid())));
195
+ }));
181
196
  }
182
197
  }
198
+ /**
199
+ * Based on the raw Map init a BinaryMap
200
+ * @param obj
201
+ * @returns
202
+ */
183
203
  initModel(obj) {
184
204
  return new BinaryMap(this, obj);
185
205
  }
206
+ /**
207
+ * Create hashes
208
+ * @param buffer
209
+ * @returns
210
+ */
186
211
  _getHashes(buffer) {
187
212
  var result = {};
188
213
  // Using MD5 as S3 content verification use md5
@@ -193,6 +218,25 @@ class Binary extends service_1.Service {
193
218
  result.challenge = challenge.update(buffer).digest("hex");
194
219
  return result;
195
220
  }
221
+ /**
222
+ * Read a stream to a buffer
223
+ *
224
+ * @param stream
225
+ * @returns
226
+ */
227
+ static streamToBuffer(stream) {
228
+ // codesnippet from https://stackoverflow.com/questions/14269233/node-js-how-to-read-a-stream-into-a-buffer
229
+ const chunks = [];
230
+ return new Promise((resolve, reject) => {
231
+ stream.on("data", chunk => chunks.push(Buffer.from(chunk)));
232
+ stream.on("error", err => reject(err));
233
+ stream.on("end", () => resolve(Buffer.concat(chunks)));
234
+ });
235
+ }
236
+ /**
237
+ * Update the BinaryFile
238
+ * @param file
239
+ */
196
240
  _prepareInput(file) {
197
241
  if (file.path !== undefined) {
198
242
  file.buffer = fs.readFileSync(file.path);
@@ -201,66 +245,39 @@ class Binary extends service_1.Service {
201
245
  file.size = fs.statSync(file.path).size;
202
246
  file.mimetype = mime.lookup(file.path) || "application/octet-stream";
203
247
  }
248
+ Object.assign(file, this._getHashes(file.buffer));
204
249
  }
250
+ /**
251
+ * Check if a map is defined
252
+ *
253
+ * @param name
254
+ * @param property
255
+ */
205
256
  _checkMap(name, property) {
206
257
  var map = this.parameters.map[this._lowercaseMaps[name.toLowerCase()]];
207
258
  if (map === undefined) {
208
259
  throw Error("Unknown mapping");
209
260
  }
210
- if (typeof map === "string" && map !== property) {
211
- throw Error("Unknown mapping");
212
- }
213
261
  if (Array.isArray(map) && map.indexOf(property) === -1) {
214
262
  throw Error("Unknown mapping");
215
263
  }
216
264
  }
217
- _validChallenge(challenge) {
218
- var re = /[0-9A-Fa-f]{64}/g;
219
- return re.test(challenge);
220
- }
221
- challenge(hash, challenge) {
222
- return false;
223
- }
224
- updateSuccess(targetStore, object, property, index, file, metadatas) {
265
+ uploadSuccess(object, property, file, metadatas) {
225
266
  return __awaiter(this, void 0, void 0, function* () {
226
267
  var fileObj = Object.assign(Object.assign({}, file), { metadatas });
227
- var object_uid = object[targetStore.getUuidField()];
268
+ var object_uid = object.getUuid();
228
269
  var info;
229
- var update;
230
- var promise;
231
270
  yield this.emitSync("Binary.UploadSuccess", {
232
271
  object: fileObj,
233
272
  service: this,
234
273
  target: object
235
274
  });
236
- if (index === undefined || index < 0) {
237
- promise = targetStore.upsertItemToCollection(object_uid, property, fileObj);
238
- }
239
- else {
240
- promise = targetStore.upsertItemToCollection(object_uid, property, fileObj, index, object[property][index].hash, "hash");
241
- info = object[property][index];
242
- }
243
- let updated = yield promise;
244
- update = updated;
245
- if (info) {
246
- if (info.hash !== file.hash) {
247
- yield this.cascadeDelete(info, object_uid);
248
- }
249
- yield this.emitSync("Binary.Update", {
250
- object: fileObj,
251
- old: info,
252
- service: this,
253
- target: object
254
- });
255
- }
256
- else {
257
- yield this.emitSync("Binary.Create", {
258
- object: fileObj,
259
- service: this,
260
- target: object
261
- });
262
- }
263
- return update;
275
+ yield object.getStore().upsertItemToCollection(object_uid, property, fileObj);
276
+ yield this.emitSync("Binary.Create", {
277
+ object: fileObj,
278
+ service: this,
279
+ target: object
280
+ });
264
281
  });
265
282
  }
266
283
  /**
@@ -271,22 +288,22 @@ class Binary extends service_1.Service {
271
288
  * @param index
272
289
  * @returns
273
290
  */
274
- deleteSuccess(targetStore, object, property, index) {
275
- var info = object[property][index];
276
- var update;
277
- return targetStore
278
- .deleteItemFromCollection(object[targetStore.getUuidField()], property, index, info.hash, "hash")
279
- .then(updated => {
280
- update = updated;
281
- return this.emitSync("Binary.Delete", {
291
+ deleteSuccess(object, property, index) {
292
+ return __awaiter(this, void 0, void 0, function* () {
293
+ var info = object[property][index];
294
+ let update = object.getStore().deleteItemFromCollection(object.getUuid(), property, index, info.hash, "hash");
295
+ yield this.emitSync("Binary.Delete", {
282
296
  object: info,
283
297
  service: this
284
298
  });
285
- })
286
- .then(() => {
287
- return Promise.resolve(update);
299
+ return update;
288
300
  });
289
301
  }
302
+ /**
303
+ * Get file either from multipart post or raw
304
+ * @param req
305
+ * @returns
306
+ */
290
307
  _getFile(req) {
291
308
  var file;
292
309
  if (req.files !== undefined) {
@@ -294,9 +311,9 @@ class Binary extends service_1.Service {
294
311
  }
295
312
  else {
296
313
  file = {};
297
- file.buffer = req.body;
298
- file.mimetype = req.headers.contentType;
299
- file.size = req.body.length;
314
+ file.buffer = req.getRequestBody();
315
+ file.mimetype = req.getHttpContext().getHeader("Content-Type", "application/octet-stream");
316
+ file.size = file.buffer.length;
300
317
  file.originalname = "";
301
318
  }
302
319
  return file;
@@ -308,6 +325,13 @@ class Binary extends service_1.Service {
308
325
  // Use a private method with boolean
309
326
  this._initRoutes();
310
327
  }
328
+ /**
329
+ * Return the name of the service for OpenAPI
330
+ * @returns
331
+ */
332
+ getOperationName() {
333
+ return this._name.toLowerCase() === "binary" ? "" : this._name;
334
+ }
311
335
  /**
312
336
  * This is used to allow subclasses to add more route
313
337
  */
@@ -316,13 +340,7 @@ class Binary extends service_1.Service {
316
340
  if (!this.parameters.expose) {
317
341
  return false;
318
342
  }
319
- let name = this._name;
320
- if (name === "Binary") {
321
- name = "";
322
- }
323
- if (!this.parameters.expose.url) {
324
- return false;
325
- }
343
+ let name = this.getOperationName();
326
344
  if (!this.parameters.expose.restrict.get) {
327
345
  url = this.parameters.expose.url + "/{store}/{uid}/{property}/{index}";
328
346
  this.addRoute(url, ["GET"], this.httpRoute, {
@@ -342,7 +360,7 @@ class Binary extends service_1.Service {
342
360
  if (!this.parameters.expose.restrict.create) {
343
361
  // No need the index to add file
344
362
  url = this.parameters.expose.url + "/{store}/{uid}/{property}";
345
- this.addRoute(url, ["POST"], this.httpPost, {
363
+ this.addRoute(url, ["POST"], this.httpRoute, {
346
364
  post: {
347
365
  operationId: `add${name}Binary`,
348
366
  description: "Add a binary linked to an object",
@@ -362,7 +380,7 @@ class Binary extends service_1.Service {
362
380
  }
363
381
  if (!this.parameters.expose.restrict.create) {
364
382
  // Add file with challenge
365
- url = this.parameters.expose.url + "/upload/{store}/{uid}/{property}/{index}";
383
+ url = this.parameters.expose.url + "/upload/{store}/{uid}/{property}";
366
384
  this.addRoute(url, ["PUT"], this.httpChallenge, {
367
385
  put: {
368
386
  operationId: `put${name}Binary`,
@@ -396,14 +414,11 @@ class Binary extends service_1.Service {
396
414
  }
397
415
  return true;
398
416
  }
399
- httpPost(ctx) {
400
- return __awaiter(this, void 0, void 0, function* () {
401
- let targetStore = this._verifyMapAndStore(ctx);
402
- let object = yield targetStore.get(ctx.parameter("uid"));
403
- object = yield this.store(targetStore, object, ctx.parameter("property"), this._getFile(ctx), ctx.getRequestBody());
404
- ctx.write(object);
405
- });
406
- }
417
+ /**
418
+ * Based on the request parameter verify it match a known mapping
419
+ * @param ctx
420
+ * @returns
421
+ */
407
422
  _verifyMapAndStore(ctx) {
408
423
  let store = ctx.parameter("store").toLowerCase();
409
424
  // To avoid any probleme lowercase everything
@@ -411,11 +426,7 @@ class Binary extends service_1.Service {
411
426
  if (map === undefined) {
412
427
  throw 404;
413
428
  }
414
- let property = ctx.parameter("property");
415
- if (typeof map === "string" && map !== property) {
416
- throw 404;
417
- }
418
- if (Array.isArray(map) && map.indexOf(property) == -1) {
429
+ if (map.indexOf(ctx.parameter("property")) == -1) {
419
430
  throw 404;
420
431
  }
421
432
  var targetStore = this.getService(store);
@@ -424,40 +435,59 @@ class Binary extends service_1.Service {
424
435
  }
425
436
  return targetStore;
426
437
  }
438
+ /**
439
+ * By default no challenge is managed so throws 404
440
+ *
441
+ * @param ctx
442
+ */
427
443
  putRedirectUrl(ctx) {
428
444
  return __awaiter(this, void 0, void 0, function* () {
429
445
  // Dont handle the redirect url
430
446
  throw 404;
431
447
  });
432
448
  }
449
+ /**
450
+ * Mechanism to add a data based on challenge
451
+ */
433
452
  httpChallenge(ctx) {
434
453
  return __awaiter(this, void 0, void 0, function* () {
454
+ let body = ctx.getRequestBody();
455
+ if (!body.hash || !body.challenge) {
456
+ throw 400;
457
+ }
458
+ // First verify if map exist
459
+ let targetStore = this._verifyMapAndStore(ctx);
460
+ // Get the object
461
+ let object = yield targetStore.get(ctx.parameter("uid"), ctx);
462
+ if (object === undefined) {
463
+ throw 404;
464
+ }
465
+ yield object.canAct(ctx, "attach_binary");
435
466
  let url = yield this.putRedirectUrl(ctx);
436
467
  let base64String = Buffer.from(ctx.getRequestBody().hash, "hex").toString("base64");
437
- ctx.write({
438
- url: url,
439
- done: url === undefined,
440
- md5: base64String
441
- });
468
+ ctx.write(Object.assign(Object.assign({}, url), { done: url === undefined, md5: base64String }));
442
469
  });
443
470
  }
444
- // Executor side
471
+ /**
472
+ * Manage the different routes
473
+ * @param ctx
474
+ */
445
475
  httpRoute(ctx) {
446
476
  return __awaiter(this, void 0, void 0, function* () {
477
+ // First verify if map exist
447
478
  let targetStore = this._verifyMapAndStore(ctx);
448
- let uid = ctx.parameter("uid");
449
- let object = yield targetStore.get(uid);
479
+ // Get the object
480
+ let object = yield targetStore.get(ctx.parameter("uid"), ctx);
450
481
  if (object === undefined) {
451
482
  throw 404;
452
483
  }
453
484
  let property = ctx.parameter("property");
454
485
  let index = ctx.parameter("index");
455
- if (object[property] !== undefined && typeof object[property] !== "object") {
456
- throw 403;
457
- }
458
- if (object[property] === undefined || object[property][index] === undefined) {
486
+ // Should be an array
487
+ if (!Array.isArray(object[property]) || object[property].length <= index) {
459
488
  throw 404;
460
489
  }
490
+ // Check permissions
461
491
  let action = "unknown";
462
492
  if (ctx.getHttpContext().getMethod() === "GET") {
463
493
  action = "get_binary";
@@ -465,10 +495,11 @@ class Binary extends service_1.Service {
465
495
  else if (ctx.getHttpContext().getMethod() === "DELETE") {
466
496
  action = "detach_binary";
467
497
  }
468
- else if (ctx.getHttpContext().getMethod() === "PUT") {
498
+ else if (ctx.getHttpContext().getMethod() === "POST") {
469
499
  action = "attach_binary";
470
500
  }
471
501
  yield object.canAct(ctx, action);
502
+ // Now do the action
472
503
  if (ctx.getHttpContext().getMethod() === "GET") {
473
504
  var file = object[property][index];
474
505
  ctx.writeHead(200, {
@@ -476,28 +507,32 @@ class Binary extends service_1.Service {
476
507
  "Content-Length": file.size
477
508
  });
478
509
  let readStream = yield this.get(file);
479
- yield new Promise((resolve, reject) => {
480
- // We replaced all the event handlers with a simple call to readStream.pipe()
481
- ctx._stream.on("finish", src => {
482
- return resolve();
483
- });
484
- ctx._stream.on("error", src => {
485
- return reject();
510
+ try {
511
+ yield new Promise((resolve, reject) => {
512
+ // We replaced all the event handlers with a simple call to readStream.pipe()
513
+ ctx._stream.on("finish", src => {
514
+ return resolve();
515
+ });
516
+ ctx._stream.on("error", src => {
517
+ return reject();
518
+ });
519
+ readStream.pipe(ctx._stream);
486
520
  });
487
- readStream.pipe(ctx._stream);
488
- });
521
+ }
522
+ catch (err) {
523
+ this.log("ERROR", err);
524
+ throw 500;
525
+ }
489
526
  }
490
527
  else {
491
- if (object[property][index].hash !== ctx.parameter("hash")) {
492
- throw 412;
493
- }
494
528
  if (ctx.getHttpContext().getMethod() === "DELETE") {
495
- object = yield this.delete(targetStore, object, property, index);
496
- ctx.write(object);
529
+ if (object[property][index].hash !== ctx.parameter("hash")) {
530
+ throw 412;
531
+ }
532
+ yield this.delete(object, property, index);
497
533
  }
498
- else if (ctx.getHttpContext().getMethod() === "PUT") {
499
- object = yield this.update(targetStore, object, property, index, this._getFile(ctx), ctx.getRequestBody());
500
- ctx.write(object);
534
+ else if (ctx.getHttpContext().getMethod() === "POST") {
535
+ yield this.store(object, property, this._getFile(ctx), ctx.getRequestBody());
501
536
  }
502
537
  }
503
538
  });
@@ -1 +1 @@
1
- {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/services/binary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/services/binary.ts"],"names":[],"mappings":"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"}