UNPKG

@ingestkorea/client-sens

Version:

INGESTKOREA SDK Naver Cloud Platform SENS Client for Node.js.

50 lines (49 loc) 1.97 kB
import { NodeHttpHandler } from "@ingestkorea/util-http-handler"; import { IngestkoreaError } from "@ingestkorea/util-error-handler"; import { middlewareNcpSigner, middlewareIngestkoreaMetadata, middlewareSortHeaders, middlewareRetry, } from "./middleware"; export class SensClient { constructor(config) { this.config = { credentials: resolveCredentials(config), serviceId: resolveServiceId(config), }; this.requestHandler = new NodeHttpHandler({ connectionTimeout: 3000, socketTimeout: 3000 }); } async send(command) { let input = command.input; let request = await command.serialize(input, this.config); request = await middlewareNcpSigner(request, this.config); request = await middlewareIngestkoreaMetadata(request, this.config); request = await middlewareSortHeaders(request, this.config); let response = await middlewareRetry(request, this.config, this.requestHandler); let output = await command.deserialize(response); return output; } } const resolveCredentials = (config) => { const { credentials } = config; if (!credentials) throw new IngestkoreaError({ code: 401, type: "Unauthorized", message: "Invalid Credentials", description: "Invalid Credentials", }); return credentials; }; const resolveServiceId = (config) => { const { serviceId } = config; const lastError = new IngestkoreaError({ code: 401, type: "Unauthorized", message: "Invalid Credentials", description: "Invalid ServiceId", }); if (!serviceId || !Object.keys(serviceId).length) throw lastError; return { push: serviceId.push != undefined ? serviceId.push : undefined, sms: serviceId.sms != undefined ? serviceId.sms : undefined, kakao: serviceId.kakao != undefined ? serviceId.kakao : undefined, }; };