wildberries-api
Version:
Typescript API для Wildberries, сгенерированное из Swagger. Без внешних зависимостей.
491 lines • 16.6 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 {
adv = {
v1SaveAdCreate: (data, params = {}) => this.request({
path: `/adv/v1/save-ad`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v2SeacatSaveAdCreate: (data, params = {}) => this.request({
path: `/adv/v2/seacat/save-ad`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v0DeleteList: (query, params = {}) => this.request({
path: `/adv/v0/delete`,
method: "GET",
query: query,
secure: true,
...params,
}),
v0RenameCreate: (data, params = {}) => this.request({
path: `/adv/v0/rename`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
...params,
}),
v1PromotionCountList: (params = {}) => this.request({
path: `/adv/v1/promotion/count`,
method: "GET",
secure: true,
format: "json",
...params,
}),
v1PromotionAdvertsCreate: (data, query, params = {}) => this.request({
path: `/adv/v1/promotion/adverts`,
method: "POST",
query: query,
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v0CpmCreate: (data, params = {}) => this.request({
path: `/adv/v0/cpm`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
...params,
}),
v1AdvertStopCreate: (data, params = {}) => this.request({
path: `/adv/v1/advert/stop`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
...params,
}),
v1AdvertPauseCreate: (data, params = {}) => this.request({
path: `/adv/v1/advert/pause`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
...params,
}),
v1AdvertStartCreate: (data, params = {}) => this.request({
path: `/adv/v1/advert/start`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
...params,
}),
v1ItemCpmChangeCreate: (data, params = {}) => this.request({
path: `/adv/v1/item/cpm/change`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
...params,
}),
v1CountList: (params = {}) => this.request({
path: `/adv/v1/count`,
method: "GET",
secure: true,
format: "json",
...params,
}),
v1AdvertsList: (query, params = {}) => this.request({
path: `/adv/v1/adverts`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v1AdvertList: (query, params = {}) => this.request({
path: `/adv/v1/advert`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v1StatsCreate: (data, params = {}) => this.request({
path: `/adv/v1/stats`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v0StartList: (query, params = {}) => this.request({
path: `/adv/v0/start`,
method: "GET",
query: query,
secure: true,
...params,
}),
v0PauseList: (query, params = {}) => this.request({
path: `/adv/v0/pause`,
method: "GET",
query: query,
secure: true,
...params,
}),
v0StopList: (query, params = {}) => this.request({
path: `/adv/v0/stop`,
method: "GET",
query: query,
secure: true,
...params,
}),
v1BalanceList: (params = {}) => this.request({
path: `/adv/v1/balance`,
method: "GET",
secure: true,
format: "json",
...params,
}),
v1BudgetList: (query, params = {}) => this.request({
path: `/adv/v1/budget`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v1BudgetDepositCreate: (query, data, params = {}) => this.request({
path: `/adv/v1/budget/deposit`,
method: "POST",
query: query,
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v1UpdList: (query, params = {}) => this.request({
path: `/adv/v1/upd`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v1PaymentsList: (query, params = {}) => this.request({
path: `/adv/v1/payments`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v1SupplierSubjectsList: (params = {}) => this.request({
path: `/adv/v1/supplier/subjects`,
method: "GET",
secure: true,
format: "json",
...params,
}),
v2SupplierNmsCreate: (data, params = {}) => this.request({
path: `/adv/v2/supplier/nms`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v2FullstatsCreate: (data, params = {}) => this.request({
path: `/adv/v2/fullstats`,
method: "POST",
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v1AutoStatList: (query, params = {}) => this.request({
path: `/adv/v1/auto/stat`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v2AutoStatWordsList: (query, params = {}) => this.request({
path: `/adv/v2/auto/stat-words`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v2AutoDailyWordsList: (query, params = {}) => this.request({
path: `/adv/v2/auto/daily-words`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v1StatWordsList: (query, params = {}) => this.request({
path: `/adv/v1/stat/words`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v1SeacatStatList: (query, params = {}) => this.request({
path: `/adv/v1/seacat/stat`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v0StatsKeywordsList: (query, params = {}) => this.request({
path: `/adv/v0/stats/keywords`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v0ActiveList: (query, params = {}) => this.request({
path: `/adv/v0/active`,
method: "GET",
query: query,
secure: true,
...params,
}),
v1SearchSetPlusList: (query, params = {}) => this.request({
path: `/adv/v1/search/set-plus`,
method: "GET",
query: query,
secure: true,
...params,
}),
v1SearchSetPlusCreate: (query, data, params = {}) => this.request({
path: `/adv/v1/search/set-plus`,
method: "POST",
query: query,
body: data,
secure: true,
type: ContentType.Json,
format: "json",
...params,
}),
v1SearchSetPhraseCreate: (query, data, params = {}) => this.request({
path: `/adv/v1/search/set-phrase`,
method: "POST",
query: query,
body: data,
secure: true,
type: ContentType.Json,
...params,
}),
v1SearchSetStrongCreate: (query, data, params = {}) => this.request({
path: `/adv/v1/search/set-strong`,
method: "POST",
query: query,
body: data,
secure: true,
type: ContentType.Json,
...params,
}),
v1SearchSetExcludedCreate: (query, data, params = {}) => this.request({
path: `/adv/v1/search/set-excluded`,
method: "POST",
query: query,
body: data,
secure: true,
type: ContentType.Json,
...params,
}),
v1AutoGetnmtoaddList: (query, params = {}) => this.request({
path: `/adv/v1/auto/getnmtoadd`,
method: "GET",
query: query,
secure: true,
format: "json",
...params,
}),
v1AutoUpdatenmCreate: (query, data, params = {}) => this.request({
path: `/adv/v1/auto/updatenm`,
method: "POST",
query: query,
body: data,
secure: true,
type: ContentType.Json,
...params,
}),
v1AutoActiveCreate: (query, data, params = {}) => this.request({
path: `/adv/v1/auto/active`,
method: "POST",
query: query,
body: data,
secure: true,
type: ContentType.Json,
...params,
}),
v1AutoSetExcludedCreate: (query, data, params = {}) => this.request({
path: `/adv/v1/auto/set-excluded`,
method: "POST",
query: query,
body: data,
secure: true,
type: ContentType.Json,
...params,
}),
};
}
exports.Api = Api;
//# sourceMappingURL=promotion.js.map