UNPKG

dcard

Version:

👫 Unofficial Dcard API wrapper for Node.js developers.

151 lines (109 loc) • 4.04 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.api = exports.parseJSON = exports.filterError = undefined; var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); var _typeof2 = require('babel-runtime/helpers/typeof'); var _typeof3 = _interopRequireDefault(_typeof2); /** * @private * The api function that make call to the Dcard server. * Normally you won't be using this function directly. */ var api = exports.api = function () { var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(url, options, customApiPrefix) { var csrfToken, headers, fetchUrl, res; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.t0 = CLIENT.csrfToken; if (_context.t0) { _context.next = 5; break; } _context.next = 4; return CLIENT.init(); case 4: _context.t0 = _context.sent.csrfToken; case 5: csrfToken = _context.t0; headers = { Cookie: CLIENT.cookie, 'x-csrf-token': csrfToken }; fetchUrl = customApiPrefix ? HOST + '/' + customApiPrefix + '/' + url : HOST + '/' + _constants2.default.apiV1 + '/' + url; console.log(fetchUrl); _context.next = 11; return (0, _isomorphicFetch2.default)(fetchUrl, (0, _lodash.merge)(setupRequestOptions(options), { headers: headers })); case 11: res = _context.sent; csrfToken = res.headers.get('x-csrf-token'); if (csrfToken) { CLIENT.updateCSRFToken(csrfToken); } CLIENT.updateCookies(res.headers.getAll('set-cookie').join(';')); return _context.abrupt('return', res); case 16: case 'end': return _context.stop(); } } }, _callee, this); })); return function api(_x2, _x3, _x4) { return _ref.apply(this, arguments); }; }(); var _filterError = require('./filterError'); Object.defineProperty(exports, 'filterError', { enumerable: true, get: function get() { return _interopRequireDefault(_filterError).default; } }); var _parseJSON = require('./parseJSON'); Object.defineProperty(exports, 'parseJSON', { enumerable: true, get: function get() { return _interopRequireDefault(_parseJSON).default; } }); var _isomorphicFetch = require('isomorphic-fetch'); var _isomorphicFetch2 = _interopRequireDefault(_isomorphicFetch); var _lodash = require('lodash'); var _constants = require('./constants'); var _constants2 = _interopRequireDefault(_constants); var _dcardClient = require('./dcardClient'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var HOST = _constants2.default.host; var CLIENT = new _dcardClient.DcardClient(); /** * @private * Setup the fetch request options. */ function setupRequestOptions() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var option = (0, _lodash.merge)({ method: 'GET', headers: { Accept: 'application/json' } }, options); // only browser has FormData if (typeof FormData !== 'undefined' && options.body instanceof FormData) { return option; } var type = (0, _typeof3.default)(options.body); if (type === 'object' || type === 'boolean') { option.body = (0, _stringify2.default)(option.body) || ''; option.headers['Content-Type'] = 'application/json'; } return option; }