UNPKG

@studyportals/sp-hs-misc

Version:

Miscellaneous code used in HouseStark's projects

114 lines 4.6 kB
import { ResilientServiceLayerRequestsSenderDecorator } from "./resilient-service-layer-requests-sender-decorator.class"; import { ServiceLayerRequestsSender } from "./service-layer-requests-sender.class"; class ServiceLayerClient { get baseServiceLayerUrl() { return this._baseServiceLayerUrl; } get maximumRetries() { return this._maximumRetries; } get getRequestsSender() { return this._getRequestsSender; } get getCachedRequestsSender() { return this._getCachedRequestsSender; } get getResilientRequestsSender() { return this._resilientRequestsSender; } constructor(superAgentRequestsFactory, baseServiceLayerUrl = "", maximumRetries = 0, userAgent = "Studyportals-HouseStark-Misc/1.0") { this.superAgentRequestsFactory = superAgentRequestsFactory; this._baseServiceLayerUrl = baseServiceLayerUrl; this._userAgent = userAgent; this._maximumRetries = maximumRetries; this.initializeRequestsSenders(); } async get(path, headers = {}) { const request = this.createGetRequest(path); for (const header in headers) { if (headers.hasOwnProperty(header)) { request.set(header, headers[header]); } } request.set("Cache-Control", "no-cache"); return this.getRequestsSender.send(request); } getCached(path, headers = {}, type = "json") { const request = this.createGetRequest(path, type); for (const header in headers) { if (headers.hasOwnProperty(header)) { request.set(header, headers[header]); } } return this.getCachedRequestsSender.send(request); } async post(path, data, headers = {}, type = "json") { const request = this.createPostRequest(path, data, type); for (const header in headers) { if (headers.hasOwnProperty(header)) { request.set(header, headers[header]); } } return this.getResilientRequestsSender.send(request); } async put(path, data, headers = {}, type = "json") { const request = this.createPutRequest(path, data, type); for (const header in headers) { if (headers.hasOwnProperty(header)) { request.set(header, headers[header]); } } return this.getResilientRequestsSender.send(request); } async delete(path, headers = {}, type = "json") { const request = this.createDeleteRequest(path, type); for (const header in headers) { if (headers.hasOwnProperty(header)) { request.set(header, headers[header]); } } return this.getResilientRequestsSender.send(request); } createGetRequest(path, type = "json") { const request = this.superAgentRequestsFactory.get(this.buildUrl(path)); request.set("Accept-Language", "en-GB"); request.type(type); return request; } createPostRequest(path, data, type = "json") { const request = this.superAgentRequestsFactory.post(this.buildUrl(path)); request.send(data); request.set("Accept-Language", "en-GB"); request.type(type); return request; } createPutRequest(path, data, type = "json") { const request = this.superAgentRequestsFactory.put(this.buildUrl(path)); request.send(data); request.set("Accept-Language", "en-GB"); request.type(type); return request; } createDeleteRequest(path, type = "json") { const request = this.superAgentRequestsFactory.delete(this.buildUrl(path)); request.set("Accept-Language", "en-GB"); request.type(type); return request; } buildUrl(path) { return `${this.baseServiceLayerUrl}${path}`; } initializeRequestsSenders() { this._getCachedRequestsSender = new ResilientServiceLayerRequestsSenderDecorator(new ServiceLayerRequestsSender({ userAgent: this._userAgent }), this.maximumRetries); this._getRequestsSender = new ResilientServiceLayerRequestsSenderDecorator(new ServiceLayerRequestsSender({ userAgent: this._userAgent }), this.maximumRetries); this._resilientRequestsSender = new ResilientServiceLayerRequestsSenderDecorator(new ServiceLayerRequestsSender({ userAgent: this._userAgent }), this.maximumRetries); } } export { ServiceLayerClient }; //# sourceMappingURL=service-layer-client.class.js.map