UNPKG

@viyet/magento-client

Version:

Sotheby's Home Custom Magento API Client

123 lines 4.68 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const axios_1 = __importDefault(require("axios")); const get_1 = __importDefault(require("lodash/get")); const path_to_regexp_1 = __importDefault(require("path-to-regexp")); const qs_1 = __importDefault(require("qs")); var Transport; (function (Transport) { /** * Transport.API class handles communication with API */ class API { /** * Transport.API class handles communication with API * * @param clientConfig - Client Configuration */ constructor(clientConfig) { this.config = clientConfig; } /** * Triggers a GET request to an API route * * @param route - API route * @param headers - Optional headers to send in request * * @returns A Promise that resolves to an axios response */ getFromApiRoute(route, headers) { const requestConfig = { headers: headers || {}, method: "get", route: route, }; return this.requestToApi(requestConfig); } /** * Triggers a POST request to an API route * * @param route - API route * @param data - data object to send in POST request * @param headers - Optional headers to send in request * * @returns A Promise that resolves to an axios response */ postToApiRoute(route, data, headers) { const requestConfig = { data: data, headers: headers || {}, method: "post", route: route, }; return this.requestToApi(requestConfig); } /** * Triggers a PUT request to an API route * * @param route - API route * @param data - data object to send in POST request * @param headers - Optional headers to send in request * * @returns A Promise that resolves to an axios response */ putToApiRoute(route, data, headers) { const requestConfig = { data: data, headers: headers || {}, method: "put", route: route, }; return this.requestToApi(requestConfig); } /** * Triggers a request to API * * @param request * * @returns A promise that resolves to an axios response */ requestToApi(request) { const defaultRequestConfig = { baseURL: this.config.api.baseUrl, data: {}, headers: {}, method: "get", params: {}, responseType: "json", timeout: 30000, url: "", withCredentials: true, transformRequest: [function (data, headers) { if (typeof data === "string") { return data; } else if (typeof data === "object") { if (headers["Content-Type"] && headers["Content-Type"].indexOf("application/x-www-form-urlencoded") !== -1) { return qs_1.default.stringify(data); } else { return JSON.stringify(data); } } return data; }], }; let requestUrl = get_1.default(this.config.api.routes, request.route.key); if (request.route.transforms) { const toPath = path_to_regexp_1.default.compile(requestUrl); requestUrl = toPath(request.route.transforms); } const requestConfig = Object.assign({}, defaultRequestConfig, request, { params: request.route.params || {}, url: requestUrl }); if (this.config.api.debug === true) { console.log("request %o", requestConfig); } return axios_1.default(requestConfig); } } Transport.API = API; })(Transport = exports.Transport || (exports.Transport = {})); //# sourceMappingURL=Transport.js.map