UNPKG

@ethersphere/bee-js

Version:
110 lines (109 loc) 4.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateTag = exports.deleteTag = exports.getAllTags = exports.retrieveTag = exports.createTag = void 0; const cafe_utility_1 = require("cafe-utility"); const http_1 = require("../utils/http"); const endpoint = 'tags'; /** * Create new tag on the Bee node * * @param url Bee tag URL */ async function createTag(requestOptions) { const response = await (0, http_1.http)(requestOptions, { method: 'post', url: endpoint, responseType: 'json', }); const body = cafe_utility_1.Types.asObject(response.data, { name: 'response.data' }); return { address: cafe_utility_1.Types.asEmptiableString(body.address, { name: 'address' }), seen: cafe_utility_1.Types.asNumber(body.seen, { name: 'seen' }), sent: cafe_utility_1.Types.asNumber(body.sent, { name: 'sent' }), split: cafe_utility_1.Types.asNumber(body.split, { name: 'split' }), startedAt: cafe_utility_1.Types.asString(body.startedAt, { name: 'startedAt' }), stored: cafe_utility_1.Types.asNumber(body.stored, { name: 'stored' }), synced: cafe_utility_1.Types.asNumber(body.synced, { name: 'synced' }), uid: cafe_utility_1.Types.asNumber(body.uid, { name: 'uid' }), }; } exports.createTag = createTag; /** * Retrieve tag information from Bee node * * @param url Bee tag URL * @param uid UID of tag to be retrieved */ async function retrieveTag(requestOptions, uid) { const response = await (0, http_1.http)(requestOptions, { url: `${endpoint}/${uid}`, responseType: 'json', }); const body = cafe_utility_1.Types.asObject(response.data, { name: 'response.data' }); return { address: cafe_utility_1.Types.asEmptiableString(body.address, { name: 'address' }), seen: cafe_utility_1.Types.asNumber(body.seen, { name: 'seen' }), sent: cafe_utility_1.Types.asNumber(body.sent, { name: 'sent' }), split: cafe_utility_1.Types.asNumber(body.split, { name: 'split' }), startedAt: cafe_utility_1.Types.asString(body.startedAt, { name: 'startedAt' }), stored: cafe_utility_1.Types.asNumber(body.stored, { name: 'stored' }), synced: cafe_utility_1.Types.asNumber(body.synced, { name: 'synced' }), uid: cafe_utility_1.Types.asNumber(body.uid, { name: 'uid' }), }; } exports.retrieveTag = retrieveTag; /** * Get limited listing of all tags. * * @param url * @param offset * @param limit */ async function getAllTags(requestOptions, offset, limit) { const response = await (0, http_1.http)(requestOptions, { url: endpoint, params: { offset, limit }, responseType: 'json', }); const body = cafe_utility_1.Types.asObject(response.data, { name: 'response.data' }); const tags = cafe_utility_1.Types.asArray(body.tags, { name: 'tags' }).map(x => cafe_utility_1.Types.asObject(x, { name: 'tag' })); return tags.map(x => ({ address: cafe_utility_1.Types.asEmptiableString(x.address, { name: 'address' }), seen: cafe_utility_1.Types.asNumber(x.seen, { name: 'seen' }), sent: cafe_utility_1.Types.asNumber(x.sent, { name: 'sent' }), split: cafe_utility_1.Types.asNumber(x.split, { name: 'split' }), startedAt: cafe_utility_1.Types.asString(x.startedAt, { name: 'startedAt' }), stored: cafe_utility_1.Types.asNumber(x.stored, { name: 'stored' }), synced: cafe_utility_1.Types.asNumber(x.synced, { name: 'synced' }), uid: cafe_utility_1.Types.asNumber(x.uid, { name: 'uid' }), })); } exports.getAllTags = getAllTags; /** * Removes tag from the Bee node. * @param url * @param uid */ async function deleteTag(requestOptions, uid) { await (0, http_1.http)(requestOptions, { method: 'delete', url: `${endpoint}/${uid}`, }); } exports.deleteTag = deleteTag; /** * Updates tag * @param url * @param uid * @param reference */ async function updateTag(requestOptions, uid, reference) { await (0, http_1.http)(requestOptions, { method: 'patch', url: `${endpoint}/${uid}`, data: { reference, }, }); } exports.updateTag = updateTag;