All Downloads are FREE. Search and download functionalities are using the official Maven repository.

typescript-angular.configuration.mustache Maven / Gradle / Ivy

There is a newer version: 7.6.0
Show newest version
import { HttpParameterCodec } from '@angular/common/http';
import { Param } from './param';

export interface {{configurationParametersInterfaceName}} {
    /**
     *  @deprecated Since 5.0. Use credentials instead
     */
    apiKeys?: {[ key: string ]: string};
    username?: string;
    password?: string;
    /**
     *  @deprecated Since 5.0. Use credentials instead
     */
    accessToken?: string | (() => string);
    basePath?: string;
    withCredentials?: boolean;
    /**
     * Takes care of encoding query- and form-parameters.
     */
    encoder?: HttpParameterCodec;
    /**
     * Override the default method for encoding path parameters in various
     * styles.
     * 

* See {@link README.md} for more details *

*/ encodeParam?: (param: Param) => string; /** * The keys are the names in the securitySchemes section of the OpenAPI * document. They should map to the value used for authentication * minus any standard prefixes such as 'Basic' or 'Bearer'. */ credentials?: {[ key: string ]: string | (() => string | undefined)}; } export class {{configurationClassName}} { /** * @deprecated Since 5.0. Use credentials instead */ apiKeys?: {[ key: string ]: string}; username?: string; password?: string; /** * @deprecated Since 5.0. Use credentials instead */ accessToken?: string | (() => string); basePath?: string; withCredentials?: boolean; /** * Takes care of encoding query- and form-parameters. */ encoder?: HttpParameterCodec; /** * Encoding of various path parameter * styles. *

* See {@link README.md} for more details *

*/ encodeParam: (param: Param) => string; /** * The keys are the names in the securitySchemes section of the OpenAPI * document. They should map to the value used for authentication * minus any standard prefixes such as 'Basic' or 'Bearer'. */ credentials: {[ key: string ]: string | (() => string | undefined)}; constructor(configurationParameters: {{configurationParametersInterfaceName}} = {}) { this.apiKeys = configurationParameters.apiKeys; this.username = configurationParameters.username; this.password = configurationParameters.password; this.accessToken = configurationParameters.accessToken; this.basePath = configurationParameters.basePath; this.withCredentials = configurationParameters.withCredentials; this.encoder = configurationParameters.encoder; if (configurationParameters.encodeParam) { this.encodeParam = configurationParameters.encodeParam; } else { this.encodeParam = param => this.defaultEncodeParam(param); } if (configurationParameters.credentials) { this.credentials = configurationParameters.credentials; } else { this.credentials = {}; } {{#authMethods}} // init default {{name}} credential if (!this.credentials['{{name}}']) { {{#isApiKey}} this.credentials['{{name}}'] = () => { {{! Fallback behaviour may be removed for 5.0 release. See #5062 }} if (this.apiKeys === null || this.apiKeys === undefined) { return undefined; } else { return this.apiKeys['{{name}}'] || this.apiKeys['{{keyParamName}}']; } }; {{/isApiKey}} {{#isBasic}} {{#isBasicBasic}} this.credentials['{{name}}'] = () => { return (this.username || this.password) ? btoa(this.username + ':' + this.password) : undefined; }; {{/isBasicBasic}} {{#isBasicBearer}} this.credentials['{{name}}'] = () => { return typeof this.accessToken === 'function' ? this.accessToken() : this.accessToken; }; {{/isBasicBearer}} {{/isBasic}} {{#isOAuth}} this.credentials['{{name}}'] = () => { return typeof this.accessToken === 'function' ? this.accessToken() : this.accessToken; }; {{/isOAuth}} } {{/authMethods}} } /** * Select the correct content-type to use for a request. * Uses {@link {{configurationClassName}}#isJsonMime} to determine the correct content-type. * If no content type is found return the first found type if the contentTypes is not empty * @param contentTypes - the array of content types that are available for selection * @returns the selected content-type or undefined if no selection could be made. */ public selectHeaderContentType (contentTypes: string[]): string | undefined { if (contentTypes.length === 0) { return undefined; } const type = contentTypes.find((x: string) => this.isJsonMime(x)); if (type === undefined) { return contentTypes[0]; } return type; } /** * Select the correct accept content-type to use for a request. * Uses {@link {{configurationClassName}}#isJsonMime} to determine the correct accept content-type. * If no content type is found return the first found type if the contentTypes is not empty * @param accepts - the array of content types that are available for selection. * @returns the selected content-type or undefined if no selection could be made. */ public selectHeaderAccept(accepts: string[]): string | undefined { if (accepts.length === 0) { return undefined; } const type = accepts.find((x: string) => this.isJsonMime(x)); if (type === undefined) { return accepts[0]; } return type; } /** * Check if the given MIME is a JSON MIME. * JSON MIME examples: * application/json * application/json; charset=UTF8 * APPLICATION/JSON * application/vnd.company+json * @param mime - MIME (Multipurpose Internet Mail Extensions) * @return True if the given MIME is JSON, false otherwise. */ public isJsonMime(mime: string): boolean { const jsonMime: RegExp = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i'); return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json'); } public lookupCredential(key: string): string | undefined { const value = this.credentials[key]; return typeof value === 'function' ? value() : value; } private defaultEncodeParam(param: Param): string { // This implementation exists as fallback for missing configuration // and for backwards compatibility to older typescript-angular generator versions. // It only works for the 'simple' parameter style. // Date-handling only works for the 'date-time' format. // All other styles and Date-formats are probably handled incorrectly. // // But: if that's all you need (i.e.: the most common use-case): no need for customization! const value = param.dataFormat === 'date-time' && param.value instanceof Date ? (param.value as Date).toISOString() : param.value; return encodeURIComponent(String(value)); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy