25 lines
745 B
JavaScript
25 lines
745 B
JavaScript
|
import {topicUrlJsonPoll, fetchLinesIterator, topicUrl} from "./utils";
|
||
|
|
||
|
class Api {
|
||
|
static async poll(baseUrl, topic) {
|
||
|
const url = topicUrlJsonPoll(baseUrl, topic);
|
||
|
const messages = [];
|
||
|
console.log(`[Api] Polling ${url}`);
|
||
|
for await (let line of fetchLinesIterator(url)) {
|
||
|
messages.push(JSON.parse(line));
|
||
|
}
|
||
|
return messages.sort((a, b) => { return a.time < b.time ? 1 : -1; }); // Newest first
|
||
|
}
|
||
|
|
||
|
static async publish(baseUrl, topic, message) {
|
||
|
const url = topicUrl(baseUrl, topic);
|
||
|
console.log(`[Api] Publishing message to ${url}`);
|
||
|
await fetch(url, {
|
||
|
method: 'PUT',
|
||
|
body: message
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default Api;
|