@platform/cell.client
Version:
A strongly typed HTTP client for operating with a CellOS service end-point.
89 lines (88 loc) • 3.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.HttpClientCellLinksInfo = void 0;
var common_1 = require("../common");
var HttpClientFile_1 = require("./HttpClientFile");
var HttpClientCell_1 = require("./HttpClientCell");
var HttpClientNs_1 = require("./HttpClientNs");
function HttpClientCellLinksInfo(args) {
var urls = args.urls, http = args.http, _a = args.links, links = _a === void 0 ? {} : _a;
var list = Object.keys(links).map(function (key) { return toLink({ urls: urls, http: http, key: key, value: links[key] }); });
var filter = function (type) { return list.filter(function (item) { return item.type === type; }); };
var api = {
toObject: function () { return args.links; },
get list() {
return list;
},
get files() {
return filter('FILE');
},
get cells() {
return filter('CELL');
},
get namespaces() {
return filter('NS');
},
};
return api;
}
exports.HttpClientCellLinksInfo = HttpClientCellLinksInfo;
function toLink(args) {
var http = args.http, urls = args.urls, value = args.value;
var uri = common_1.Uri.parse(value);
var type = uri.parts.type;
if (type === 'FILE') {
var client_1;
var link = common_1.Schema.File.Links.parseValue(value);
var uri_1 = link.uri;
var hash = link.query.hash || '';
var _a = common_1.Schema.File.Links.parseKey(args.key), key_1 = _a.key, name_1 = _a.name, dir = _a.dir, path = _a.path;
var res_1 = {
type: 'FILE',
value: value,
uri: uri_1,
key: key_1,
path: path,
dir: dir,
name: name_1,
hash: hash,
get http() {
return client_1 || (client_1 = (0, HttpClientFile_1.HttpClientFile)({ uri: uri_1, urls: urls, http: http }));
},
};
return res_1;
}
if (type === 'CELL') {
var key_2 = common_1.Schema.Ref.Links.parseKey(args.key).path;
var _client_1;
var uri_2 = common_1.Uri.cell(value);
var res_2 = {
type: 'CELL',
key: key_2,
value: value,
uri: uri_2,
get http() {
return _client_1 || (_client_1 = (0, HttpClientCell_1.HttpClientCell)({ uri: uri_2, urls: urls, http: http }));
},
};
return res_2;
}
if (type === 'NS') {
var key_3 = common_1.Schema.Ref.Links.parseKey(args.key).path;
var _client_2;
var uri_3 = common_1.Uri.ns(value);
var res_3 = {
type: 'NS',
key: key_3,
value: value,
uri: uri_3,
get http() {
return _client_2 || (_client_2 = (0, HttpClientNs_1.HttpClientNs)({ uri: uri_3, urls: urls, http: http }));
},
};
return res_3;
}
var key = common_1.Schema.Ref.Links.parseKey(args.key).path;
var res = { type: 'UNKNOWN', key: key, value: value };
return res;
}