motidata
Version:
Data retrieval library for services (e.g. App) accessing MotiMate's main Api
97 lines • 3.71 kB
JavaScript
import { ContentType, MimeTypes } from "../constants/ContentTypeHeader.js";
import { SimpleResponseHelpers, } from "../DTOs/SimpleResponseDTO.js";
import { BaseRepository, } from "./BaseRepository.js";
export class GroupRepository extends BaseRepository {
constructor(baseArgs) {
super(baseArgs.apiBaseUrl, baseArgs.publicApiKey, baseArgs.sessionRepository);
}
/**
* @throws any `fetch()` related error
* @throws any `Response.json()` related error
* @throws any {@link sessionRepository} related Error
*/
async create(groupName) {
const RESPONSE = await fetch(await this._bulildRequest({
route: "group",
method: "POST",
queryParams: new URLSearchParams({ name: groupName }),
body: groupName,
extraHeaders: new Headers({
[ContentType]: MimeTypes.textPlain,
}),
}));
return await SimpleResponseHelpers.transformToSimpleResponse(RESPONSE);
}
/**
* @throws any `fetch()` related error
* @throws any `Response.json()` related error
* @throws any {@link sessionRepository} related Error
*/
async join(joinCode) {
const RESPONSE = await fetch(await this._bulildRequest({
route: "group/join",
method: "POST",
queryParams: new URLSearchParams({ code: joinCode }),
body: joinCode,
extraHeaders: new Headers({
[ContentType]: MimeTypes.textPlain,
}),
}));
return await SimpleResponseHelpers.transformToSimpleResponse(RESPONSE);
}
/**
* @throws any `fetch()` related error
* @throws any `Response.json()` related error
* @throws any {@link sessionRepository} related Error
*/
async sendMessage(newMessageDTO) {
//TODO: if process.env.NODE_ENV === "development"
const RESPONSE = await fetch(await this._buildJsonRequest(newMessageDTO, {
route: "group/message",
method: "POST",
queryParams: new URLSearchParams({
message: newMessageDTO.content,
}),
}));
return await SimpleResponseHelpers.transformToSimpleResponse(RESPONSE);
}
/**
* @throws any `fetch()` related error
* @throws any `Response.json()` related error
* @throws any {@link sessionRepository} related Error
*/
async receiveExistingMessages() {
const RESPONSE = await fetch(await this._bulildRequest({
route: "group/message",
method: "GET",
queryParams: new URLSearchParams({ amount: "20" }),
}));
return await SimpleResponseHelpers.transformToSimpleResponse(RESPONSE);
}
/**
* @throws any `fetch()` related error
* @throws any `Response.json()` related error
* @throws any {@link sessionRepository} related Error
*/
async receiveNewMessages() {
const RESPONSE = await fetch(await this._bulildRequest({
route: "group/message",
method: "GET",
queryParams: new URLSearchParams({ amount: "2" }),
}));
return await SimpleResponseHelpers.transformToSimpleResponse(RESPONSE);
}
/**
* @throws any `fetch()` related error
* @throws any `Response.json()` related error
* @throws any {@link sessionRepository} related Error
*/
async leaveCurrentGroup() {
const RESPONSE = await fetch(await this._bulildRequest({
route: "group/leave",
method: "POST",
}));
return await SimpleResponseHelpers.transformToSimpleResponse(RESPONSE);
}
}
//# sourceMappingURL=GroupRepository.js.map