wildberries-api
Version:
Typescript API для Wildberries, сгенерированное из Swagger. Без внешних зависимостей.
377 lines • 13.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Api = exports.HttpClient = exports.ContentType = void 0;
var ContentType;
(function (ContentType) {
ContentType["Json"] = "application/json";
ContentType["FormData"] = "multipart/form-data";
ContentType["UrlEncoded"] = "application/x-www-form-urlencoded";
ContentType["Text"] = "text/plain";
})(ContentType = exports.ContentType || (exports.ContentType = {}));
class HttpClient {
baseUrl = "";
securityData = null;
securityWorker;
abortControllers = new Map();
customFetch = (...fetchParams) => fetch(...fetchParams);
baseApiParams = {
credentials: "same-origin",
headers: {},
redirect: "follow",
referrerPolicy: "no-referrer",
};
constructor(apiConfig = {}) {
Object.assign(this, apiConfig);
}
setSecurityData = (data) => {
this.securityData = data;
};
encodeQueryParam(key, value) {
const encodedKey = encodeURIComponent(key);
return `${encodedKey}=${encodeURIComponent(typeof value === "number" ? value : `${value}`)}`;
}
addQueryParam(query, key) {
return this.encodeQueryParam(key, query[key]);
}
addArrayQueryParam(query, key) {
const value = query[key];
return value.map((v) => this.encodeQueryParam(key, v)).join("&");
}
toQueryString(rawQuery) {
const query = rawQuery || {};
const keys = Object.keys(query).filter((key) => "undefined" !== typeof query[key]);
return keys
.map((key) => (Array.isArray(query[key]) ? this.addArrayQueryParam(query, key) : this.addQueryParam(query, key)))
.join("&");
}
addQueryParams(rawQuery) {
const queryString = this.toQueryString(rawQuery);
return queryString ? `?${queryString}` : "";
}
contentFormatters = {
[ContentType.Json]: (input) => input !== null && (typeof input === "object" || typeof input === "string") ? JSON.stringify(input) : input,
[ContentType.Text]: (input) => (input !== null && typeof input !== "string" ? JSON.stringify(input) : input),
[ContentType.FormData]: (input) => Object.keys(input || {}).reduce((formData, key) => {
const property = input[key];
formData.append(key, property instanceof Blob
? property
: typeof property === "object" && property !== null
? JSON.stringify(property)
: `${property}`);
return formData;
}, new FormData()),
[ContentType.UrlEncoded]: (input) => this.toQueryString(input),
};
mergeRequestParams(params1, params2) {
return {
...this.baseApiParams,
...params1,
...(params2 || {}),
headers: {
...(this.baseApiParams.headers || {}),
...(params1.headers || {}),
...((params2 && params2.headers) || {}),
},
};
}
createAbortSignal = (cancelToken) => {
if (this.abortControllers.has(cancelToken)) {
const abortController = this.abortControllers.get(cancelToken);
if (abortController) {
return abortController.signal;
}
return void 0;
}
const abortController = new AbortController();
this.abortControllers.set(cancelToken, abortController);
return abortController.signal;
};
abortRequest = (cancelToken) => {
const abortController = this.abortControllers.get(cancelToken);
if (abortController) {
abortController.abort();
this.abortControllers.delete(cancelToken);
}
};
request = async ({ body, secure, path, type, query, format, baseUrl, cancelToken, ...params }) => {
const secureParams = ((typeof secure === "boolean" ? secure : this.baseApiParams.secure) &&
this.securityWorker &&
(await this.securityWorker(this.securityData))) ||
{};
const requestParams = this.mergeRequestParams(params, secureParams);
const queryString = query && this.toQueryString(query);
const payloadFormatter = this.contentFormatters[type || ContentType.Json];
const responseFormat = format || requestParams.format;
return this.customFetch(`${baseUrl || this.baseUrl || ""}${path}${queryString ? `?${queryString}` : ""}`, {
...requestParams,
headers: {
...(requestParams.headers || {}),
...(type && type !== ContentType.FormData ? { "Content-Type": type } : {}),
},
signal: (cancelToken ? this.createAbortSignal(cancelToken) : requestParams.signal) || null,
body: typeof body === "undefined" || body === null ? null : payloadFormatter(body),
}).then(async (response) => {
const r = response.clone();
r.data = null;
r.error = null;
const data = !responseFormat
? r
: await response[responseFormat]()
.then((data) => {
if (r.ok) {
r.data = data;
}
else {
r.error = data;
}
return r;
})
.catch((e) => {
r.error = e;
return r;
});
if (cancelToken) {
this.abortControllers.delete(cancelToken);
}
if (!response.ok)
throw data;
return data;
});
};
}
exports.HttpClient = HttpClient;
class Api extends HttpClient {
content = {
v2CardsUploadCreate: (data, params = {}) => this.request({
path: `/content/v2/cards/upload`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v2CardsUpdateCreate: (data, params = {}) => this.request({
path: `/content/v2/cards/update`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v2CardsUploadAddCreate: (data, params = {}) => this.request({
path: `/content/v2/cards/upload/add`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v2CardsMoveNmCreate: (data, params = {}) => this.request({
path: `/content/v2/cards/moveNm`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v2BarcodesCreate: (data, params = {}) => this.request({
path: `/content/v2/barcodes`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v2GetCardsListCreate: (data, query, params = {}) => this.request({
path: `/content/v2/get/cards/list`,
method: "POST",
query: query,
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v2CardsErrorListList: (query, params = {}) => this.request({
path: `/content/v2/cards/error/list`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v2CardsLimitsList: (params = {}) => this.request({
path: `/content/v2/cards/limits`,
method: "GET",
secure: true,
format: "json",
...params,
}),
v2ObjectParentAllList: (query, params = {}) => this.request({
path: `/content/v2/object/parent/all`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v2ObjectAllList: (query, params = {}) => this.request({
path: `/content/v2/object/all`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v2ObjectCharcsDetail: (subjectId, query, params = {}) => this.request({
path: `/content/v2/object/charcs/${subjectId}`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v2DirectoryColorsList: (query, params = {}) => this.request({
path: `/content/v2/directory/colors`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v2DirectoryKindsList: (query, params = {}) => this.request({
path: `/content/v2/directory/kinds`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v2DirectoryCountriesList: (query, params = {}) => this.request({
path: `/content/v2/directory/countries`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v2DirectorySeasonsList: (query, params = {}) => this.request({
path: `/content/v2/directory/seasons`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v2DirectoryTnvedList: (query, params = {}) => this.request({
path: `/content/v2/directory/tnved`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v2DirectoryVatList: (query, params = {}) => this.request({
path: `/content/v2/directory/vat`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v3MediaSaveCreate: (data, params = {}) => this.request({
path: `/content/v3/media/save`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v3MediaFileCreate: (data, params = {}) => this.request({
path: `/content/v3/media/file`,
method: "POST",
body: data,
secure: true,
type: ContentType.FormData,
format: "json",
...params,
}),
v2TagsList: (params = {}) => this.request({
path: `/content/v2/tags`,
method: "GET",
secure: true,
format: "json",
...params,
}),
v2TagCreate: (data, params = {}) => this.request({
path: `/content/v2/tag`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v2TagPartialUpdate: (id, data, params = {}) => this.request({
path: `/content/v2/tag/${id}`,
method: "PATCH",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v2TagDelete: (id, params = {}) => this.request({
path: `/content/v2/tag/${id}`,
method: "DELETE",
secure: true,
format: "json",
...params,
}),
v2TagNomenclatureLinkCreate: (data, params = {}) => this.request({
path: `/content/v2/tag/nomenclature/link`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v2CardsDeleteTrashCreate: (data, params = {}) => this.request({
path: `/content/v2/cards/delete/trash`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v2CardsRecoverCreate: (data, params = {}) => this.request({
path: `/content/v2/cards/recover`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v2GetCardsTrashCreate: (data, query, params = {}) => this.request({
path: `/content/v2/get/cards/trash`,
method: "POST",
query: query,
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
};
}
exports.Api = Api;
//# sourceMappingURL=content.js.map