forked from veliovgroup/Meteor-Files
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlib.js
More file actions
83 lines (76 loc) · 2.52 KB
/
lib.js
File metadata and controls
83 lines (76 loc) · 2.52 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
import { _ } from 'meteor/underscore';
import { check } from 'meteor/check';
/*
* @const {Function} fixJSONParse - Fix issue with Date parse
*/
const fixJSONParse = function(obj) {
for (let key in obj) {
if (_.isString(obj[key]) && !!~obj[key].indexOf('=--JSON-DATE--=')) {
obj[key] = obj[key].replace('=--JSON-DATE--=', '');
obj[key] = new Date(parseInt(obj[key]));
} else if (_.isObject(obj[key])) {
obj[key] = fixJSONParse(obj[key]);
} else if (_.isArray(obj[key])) {
let v;
for (let i = 0; i < obj[key].length; i++) {
v = obj[key][i];
if (_.isObject(v)) {
obj[key][i] = fixJSONParse(v);
} else if (_.isString(v) && !!~v.indexOf('=--JSON-DATE--=')) {
v = v.replace('=--JSON-DATE--=', '');
obj[key][i] = new Date(parseInt(v));
}
}
}
}
return obj;
};
/*
* @const {Function} fixJSONStringify - Fix issue with Date stringify
*/
const fixJSONStringify = function(obj) {
for (let key in obj) {
if (_.isDate(obj[key])) {
obj[key] = `=--JSON-DATE--=${+obj[key]}`;
} else if (_.isObject(obj[key])) {
obj[key] = fixJSONStringify(obj[key]);
} else if (_.isArray(obj[key])) {
let v;
for (let i = 0; i < obj[key].length; i++) {
v = obj[key][i];
if (_.isObject(v)) {
obj[key][i] = fixJSONStringify(v);
} else if (_.isDate(v)) {
obj[key][i] = `=--JSON-DATE--=${+v}`;
}
}
}
}
return obj;
};
/*
* @locus Anywhere
* @private
* @name formatFleURL
* @param {Object} fileRef - File reference object
* @param {String} version - [Optional] Version of file you would like build URL for
* @summary Returns formatted URL for file
* @returns {String} Downloadable link
*/
const formatFleURL = (fileRef, version = 'original') => {
let ext;
check(fileRef, Object);
check(version, String);
const _root = __meteor_runtime_config__.ROOT_URL.replace(/\/+$/, '');
const vRef = ((fileRef.versions && fileRef.versions[version]) || fileRef);
if (vRef.extension && _.isString(vRef, 'extension')) {
ext = `.${vRef.extension.replace(/^\./, '')}`;
} else {
ext = '';
}
if (fileRef.public === true) {
return _root + (version === 'original' ? `${fileRef._downloadRoute}/${fileRef._id}${ext}` : `${fileRef._downloadRoute}/${version}-${fileRef._id}${ext}`);
}
return _root + `${fileRef._downloadRoute}/${fileRef._collectionName}/${fileRef._id}/${version}/${fileRef._id}${ext}`;
};
export { fixJSONParse, fixJSONStringify, formatFleURL };