@ethersphere/bee-js
Version:
Javascript client for Bee
162 lines • 3.5 kB
JavaScript
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
}
});
}