UNPKG

2.74 kBJavaScriptView Raw
1/**
2 * Imports
3 */
4
5/**
6 * Credential middleware
7 */
8
9'use strict';
10
11Object.defineProperty(exports, '__esModule', {
12 value: true
13});
14
15var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
16
17var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
18
19function query(pattern, name, getToken) {
20 return function (_ref) {
21 var getState = _ref.getState;
22 return function (next) {
23 return function (action) {
24 return action.type === 'FETCH' && pattern.test(action.payload.url) ? next(_extends({}, action, { payload: { url: decorate(getState(), action.payload.url) } })) : next(action);
25 };
26 };
27 };
28
29 function decorate(state, url) {
30 var token = getToken(state);
31 if (!token) return url;
32
33 var _url$split = url.split('?');
34
35 var _url$split2 = _slicedToArray(_url$split, 2);
36
37 var base = _url$split2[0];
38 var _url$split2$1 = _url$split2[1];
39 var qs = _url$split2$1 === undefined ? '' : _url$split2$1;
40
41 var param = [name, token].map(encodeURIComponent).join('=');
42
43 return [base, qs.split('&').concat(param).filter(Boolean).join('&')].join('?');
44 }
45}
46
47function bearer(pattern, getToken) {
48 return function (_ref2) {
49 var getState = _ref2.getState;
50 return function (next) {
51 return function (action) {
52 return action.type === 'FETCH' && pattern.test(action.payload.url) ? next(_extends({}, action, { payload: { params: _extends({}, action.payload.params, { headers: decorate(getState(), (action.payload.params || {}).headers) }) } })) : next(action);
53 };
54 };
55 };
56
57 function decorate(state) {
58 var headers = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
59
60 var token = getToken(state);
61 if (!token) return headers;
62
63 return _extends({}, headers, {
64 Authorization: 'Bearer ' + token
65 });
66 }
67}
68
69/**
70 * Exports
71 */
72
73exports['default'] = {
74 query: query,
75 bearer: bearer
76};
77module.exports = exports['default'];
\No newline at end of file