UNPKG

stratumn-sdk

Version:
167 lines (130 loc) 4.13 kB
import json from 'httpplease/plugins/json'; import httpplease from 'httpplease'; var request = httpplease.use(json); function send(method, url, args) { return new Promise(function (resolve, reject) { request({ method: method, url: url, body: args }, function (err, res) { var error = err || res.body && res.body.meta && res.body.meta.errorMessage; if (error) { reject(error); } else { resolve(res); } }); }); } function get(url) { return send('GET', url); } function post(url, args) { return send('POST', url, args); } var config = { baseUrl: 'https://stratumn.rocks', applicationUrl: 'https://%s.stratumn.rocks' }; function linkify(app, obj) { Object.keys(app.agentInfo.functions).filter(function (key) { return ['init', 'catchAll'].indexOf(key) < 0; }).forEach(function (key) { /*eslint-disable*/ obj[key] = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } var url = config.applicationUrl.replace('%s', app.name) + '/links/' + obj.meta.linkHash + '/' + key; /*eslint-enable*/ return post(url, args).then(function (res) { return linkify(app, res.body); }); }; }); /*eslint-disable*/ obj.getPrev = function () { /*eslint-enable*/ if (obj.link.meta.prevLinkHash) { return app.getLink(obj.link.meta.prevLinkHash); } return Promise.resolve(null); }; /*eslint-disable*/ obj.getBranches = function (tags) { /*eslint-enable*/ return app.getBranches(obj.meta.linkHash, tags); }; /*eslint-disable*/ obj.load = function () { /*eslint-enable*/ return app.getLink(obj.meta.linkHash); }; return obj; } function createMap(app) { var url = config.applicationUrl.replace('%s', app.name) + '/maps'; for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } return post(url, args).then(function (res) { return linkify(app, res.body); }); } function getLink(app, linkHash) { var url = config.applicationUrl.replace('%s', app.name) + '/links/' + linkHash; return get(url).then(function (res) { return linkify(app, res.body); }); } function getMap(app, mapId) { var tags = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2]; var query = ''; if (tags && tags.length) { query = '?tags=' + tags.join('&tags='); } var url = config.applicationUrl.replace('%s', app.name) + '/maps/' + mapId + query; return get(url).then(function (res) { return res.body.map(function (link) { return linkify(app, link); }); }); } function getMapIds(agent) { return get(agent.url + '/maps').then(function (res) { return res.body; }); } function getBranches(app, linkHash) { var tags = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2]; var query = ''; if (tags && tags.length) { query = '?tags=' + tags.join('&tags='); } var url = config.applicationUrl.replace('%s', app.name) + '/branches/' + linkHash + query; return get(url).then(function (res) { return res.body.map(function (link) { return linkify(app, link); }); }); } function getApplication(appName, appLocation) { var url = appLocation || config.applicationUrl.replace('%s', appName); return get(url).then(function (res) { var app = res.body; app.url = url; app.createMap = createMap.bind(null, app); app.getLink = getLink.bind(null, app); app.getMap = getMap.bind(null, app); app.getBranches = getBranches.bind(null, app); app.getMapIds = getMapIds.bind(null, app); return app; }); } function loadLink(segment) { return getApplication(segment.meta.application, segment.meta.applicationLocation).then(function (app) { var url = segment.meta.linkLocation; return get(url).then(function (res) { return linkify(app, res.body); }); }); } export { getApplication, loadLink, config }; //# sourceMappingURL=stratumn-sdk.mjs.map