v1sdk
Version:
VersionOne API Client for JavaScript
102 lines (84 loc) • 4.75 kB
JavaScript
;
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;
};