UNPKG

fetch-jsd

Version:

A simple and typed library, based on OpenAPI spec from developer.atlassian.com, for accessing product APIs.

231 lines 8 kB
// tslint:disable /** * Service Desk Public REST API * Public REST API for Jira Service Desk * * The version of the OpenAPI document: 1001.0.0-SNAPSHOT * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; export const BASE_PATH = "https://your-domain.atlassian.net".replace(/\/+$/, ""); const isBlob = (value) => typeof Blob !== 'undefined' && value instanceof Blob; /** * This is the base class for all generated API classes. */ export class BaseAPI { constructor(configuration = new Configuration()) { this.configuration = configuration; this.fetchApi = (url, init) => __awaiter(this, void 0, void 0, function* () { let fetchParams = { url, init }; for (const middleware of this.middleware) { if (middleware.pre) { fetchParams = (yield middleware.pre(Object.assign({ fetch: this.fetchApi }, fetchParams))) || fetchParams; } } let response = yield this.configuration.fetchApi(fetchParams.url, fetchParams.init); for (const middleware of this.middleware) { if (middleware.post) { response = (yield middleware.post({ fetch: this.fetchApi, url, init, response: response.clone(), })) || response; } } return response; }); this.middleware = configuration.middleware; } withMiddleware(...middlewares) { const next = this.clone(); next.middleware = next.middleware.concat(...middlewares); return next; } withPreMiddleware(...preMiddlewares) { const middlewares = preMiddlewares.map((pre) => ({ pre })); return this.withMiddleware(...middlewares); } withPostMiddleware(...postMiddlewares) { const middlewares = postMiddlewares.map((post) => ({ post })); return this.withMiddleware(...middlewares); } request(context) { return __awaiter(this, void 0, void 0, function* () { const { url, init } = this.createFetchParams(context); const response = yield this.fetchApi(url, init); if (response.status >= 200 && response.status < 300) { return response; } throw response; }); } createFetchParams(context) { let url = this.configuration.basePath + context.path; if (context.query !== undefined && Object.keys(context.query).length !== 0) { // only add the querystring to the URL if there are query parameters. // this is done to avoid urls ending with a "?" character which buggy webservers // do not handle correctly sometimes. url += '?' + this.configuration.queryParamsStringify(context.query); } const body = (context.body instanceof FormData || isBlob(context.body)) ? context.body : JSON.stringify(context.body); const headers = Object.assign({}, this.configuration.headers, context.headers); const init = { method: context.method, headers: headers, body, credentials: this.configuration.credentials }; return { url, init }; } /** * Create a shallow clone of `this` by constructing a new instance * and then shallow cloning data members. */ clone() { const constructor = this.constructor; const next = new constructor(this.configuration); next.middleware = this.middleware.slice(); return next; } } ; export class RequiredError extends Error { constructor(field, msg) { super(msg); this.field = field; this.name = "RequiredError"; } } export const COLLECTION_FORMATS = { csv: ",", ssv: " ", tsv: "\t", pipes: "|", }; export class Configuration { constructor(configuration = {}) { this.configuration = configuration; } get basePath() { return this.configuration.basePath || BASE_PATH; } get fetchApi() { return this.configuration.fetchApi || window.fetch.bind(window); } get middleware() { return this.configuration.middleware || []; } get queryParamsStringify() { return this.configuration.queryParamsStringify || querystring; } get username() { return this.configuration.username; } get password() { return this.configuration.password; } get apiKey() { const apiKey = this.configuration.apiKey; if (apiKey) { return typeof apiKey === 'function' ? apiKey : () => apiKey; } return undefined; } get accessToken() { const accessToken = this.configuration.accessToken; if (accessToken) { return typeof accessToken === 'function' ? accessToken : () => accessToken; } return undefined; } get headers() { return this.configuration.headers; } get credentials() { return this.configuration.credentials; } } export function exists(json, key) { const value = json[key]; return value !== null && value !== undefined; } export function querystring(params, prefix = '') { return Object.keys(params) .map((key) => { const fullKey = prefix + (prefix.length ? `[${key}]` : key); const value = params[key]; if (value instanceof Array) { const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue))) .join(`&${encodeURIComponent(fullKey)}=`); return `${encodeURIComponent(fullKey)}=${multiValue}`; } if (value instanceof Object) { return querystring(value, fullKey); } return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`; }) .filter(part => part.length > 0) .join('&'); } export function mapValues(data, fn) { return Object.keys(data).reduce((acc, key) => (Object.assign(Object.assign({}, acc), { [key]: fn(data[key]) })), {}); } export class JSONApiResponse { constructor(raw, transformer = (jsonValue) => jsonValue) { this.raw = raw; this.transformer = transformer; } value() { return __awaiter(this, void 0, void 0, function* () { return this.transformer(yield this.raw.json()); }); } } export class VoidApiResponse { constructor(raw) { this.raw = raw; } value() { return __awaiter(this, void 0, void 0, function* () { return undefined; }); } } export class BlobApiResponse { constructor(raw) { this.raw = raw; } value() { return __awaiter(this, void 0, void 0, function* () { return yield this.raw.blob(); }); } ; } export class TextApiResponse { constructor(raw) { this.raw = raw; } value() { return __awaiter(this, void 0, void 0, function* () { return yield this.raw.text(); }); } ; } //# sourceMappingURL=runtime.js.map