@qikdev/sdk 0.1.16 → 0.1.17
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.
- package/package.json +2 -2
- package/src/api/qik.access.js +407 -53
- package/src/api/qik.api.js +22 -63
- package/src/api/qik.auth.js +143 -105
- package/src/api/qik.content.js +538 -8
- package/src/api/qik.core.js +48 -3
- package/src/api/qik.files.js +88 -0
- package/src/api/qik.filter.js +255 -0
- package/src/api/qik.system.js +42 -0
- package/src/api/qik.utils.js +656 -91
- package/src/index.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qikdev/sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.17",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Promise based Javascript SDK",
|
|
6
6
|
"scripts": {
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"axios": "^0.19.2",
|
|
42
42
|
"axios-extensions": "^3.1.2",
|
|
43
|
-
"lodash": "^4.17.
|
|
43
|
+
"lodash": "^4.17.21"
|
|
44
44
|
},
|
|
45
45
|
"directories": {
|
|
46
46
|
"test": "test"
|
package/src/api/qik.access.js
CHANGED
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
import _ from 'lodash';
|
|
2
|
-
import { EventDispatcher } from './qik.utils.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Creates a new QikAccess service
|
|
9
|
-
* This module provides helpful functions and tools for managing and understanding a user's permissions and access control
|
|
10
|
-
*
|
|
11
|
-
* @alias access
|
|
12
|
-
* @constructor
|
|
13
|
-
* @hideconstructor
|
|
14
|
-
* @param {QikCore} qik A reference to the parent instance of the QikCore module. This module is usually created by a QikCore instance that passes itself in as the first argument.
|
|
15
|
-
*/
|
|
16
1
|
var QikAccess = function(QikCore) {
|
|
17
2
|
|
|
18
3
|
|
|
@@ -20,66 +5,435 @@ var QikAccess = function(QikCore) {
|
|
|
20
5
|
throw new Error(`Can't Instantiate QikAccess before QikAccess has been initialized`);
|
|
21
6
|
}
|
|
22
7
|
|
|
8
|
+
if (!QikCore.utils) {
|
|
9
|
+
throw new Error(`Can't Instantiate QikAccess before QikUtils has been initialized`);
|
|
10
|
+
}
|
|
11
|
+
|
|
23
12
|
//////////////////////////////////
|
|
24
13
|
|
|
25
|
-
var store = {};
|
|
26
14
|
var service = {};
|
|
27
15
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
16
|
+
///////////////////////////////////////////////
|
|
17
|
+
|
|
18
|
+
service.isAdministrator = function(user) {
|
|
19
|
+
return user && user.userType == 'administrator';
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
///////////////////////////////////////////////
|
|
23
|
+
|
|
24
|
+
service.getAllDescendants = function(scope) {
|
|
25
|
+
|
|
26
|
+
//Start by including the scope id
|
|
27
|
+
var results = [];
|
|
28
|
+
|
|
29
|
+
addScope(scope);
|
|
30
|
+
|
|
31
|
+
function addScope(entry) {
|
|
32
|
+
//Add this scope to the results
|
|
33
|
+
var id = QikCore.utils.id(entry);
|
|
34
|
+
results.push(id);
|
|
35
|
+
|
|
36
|
+
(entry.children || []).forEach(function(child) {
|
|
37
|
+
addScope(child);
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
return results;
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
///////////////////////////////////////////////
|
|
46
|
+
|
|
47
|
+
service.hashPermissions = function(user) {
|
|
48
|
+
|
|
49
|
+
var results = {};
|
|
50
|
+
|
|
51
|
+
for (var key in (user.permissions || {})) {
|
|
31
52
|
|
|
53
|
+
//Get the permission set
|
|
54
|
+
var permissionSet = user.permissions[key];
|
|
32
55
|
|
|
33
|
-
|
|
56
|
+
//Get all Scope ids from the permission set
|
|
57
|
+
var allIDs = service.getAllDescendants(permissionSet);
|
|
34
58
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
59
|
+
//For each permission defined in the set
|
|
60
|
+
(permissionSet.permissions || []).forEach(function(permissionString) {
|
|
61
|
+
//Include the top scope
|
|
62
|
+
if (!results[permissionString]) {
|
|
63
|
+
results[permissionString] = []
|
|
64
|
+
}
|
|
65
|
+
results[permissionString] = [...new Set(results[permissionString].concat(allIDs))]
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
///////////////////////////////////////////////
|
|
70
|
+
|
|
71
|
+
return results;
|
|
72
|
+
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
///////////////////////////////////////////////
|
|
77
|
+
|
|
78
|
+
service.allUserScopes = function(user) {
|
|
79
|
+
|
|
80
|
+
var collected = {};
|
|
81
|
+
var permissions = user.permissions || {};
|
|
82
|
+
|
|
83
|
+
////////////////////////
|
|
84
|
+
|
|
85
|
+
function pluckScope(scopeObject) {
|
|
86
|
+
|
|
87
|
+
if (!scopeObject) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
var scopeID = QikUtils.id(scopeObject);
|
|
92
|
+
if (!scopeID) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
//Add to the collection
|
|
97
|
+
collected[scopeID] = 1;
|
|
98
|
+
|
|
99
|
+
//If there are children, then recursively pluck the ids
|
|
100
|
+
if (scopeObject.children && scopeObject.children.length) {
|
|
101
|
+
scopeObject.children.forEach(function(scope) {
|
|
102
|
+
pluckScope(scope);
|
|
103
|
+
})
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
////////////////////////
|
|
108
|
+
|
|
109
|
+
for (var scopeID in permissions) {
|
|
110
|
+
pluckScope(permissions[scopeID]);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
////////////////////////
|
|
114
|
+
|
|
115
|
+
return Object.keys(collected);
|
|
116
|
+
}
|
|
47
117
|
|
|
48
|
-
|
|
49
|
-
var user = service.retrieveCurrentSession(webMode);
|
|
118
|
+
///////////////////////////////////////////////
|
|
50
119
|
|
|
51
|
-
|
|
120
|
+
service.actionableScopes = function(user, action, definition, type, options) {
|
|
121
|
+
options = options || {}
|
|
122
|
+
|
|
123
|
+
/////////////////////////
|
|
124
|
+
|
|
125
|
+
var validScopes = [];
|
|
126
|
+
|
|
127
|
+
if (user.userType == 'administrator') {
|
|
128
|
+
validScopes = service.allUserScopes(user, options)
|
|
129
|
+
} else {
|
|
130
|
+
var permissionsLookup = service.hashPermissions(user);
|
|
131
|
+
|
|
132
|
+
var checkTypeName = definition || type;
|
|
133
|
+
if (!checkTypeName) {
|
|
134
|
+
return validScopes;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
var stringKey = `${checkTypeName}.${action}`;
|
|
138
|
+
validScopes = permissionsLookup[stringKey]
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/////////////////////////
|
|
142
|
+
|
|
143
|
+
return validScopes || []
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
///////////////////////////////////////////////
|
|
148
|
+
|
|
149
|
+
service.isOwner = function(user, item) {
|
|
150
|
+
var userID = QikUtils.id(user);
|
|
151
|
+
var personaID = QikUtils.id(user.persona);
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
var metaObject = item.meta;
|
|
155
|
+
if (!metaObject) {
|
|
52
156
|
return false;
|
|
53
157
|
}
|
|
54
158
|
|
|
55
|
-
|
|
159
|
+
/////////////////////////////////////////////
|
|
160
|
+
|
|
161
|
+
var users = QikUtils.ids([...metaObject.userOwners, metaObject.userAuthor]);
|
|
162
|
+
var userHash = helpers.hash(users);
|
|
163
|
+
// console.log('USERS', users, userHash, '-', metaObject.userAuthor, metaObject.userOwners);
|
|
164
|
+
|
|
165
|
+
if (userHash[userID]) {
|
|
56
166
|
return true;
|
|
57
167
|
}
|
|
58
168
|
|
|
59
|
-
|
|
169
|
+
/////////////////////////////////////////////
|
|
170
|
+
|
|
171
|
+
var personas = QikUtils.ids([...metaObject.personaOwners, metaObject.personaAuthor]);
|
|
172
|
+
var personaHash = helpers.hash(personas);
|
|
173
|
+
// console.log('PERSONAS', personas, personaHash, '-', metaObject.personaAuthor, metaObject.personaOwners)
|
|
174
|
+
|
|
175
|
+
if (personaHash[personaID]) {
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
}
|
|
60
180
|
|
|
61
|
-
var permissionSets = user.permissionSets;
|
|
62
181
|
|
|
63
|
-
|
|
64
|
-
var permissions = _.chain(permissionSets)
|
|
65
|
-
.reduce(function(results, set, key) {
|
|
182
|
+
///////////////////////////////////////////////
|
|
66
183
|
|
|
67
|
-
|
|
184
|
+
service.allPermissions = function(user) {
|
|
68
185
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
.
|
|
74
|
-
.uniq()
|
|
75
|
-
.value();
|
|
186
|
+
var allPermissions = Object.values(user.permissions)
|
|
187
|
+
.map(function(permissionScope) {
|
|
188
|
+
return permissionScope.permissions;
|
|
189
|
+
})
|
|
190
|
+
.flat();
|
|
76
191
|
|
|
77
|
-
|
|
78
|
-
//we are looking for
|
|
79
|
-
return _.includes(permissions, permission);
|
|
192
|
+
return allPermissions;
|
|
80
193
|
}
|
|
81
194
|
|
|
82
|
-
|
|
195
|
+
///////////////////////////////////////////////
|
|
196
|
+
|
|
197
|
+
service.allPermissionTypes = function(user, asHash) {
|
|
198
|
+
if (asHash) {
|
|
199
|
+
return service.allPermissions(user).reduce(function(set, string) {
|
|
200
|
+
var type = string.split('.')[0];
|
|
201
|
+
set[type] = true;
|
|
202
|
+
return set;
|
|
203
|
+
}, {});
|
|
204
|
+
} else {
|
|
205
|
+
return service.allPermissions(user).map(function(string) {
|
|
206
|
+
return string.split('.')[0];
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
///////////////////////////////////////////////
|
|
213
|
+
|
|
214
|
+
service.canKnowOf = function(user, typeKey, options) {
|
|
215
|
+
options = options || {};
|
|
216
|
+
options.cache = options.cache || {};
|
|
217
|
+
|
|
218
|
+
//Let us know if there are any permissions for this user
|
|
219
|
+
return service.allPermissionTypes(user)[typeKey];
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
///////////////////////////////////////////////
|
|
224
|
+
|
|
225
|
+
service.checkActionAccess = function(user, item, ANY_ACTION, OWN_ACTION, options) {
|
|
226
|
+
|
|
227
|
+
options = options || {};
|
|
228
|
+
options.cache = options.cache || {};
|
|
229
|
+
|
|
230
|
+
//Allow everything if we're a super user
|
|
231
|
+
if (service.isAdministrator(user)) {
|
|
232
|
+
return true;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
//////////////////////////////////
|
|
236
|
+
|
|
237
|
+
var type = item.meta.type;
|
|
238
|
+
var definition = item.meta.definition || type;
|
|
239
|
+
|
|
240
|
+
//////////////////////////////////
|
|
241
|
+
|
|
242
|
+
var itemScopes = item.meta.scopes || [];
|
|
243
|
+
|
|
244
|
+
//////////////////////////////////
|
|
245
|
+
|
|
246
|
+
var actionAnyScopesHash;
|
|
247
|
+
var anyCacheKey = `access-${user.cacheKey}-${ANY_ACTION}-${definition}-${type}`
|
|
248
|
+
|
|
249
|
+
if (options.cache[anyCacheKey]) {
|
|
250
|
+
actionAnyScopesHash = options.cache[anyCacheKey];
|
|
251
|
+
|
|
252
|
+
} else {
|
|
253
|
+
//Check if we can view this type of thing in any scopes
|
|
254
|
+
var actionAnyScopes = service.actionableScopes(user, ANY_ACTION, definition, type, options);
|
|
255
|
+
|
|
256
|
+
//Get a fash hash of the scopes
|
|
257
|
+
actionAnyScopesHash = helpers.hash(actionAnyScopes);
|
|
258
|
+
options.cache[anyCacheKey] = actionAnyScopesHash;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
//////////////////////////////////
|
|
262
|
+
|
|
263
|
+
//If we have data about what they can do
|
|
264
|
+
if (actionAnyScopesHash) {
|
|
265
|
+
//Check if the item is in any of the scopes the user can access
|
|
266
|
+
var isInAnyScopes = itemScopes.some(function(scopeID) {
|
|
267
|
+
return actionAnyScopesHash[scopeID];
|
|
268
|
+
})
|
|
269
|
+
|
|
270
|
+
if (isInAnyScopes) {
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
//////////////////////////////////
|
|
276
|
+
|
|
277
|
+
//Check if the user owns this content
|
|
278
|
+
var isOwner = service.isOwner(user, item);
|
|
279
|
+
|
|
280
|
+
//If the user is the owner
|
|
281
|
+
if (isOwner) {
|
|
282
|
+
var actionOwnScopesHash;
|
|
283
|
+
var ownCacheKey = `access-${user.cacheKey}-${OWN_ACTION}-${definition}-${type}`
|
|
284
|
+
|
|
285
|
+
if (options.cache[ownCacheKey]) {
|
|
286
|
+
actionOwnScopesHash = options.cache[ownCacheKey];
|
|
287
|
+
} else {
|
|
288
|
+
|
|
289
|
+
//Check if we can view this type of thing in any scopes
|
|
290
|
+
var actionOwnScopes = service.actionableScopes(user, OWN_ACTION, definition, type, options);
|
|
291
|
+
//Get a fash hash of the scopes
|
|
292
|
+
actionOwnScopesHash = helpers.hash(actionOwnScopes);
|
|
293
|
+
options.cache[ownCacheKey] = actionOwnScopesHash;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
//If we have data about what they can do
|
|
297
|
+
if (actionOwnScopesHash) {
|
|
298
|
+
//Check if the item is in any of the scopes the user can access
|
|
299
|
+
var isInOwnScopes = itemScopes.some(function(scopeID) {
|
|
300
|
+
return actionOwnScopesHash[scopeID];
|
|
301
|
+
})
|
|
302
|
+
|
|
303
|
+
if (isInOwnScopes) {
|
|
304
|
+
return true;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
//////////////////////////////////
|
|
310
|
+
|
|
311
|
+
//No access by default
|
|
312
|
+
return false
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
///////////////////////////////////////////////
|
|
317
|
+
|
|
318
|
+
service.has = function(user, permission) {
|
|
319
|
+
|
|
320
|
+
//Allow everything if we're a super user
|
|
321
|
+
if (service.isAdministrator(user)) {
|
|
322
|
+
return true;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
var permissionsLookup = service.hashPermissions(user);
|
|
326
|
+
return permissionsLookup[permission];
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
///////////////////////////////////////////////
|
|
331
|
+
|
|
332
|
+
service.canCreate = function(user, definition, type, options) {
|
|
333
|
+
|
|
334
|
+
options = options || {}
|
|
335
|
+
options.cache = options.cache || {}
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
//Allow everything if we're a super user
|
|
339
|
+
if (service.isAdministrator(user)) {
|
|
340
|
+
return true;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
var createableScopes = service.actionableScopes(user, 'create', definition, type);
|
|
344
|
+
return createableScopes.length
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
///////////////////////////////////////////////
|
|
349
|
+
|
|
350
|
+
service.canListItem = function(user, item, options) {
|
|
351
|
+
options = options || {};
|
|
352
|
+
options.cache = options.cache || {}
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
//Check if we can list the item
|
|
356
|
+
var canList = service.checkActionAccess(user, item, 'listany', 'listown', options);
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
if (canList) {
|
|
360
|
+
return true;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
//If we can view the item then we should be able to list it also
|
|
364
|
+
var canView = service.canViewItem(user, item, options);
|
|
365
|
+
if (canView) {
|
|
366
|
+
return true;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
return false;
|
|
370
|
+
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
///////////////////////////////////////////////
|
|
375
|
+
|
|
376
|
+
service.canViewItem = function(user, item, options) {
|
|
377
|
+
|
|
378
|
+
options = options || {}
|
|
379
|
+
options.cache = options.cache || {}
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
//Check if we can view the item
|
|
384
|
+
var canView = service.checkActionAccess(user, item, 'viewany', 'viewOwn', options);
|
|
385
|
+
if (canView) {
|
|
386
|
+
return true;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
//If we can edit the item then we should be able to view it also
|
|
390
|
+
var canEdit = service.canEditItem(user, item, options);
|
|
391
|
+
if (canEdit) {
|
|
392
|
+
return true;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
return false;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
///////////////////////////////////////////////
|
|
400
|
+
|
|
401
|
+
service.canEditItem = function(user, item, options) {
|
|
402
|
+
options = options || {}
|
|
403
|
+
options.cache = options.cache || {}
|
|
404
|
+
|
|
405
|
+
var allowed = service.checkActionAccess(user, item, 'editany', 'editown', options);
|
|
406
|
+
return allowed;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
///////////////////////////////////////////////
|
|
410
|
+
|
|
411
|
+
service.canDeleteItem = function(user, item, options) {
|
|
412
|
+
options = options || {}
|
|
413
|
+
options.cache = options.cache || {}
|
|
414
|
+
|
|
415
|
+
return service.checkActionAccess(user, item, 'deleteany', 'deleteown', options);
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
///////////////////////////////////////////////
|
|
419
|
+
|
|
420
|
+
service.canRestoreItem = function(user, item, options) {
|
|
421
|
+
options = options || {}
|
|
422
|
+
options.cache = options.cache || {}
|
|
423
|
+
|
|
424
|
+
return service.checkActionAccess(user, item, 'restoreany', 'restoreown', options);
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
///////////////////////////////////////////////
|
|
428
|
+
|
|
429
|
+
service.canEraseItem = function(user, item, options) {
|
|
430
|
+
options = options || {}
|
|
431
|
+
options.cache = options.cache || {}
|
|
432
|
+
|
|
433
|
+
return service.checkActionAccess(user, item, 'eraseany', 'eraseown', options);
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
|
|
83
437
|
|
|
84
438
|
return service;
|
|
85
439
|
|
package/src/api/qik.api.js
CHANGED
|
@@ -158,6 +158,26 @@ var QikAPI = function(qik) {
|
|
|
158
158
|
|
|
159
159
|
//////////////////////////////////////////////////////////////////////////////
|
|
160
160
|
|
|
161
|
+
service.generateEndpointURL = function(endpoint, params, options) {
|
|
162
|
+
options = options || {}
|
|
163
|
+
|
|
164
|
+
//Append the access token to the url
|
|
165
|
+
if(!options.withoutToken) {
|
|
166
|
+
params.access_token = qik.auth.getCurrentToken();
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
var stripLeadingTag = endpoint[0] == '/' ? endpoint.slice(1) : endpoint;
|
|
170
|
+
return `${qik.apiURL}${endpoint}?${qik.utils.mapParameters(params)}`
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
174
|
+
|
|
175
|
+
service.wasCancelled = function(err) {
|
|
176
|
+
return axios.isCancel(err);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
180
|
+
|
|
161
181
|
function createNewAxios(adapter) {
|
|
162
182
|
|
|
163
183
|
var instance = axios.create({
|
|
@@ -177,7 +197,7 @@ var QikAPI = function(qik) {
|
|
|
177
197
|
// Add relative date and timezone to every request
|
|
178
198
|
instance.interceptors.request.use(function(config) {
|
|
179
199
|
|
|
180
|
-
if(config.withoutToken) {
|
|
200
|
+
if (config.withoutToken) {
|
|
181
201
|
return config;
|
|
182
202
|
}
|
|
183
203
|
|
|
@@ -327,68 +347,7 @@ var QikAPI = function(qik) {
|
|
|
327
347
|
*/
|
|
328
348
|
|
|
329
349
|
|
|
330
|
-
|
|
331
|
-
///////////////////////////////////////////////////
|
|
332
|
-
|
|
333
|
-
/**
|
|
334
|
-
* A helper function for generating an authenticated url for the current user
|
|
335
|
-
* @param {string} endpoint The id of the asset, or the asset object you want to download
|
|
336
|
-
* @alias api.generateEndpointURL
|
|
337
|
-
* @param {object} params
|
|
338
|
-
* @return {string} A full URL with relevant parameters included
|
|
339
|
-
* @example
|
|
340
|
-
* // returns 'https://api.qik.io/something?access_token=2352345...'
|
|
341
|
-
* qik.api.generateEndpointURL('/something');
|
|
342
|
-
*/
|
|
343
|
-
|
|
344
|
-
service.generateEndpointURL = function(path, params) {
|
|
345
|
-
|
|
346
|
-
if (!path || !String(path).length) {
|
|
347
|
-
return;
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
if (!params) {
|
|
351
|
-
params = {};
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
var url = `${qik.apiURL}${path}`;
|
|
355
|
-
|
|
356
|
-
////////////////////////////////////////
|
|
357
|
-
|
|
358
|
-
url = parameterDefaults(url, params);
|
|
359
|
-
|
|
360
|
-
////////////////////////////////////////
|
|
361
|
-
|
|
362
|
-
//Map the parameters to a query string
|
|
363
|
-
var queryParameters = qik.utils.mapParameters(params);
|
|
364
|
-
|
|
365
|
-
if (queryParameters.length) {
|
|
366
|
-
url += `?${queryParameters}`;
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
return url;
|
|
370
|
-
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
///////////////////////////////////////////////////////
|
|
374
|
-
|
|
375
|
-
function parameterDefaults(url, params) {
|
|
376
|
-
|
|
377
|
-
//If we haven't requested without token
|
|
378
|
-
if (!params.withoutToken) {
|
|
379
|
-
//Get the current token from QikAuth
|
|
380
|
-
var CurrentQikToken = qik.auth.getCurrentToken();
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
//Check to see if we have a token and none has been explicity set
|
|
384
|
-
if (!params['access_token'] && CurrentQikToken) {
|
|
385
|
-
//Use the current token by default
|
|
386
|
-
params['access_token'] = CurrentQikToken;
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
return url;
|
|
391
|
-
}
|
|
350
|
+
|
|
392
351
|
|
|
393
352
|
|
|
394
353
|
/////////////////////////////////////////////////////
|