UNPKG

v1sdk

Version:
102 lines (84 loc) 4.75 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _invariant = require('invariant'); var _invariant2 = _interopRequireDefault(_invariant); var _transformDataToAsset = require('./transformDataToAsset'); var _transformDataToAsset2 = _interopRequireDefault(_transformDataToAsset); var _getV1Urls = require('./getV1Urls'); var _getV1Urls2 = _interopRequireDefault(_getV1Urls); var _Oid = require('./Oid'); var _Oid2 = _interopRequireDefault(_Oid); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = function (_ref) { var hostname = _ref.hostname, instance = _ref.instance, protocol = _ref.protocol, port = _ref.port, token = _ref.token, postFn = _ref.postFn, getFn = _ref.getFn, isBasic = _ref.isBasic; var urls = (0, _getV1Urls2.default)(hostname, instance, protocol, port); var headers = createHeaderObj(token, isBasic); return { create: function create(assetType, assetData) { (0, _invariant2.default)(assetType, 'Error: there was no `assetType` provided to create'); (0, _invariant2.default)(assetData, 'Error: there was no `assetAttributeData` provided to create'); (0, _invariant2.default)(Object.keys(assetData).length, 'Error: there was no `assetAttributeData` provided to create'); var postData = (0, _transformDataToAsset2.default)(assetData); var url = urls.rest + '/' + assetType; return postFn(url, postData, headers); }, update: function update(oidToken, assetData, changeComment) { (0, _invariant2.default)(oidToken, 'Error: there was no `oidToken` provided to update'); (0, _invariant2.default)(assetData, 'Error: there was no `assetAttributeData` provided to update'); (0, _invariant2.default)(Object.keys(assetData).length, 'Error: there was no `assetAttributeData` provided to update'); var oid = new _Oid2.default(oidToken); var postData = (0, _transformDataToAsset2.default)(assetData); var comment = changeComment ? '?comment=' + encodeURIComponent(changeComment) : ''; var url = urls.rest + '/' + oid.assetType + '/' + oid.number + comment; return postFn(url, postData, headers); }, query: function query(queryObj) { (0, _invariant2.default)(queryObj.from, 'Error: there was no `from` property on provided query: ' + queryObj); (0, _invariant2.default)(queryObj.select, 'Error: there was no `select` property on provided query: ' + queryObj); (0, _invariant2.default)(Array.isArray(queryObj.select), 'Error: `select` property must be an Array on provided query: ' + queryObj); (0, _invariant2.default)(queryObj.select.length, 'Error: `select` property must contain values on provided query: ' + queryObj); var url = urls.query; return postFn(url, queryObj, headers); }, executeOperation: function executeOperation(oidToken, operationName) { (0, _invariant2.default)(oidToken, 'Error: there was no `oidToken` provided to execute operation'); (0, _invariant2.default)(operationName, 'Error: there was no `operationName` provided to execute operation'); var oid = new _Oid2.default(oidToken); var url = urls.rest + '/' + oid.assetType + '/' + oid.number + '?op=' + operationName; return postFn(url, null, headers); }, queryDefinition: function queryDefinition(assetType) { var queryAssetType = assetType ? assetType : ''; var url = urls.meta + '/' + queryAssetType; return getFn(url, null, headers); }, getActivityStream: function getActivityStream(oidToken) { (0, _invariant2.default)(oidToken, 'Error: there was no `oidToken` provided to execute operation'); var url = urls.activityStream + '/' + oidToken; return getFn(url, null, headers); } }; }; var createHeaderObj = function createHeaderObj(token, isBasic) { var headers = { Accept: 'application/json', 'Content-Type': 'application/json' }; var hasToken = Boolean(token); var hasType = typeof isBasic !== 'undefined'; if (hasToken || hasType) { (0, _invariant2.default)(hasToken, 'Error: there was no `token` provided to the SDK'); (0, _invariant2.default)(hasType, 'Error: there was no `isBasic` provided to the SDK'); headers['Authorization'] = (isBasic ? 'Basic' : 'Bearer') + ' ' + token; // eslint-disable-line dot-notation } return headers; };