import { IHttp, IHttpRequest, IHttpResponse, IRead, } from "@rocket.chat/apps-engine/definition/accessors"; export class RcHttp implements IHttp { private readonly baseUrl = "http://localhost:3000/api/v1"; private readonly http: IHttp; private readonly read: IRead; constructor(http: IHttp, read: IRead) { this.http = http; this.read = read; } public async get(url: string, content?: any): Promise { return this.http.get( this.buildUrl(url), await this.buildOptions(content), ); } public async post(url: string, content?: any): Promise { return this.http.post( this.buildUrl(url), await this.buildOptions(content), ); } public async put(url: string, content?: any): Promise { return this.http.put( this.buildUrl(url), await this.buildOptions(content), ); } public async del(url: string, content?: any): Promise { return this.http.del( this.buildUrl(url), await this.buildOptions(content), ); } public async patch(url: string, content?: any): Promise { return this.http.patch( this.buildUrl(url), await this.buildOptions(content), ); } private buildUrl(url: string): string { return `${this.baseUrl}/${url}`; } private async buildOptions(content?: any): Promise { const options: IHttpRequest = { headers: { "X-User-Id": await this.read .getEnvironmentReader() .getSettings() .getValueById("rc-user-id"), "X-Auth-Token": await this.read .getEnvironmentReader() .getSettings() .getValueById("rc-token"), "Content-Type": "application/json", }, }; if (content !== undefined) { options.content = JSON.stringify(content); } return options; } }