zendesk-messaging-client
Version:
Zendesk messaging API client
48 lines (47 loc) • 1.84 kB
JavaScript
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
import { createClient as createDefaultClient, createConfig as createDefaultConfig, } from './generated/client';
export class ClientError extends Error {
constructor(message, code, status) {
super(message);
this.name = 'ClientError';
this.code = code;
this.status = status;
}
}
export function createClient(_a) {
var { subdomain } = _a, config = __rest(_a, ["subdomain"]);
const client = createDefaultClient(createDefaultConfig(Object.assign({ throwOnError: true, baseUrl: subdomain
? `https://${subdomain}.zendesk.com/sc`
: 'https://api.smooch.io' }, config)));
client.interceptors.error.use((error) => {
if (typeof error === 'object' &&
error &&
'errors' in error &&
Array.isArray(error.errors)) {
const { errors } = error;
const message = errors
.map((e) => e.title)
.filter((v) => !!v)
.join(', ');
const status = errors[0].status;
const code = errors[0].code;
if (message) {
return new ClientError(message, code, status);
}
}
return error instanceof Error
? new ClientError(error.message)
: new ClientError(String(error));
});
return client;
}