-
Notifications
You must be signed in to change notification settings - Fork 332
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add moustache templates from original repo
- Loading branch information
Showing
3 changed files
with
236 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
/* tslint:disable */ | ||
/* eslint-disable */ | ||
{{>licenseInfo}} | ||
|
||
{{^withSeparateModelsAndApi}} | ||
import type { Configuration } from './configuration'; | ||
import type { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; | ||
import globalAxios from 'axios'; | ||
{{#withNodeImports}} | ||
// URLSearchParams not necessarily used | ||
// @ts-ignore | ||
import { URL, URLSearchParams } from 'url'; | ||
{{#multipartFormData}} | ||
import FormData from 'form-data' | ||
{{/multipartFormData}} | ||
{{/withNodeImports}} | ||
// Some imports not used depending on template conditions | ||
// @ts-ignore | ||
import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from './common'; | ||
import type { RequestArgs } from './base'; | ||
// @ts-ignore | ||
import { BASE_PATH, COLLECTION_FORMATS, BaseAPI, RequiredError } from './base'; | ||
|
||
{{#models}} | ||
{{#model}}{{#isEnum}}{{>modelEnum}}{{/isEnum}}{{#oneOf}}{{#-first}}{{>modelOneOf}}{{/-first}}{{/oneOf}}{{^isEnum}}{{^oneOf}}{{>modelGeneric}}{{/oneOf}}{{/isEnum}}{{/model}} | ||
{{/models}} | ||
{{#apiInfo}}{{#apis}} | ||
{{>apiInner}} | ||
{{/apis}}{{/apiInfo}} | ||
{{/withSeparateModelsAndApi}}{{#withSeparateModelsAndApi}} | ||
{{#apiInfo}}{{#apis}}{{#operations}}export * from './{{tsApiPackage}}/{{classFilename}}'; | ||
{{/operations}}{{/apis}}{{/apiInfo}} | ||
{{/withSeparateModelsAndApi}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
/* tslint:disable */ | ||
/* eslint-disable */ | ||
{{>licenseInfo}} | ||
|
||
import type { Configuration } from './configuration'; | ||
// Some imports not used depending on template conditions | ||
// @ts-ignore | ||
import type { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; | ||
import globalAxios from 'axios'; | ||
|
||
export const BASE_PATH = "{{{basePath}}}".replace(/\/+$/, ""); | ||
|
||
/** | ||
* | ||
* @export | ||
*/ | ||
export const COLLECTION_FORMATS = { | ||
csv: ",", | ||
ssv: " ", | ||
tsv: "\t", | ||
pipes: "|", | ||
}; | ||
|
||
/** | ||
* | ||
* @export | ||
* @interface RequestArgs | ||
*/ | ||
export interface RequestArgs { | ||
url: string; | ||
options: AxiosRequestConfig; | ||
} | ||
|
||
/** | ||
* | ||
* @export | ||
* @class BaseAPI | ||
*/ | ||
export class BaseAPI { | ||
protected configuration: Configuration | undefined; | ||
constructor(configuration?: Configuration, protected basePath: string = BASE_PATH, protected axios: AxiosInstance = globalAxios) { | ||
if (configuration) { | ||
this.configuration = configuration; | ||
this.basePath = configuration.basePath || this.basePath; | ||
} | ||
} | ||
}; | ||
|
||
/** | ||
* | ||
* @export | ||
* @class RequiredError | ||
* @extends {Error} | ||
*/ | ||
export class RequiredError extends Error { | ||
constructor(public field: string, msg?: string) { | ||
super(msg); | ||
this.name = "RequiredError" | ||
} | ||
} |
142 changes: 142 additions & 0 deletions
142
sdk-template-overrides/typescript-axios/common.mustache
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,142 @@ | ||
/* tslint:disable */ | ||
/* eslint-disable */ | ||
{{>licenseInfo}} | ||
|
||
import type { Configuration } from "./configuration"; | ||
import type { RequestArgs } from "./base"; | ||
import type { AxiosInstance, AxiosResponse } from 'axios'; | ||
import { RequiredError } from "./base"; | ||
{{#withNodeImports}} | ||
import { URL, URLSearchParams } from 'url'; | ||
{{/withNodeImports}} | ||
|
||
/** | ||
* | ||
* @export | ||
*/ | ||
export const DUMMY_BASE_URL = 'https://example.com' | ||
|
||
/** | ||
* | ||
* @throws {RequiredError} | ||
* @export | ||
*/ | ||
export const assertParamExists = function (functionName: string, paramName: string, paramValue: unknown) { | ||
if (paramValue === null || paramValue === undefined) { | ||
throw new RequiredError(paramName, `Required parameter ${paramName} was null or undefined when calling ${functionName}.`); | ||
} | ||
} | ||
|
||
/** | ||
* | ||
* @export | ||
*/ | ||
export const setApiKeyToObject = async function (object: any, keyParamName: string, configuration?: Configuration) { | ||
if (configuration && configuration.apiKey) { | ||
const localVarApiKeyValue = typeof configuration.apiKey === 'function' | ||
? await configuration.apiKey(keyParamName) | ||
: await configuration.apiKey; | ||
object[keyParamName] = localVarApiKeyValue; | ||
} | ||
} | ||
|
||
/** | ||
* | ||
* @export | ||
*/ | ||
export const setBasicAuthToObject = function (object: any, configuration?: Configuration) { | ||
if (configuration && (configuration.username || configuration.password)) { | ||
object["auth"] = { username: configuration.username, password: configuration.password }; | ||
} | ||
} | ||
|
||
/** | ||
* | ||
* @export | ||
*/ | ||
export const setBearerAuthToObject = async function (object: any, configuration?: Configuration) { | ||
if (configuration && configuration.accessToken) { | ||
const accessToken = typeof configuration.accessToken === 'function' | ||
? await configuration.accessToken() | ||
: await configuration.accessToken; | ||
object["Authorization"] = "Bearer " + accessToken; | ||
} | ||
} | ||
|
||
/** | ||
* | ||
* @export | ||
*/ | ||
export const setOAuthToObject = async function (object: any, name: string, scopes: string[], configuration?: Configuration) { | ||
if (configuration && configuration.accessToken) { | ||
const localVarAccessTokenValue = typeof configuration.accessToken === 'function' | ||
? await configuration.accessToken(name, scopes) | ||
: await configuration.accessToken; | ||
object["Authorization"] = "Bearer " + localVarAccessTokenValue; | ||
} | ||
} | ||
|
||
function setFlattenedQueryParams(urlSearchParams: URLSearchParams, parameter: any, key: string = ""): void { | ||
if (parameter == null) return; | ||
if (typeof parameter === "object") { | ||
if (Array.isArray(parameter)) { | ||
(parameter as any[]).forEach(item => setFlattenedQueryParams(urlSearchParams, item, key)); | ||
} | ||
else { | ||
Object.keys(parameter).forEach(currentKey => | ||
setFlattenedQueryParams(urlSearchParams, parameter[currentKey], `${key}${key !== '' ? '.' : ''}${currentKey}`) | ||
); | ||
} | ||
} | ||
else { | ||
if (urlSearchParams.has(key)) { | ||
urlSearchParams.append(key, parameter); | ||
} | ||
else { | ||
urlSearchParams.set(key, parameter); | ||
} | ||
} | ||
} | ||
|
||
/** | ||
* | ||
* @export | ||
*/ | ||
export const setSearchParams = function (url: URL, ...objects: any[]) { | ||
const searchParams = new URLSearchParams(url.search); | ||
setFlattenedQueryParams(searchParams, objects); | ||
url.search = searchParams.toString(); | ||
} | ||
|
||
/** | ||
* | ||
* @export | ||
*/ | ||
export const serializeDataIfNeeded = function (value: any, requestOptions: any, configuration?: Configuration) { | ||
const nonString = typeof value !== 'string'; | ||
const needsSerialization = nonString && configuration && configuration.isJsonMime | ||
? configuration.isJsonMime(requestOptions.headers['Content-Type']) | ||
: nonString; | ||
return needsSerialization | ||
? JSON.stringify(value !== undefined ? value : {}) | ||
: (value || ""); | ||
} | ||
|
||
/** | ||
* | ||
* @export | ||
*/ | ||
export const toPathString = function (url: URL) { | ||
return url.pathname + url.search + url.hash | ||
} | ||
|
||
/** | ||
* | ||
* @export | ||
*/ | ||
export const createRequestFunction = function (axiosArgs: RequestArgs, globalAxios: AxiosInstance, BASE_PATH: string, configuration?: Configuration) { | ||
return <T = unknown, R = AxiosResponse<T>>(axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { | ||
const axiosRequestArgs = {...axiosArgs.options, url: (configuration?.basePath || basePath) + axiosArgs.url}; | ||
return axios.request<T, R>(axiosRequestArgs); | ||
}; | ||
} |