UNPKG

@ethersphere/bee-js

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