@ingestkorea/client-sens
Version:
INGESTKOREA SDK Naver Cloud Platform SENS Client for Node.js.
50 lines (49 loc) • 1.97 kB
JavaScript
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,
};
};