@ethersphere/bee-js
Version:
Javascript client for Bee
110 lines (109 loc) • 4.25 kB
JavaScript
"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;