260 lines
		
	
	
	
		
			8.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			260 lines
		
	
	
	
		
			8.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
{{>licenseInfo}}
 | 
						|
 | 
						|
{{#jqueryAlreadyImported}}
 | 
						|
declare var $ : any;
 | 
						|
{{/jqueryAlreadyImported}}
 | 
						|
{{^jqueryAlreadyImported}}
 | 
						|
import * as $ from 'jquery';
 | 
						|
{{/jqueryAlreadyImported}}
 | 
						|
import * as models from '../model/models';
 | 
						|
import { COLLECTION_FORMATS } from '../variables';
 | 
						|
import { Configuration } from '../configuration';
 | 
						|
 | 
						|
/* tslint:disable:no-unused-variable member-ordering */
 | 
						|
 | 
						|
{{#operations}}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
{{#description}}
 | 
						|
/**
 | 
						|
 * {{&description}}
 | 
						|
 */
 | 
						|
{{/description}}
 | 
						|
export class {{classname}} {
 | 
						|
    protected basePath = '{{{basePath}}}';
 | 
						|
    public defaultHeaders: Array<string> = [];
 | 
						|
    public defaultExtraJQueryAjaxSettings?: JQueryAjaxSettings = null;
 | 
						|
    public configuration: Configuration = new Configuration();
 | 
						|
 | 
						|
    constructor(basePath?: string, configuration?: Configuration, defaultExtraJQueryAjaxSettings?: JQueryAjaxSettings) {
 | 
						|
        if (basePath) {
 | 
						|
            this.basePath = basePath;
 | 
						|
        }
 | 
						|
        if (configuration) {
 | 
						|
            this.configuration = configuration;
 | 
						|
        }
 | 
						|
        if (defaultExtraJQueryAjaxSettings) {
 | 
						|
            this.defaultExtraJQueryAjaxSettings = defaultExtraJQueryAjaxSettings;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    private extendObj<T1, T2 extends T1>(objA: T2, objB: T2): T1|T2 {
 | 
						|
        for (let key in objB) {
 | 
						|
            if (objB.hasOwnProperty(key)) {
 | 
						|
                objA[key] = objB[key];
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return objA;
 | 
						|
    }
 | 
						|
 | 
						|
{{#operation}}
 | 
						|
 | 
						|
    /**
 | 
						|
     * {{¬es}}
 | 
						|
     {{#summary}}
 | 
						|
     * @summary {{&summary}}
 | 
						|
     {{/summary}}
 | 
						|
     {{#allParams}}
 | 
						|
     * @param {{paramName}} {{description}}
 | 
						|
     {{/allParams}}
 | 
						|
     */
 | 
						|
    public {{nickname}}({{#allParams}}{{paramName}}{{^required}}?{{/required}}: {{{dataType}}}, {{/allParams}}extraJQueryAjaxSettings?: JQueryAjaxSettings): JQueryPromise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}any{{/returnType}} > {
 | 
						|
        let localVarPath = this.basePath + '{{{path}}}'{{#pathParams}}.replace('{' + '{{baseName}}' + '}', encodeURIComponent(String({{paramName}}))){{/pathParams}};
 | 
						|
 | 
						|
        let queryParameters: any = {};
 | 
						|
        let headerParams: any = {};
 | 
						|
{{#hasFormParams}}
 | 
						|
        let formParams = new FormData();
 | 
						|
        let reqHasFile = false;
 | 
						|
 | 
						|
{{/hasFormParams}}
 | 
						|
{{#allParams}}
 | 
						|
{{#required}}
 | 
						|
        // verify required parameter '{{paramName}}' is not null or undefined
 | 
						|
        if ({{paramName}} === null || {{paramName}} === undefined) {
 | 
						|
            throw new Error('Required parameter {{paramName}} was null or undefined when calling {{nickname}}.');
 | 
						|
        }
 | 
						|
 | 
						|
{{/required}}
 | 
						|
{{/allParams}}
 | 
						|
{{#queryParams}}
 | 
						|
        {{#isListContainer}}
 | 
						|
        if ({{paramName}}) {
 | 
						|
        {{#isCollectionFormatMulti}}
 | 
						|
            {{paramName}}.forEach((element: any) => {
 | 
						|
                queryParameters['{{baseName}}'].push(element);
 | 
						|
            });
 | 
						|
        {{/isCollectionFormatMulti}}
 | 
						|
        {{^isCollectionFormatMulti}}
 | 
						|
            queryParameters['{{baseName}}'] = {{paramName}}.join(COLLECTION_FORMATS['{{collectionFormat}}']);
 | 
						|
        {{/isCollectionFormatMulti}}
 | 
						|
        }
 | 
						|
        {{/isListContainer}}
 | 
						|
        {{^isListContainer}}
 | 
						|
        if ({{paramName}} !== null && {{paramName}} !== undefined) {
 | 
						|
        {{#isDateTime}}
 | 
						|
            queryParameters['{{baseName}}'] = {{paramName}}.toISOString();
 | 
						|
        {{/isDateTime}}
 | 
						|
        {{^isDateTime}}
 | 
						|
            {{#isDate}}
 | 
						|
            queryParameters['{{baseName}}'] = {{paramName}}.toISOString();
 | 
						|
            {{/isDate}}
 | 
						|
            {{^isDate}}
 | 
						|
            queryParameters['{{baseName}}'] = <string><any>{{paramName}};
 | 
						|
            {{/isDate}}
 | 
						|
        {{/isDateTime}}
 | 
						|
        }
 | 
						|
        {{/isListContainer}}
 | 
						|
{{/queryParams}}
 | 
						|
 | 
						|
        localVarPath = localVarPath + "?" + $.param(queryParameters);
 | 
						|
{{#formParams}}
 | 
						|
{{#isFile}}
 | 
						|
        reqHasFile = true;
 | 
						|
        formParams.append("{{baseName}}", {{paramName}});
 | 
						|
{{/isFile}}
 | 
						|
{{^isFile}}
 | 
						|
        {{#isListContainer}}
 | 
						|
        if ({{paramName}}) {
 | 
						|
        {{#isCollectionFormatMulti}}
 | 
						|
            {{paramName}}.forEach((element: any) => {
 | 
						|
                formParams.append('{{baseName}}', element);
 | 
						|
            });
 | 
						|
        {{/isCollectionFormatMulti}}
 | 
						|
        {{^isCollectionFormatMulti}}
 | 
						|
            formParams.append('{{baseName}}', {{paramName}}.join(COLLECTION_FORMATS['{{collectionFormat}}']));
 | 
						|
        {{/isCollectionFormatMulti}}
 | 
						|
        }
 | 
						|
        {{/isListContainer}}
 | 
						|
        {{^isListContainer}}
 | 
						|
        if ({{paramName}} !== null && {{paramName}} !== undefined) {
 | 
						|
            formParams.append('{{baseName}}', <any>{{paramName}});
 | 
						|
        }
 | 
						|
        {{/isListContainer}}
 | 
						|
{{/isFile}}
 | 
						|
{{/formParams}}
 | 
						|
{{#headerParams}}
 | 
						|
        {{#isListContainer}}
 | 
						|
        if ({{paramName}}) {
 | 
						|
            headerParams['{{baseName}}'] = {{paramName}}.join(COLLECTION_FORMATS['{{collectionFormat}}']);
 | 
						|
        }
 | 
						|
        {{/isListContainer}}
 | 
						|
        {{^isListContainer}}
 | 
						|
        headerParams['{{baseName}}'] = String({{paramName}});
 | 
						|
        {{/isListContainer}}
 | 
						|
 | 
						|
{{/headerParams}}
 | 
						|
        // to determine the Content-Type header
 | 
						|
        let consumes: string[] = [
 | 
						|
            {{#consumes}}
 | 
						|
            '{{{mediaType}}}'{{#hasMore}}, {{/hasMore}}
 | 
						|
            {{/consumes}}
 | 
						|
        ];
 | 
						|
 | 
						|
        // to determine the Accept header
 | 
						|
        let produces: string[] = [
 | 
						|
            {{#produces}}
 | 
						|
            '{{{mediaType}}}'{{#hasMore}}, {{/hasMore}}
 | 
						|
            {{/produces}}
 | 
						|
        ];
 | 
						|
 | 
						|
{{#authMethods}}
 | 
						|
        // authentication ({{name}}) required
 | 
						|
{{#isApiKey}}
 | 
						|
{{#isKeyInHeader}}
 | 
						|
        if (this.configuration.apiKey) {
 | 
						|
            headerParams['{{keyParamName}}'] = this.configuration.apiKey;
 | 
						|
        }
 | 
						|
 | 
						|
{{/isKeyInHeader}}
 | 
						|
{{#isKeyInQuery}}
 | 
						|
        if (this.configuration.apiKey) {
 | 
						|
            queryParameters.set('{{keyParamName}}', this.configuration.apiKey);
 | 
						|
        }
 | 
						|
 | 
						|
{{/isKeyInQuery}}
 | 
						|
{{/isApiKey}}
 | 
						|
{{#isBasic}}
 | 
						|
        // http basic authentication required
 | 
						|
        if (this.configuration.username || this.configuration.password) {
 | 
						|
            headerParams['Authorization'] = 'Basic ' + btoa(this.configuration.username + ':' + this.configuration.password);
 | 
						|
        }
 | 
						|
 | 
						|
{{/isBasic}}
 | 
						|
{{#isOAuth}}
 | 
						|
        // oauth required
 | 
						|
        if (this.configuration.accessToken) {
 | 
						|
            let accessToken = typeof this.configuration.accessToken === 'function'
 | 
						|
                ? this.configuration.accessToken()
 | 
						|
                : this.configuration.accessToken;
 | 
						|
            headerParams['Authorization'] = 'Bearer ' + accessToken;
 | 
						|
        }
 | 
						|
 | 
						|
{{/isOAuth}}
 | 
						|
{{/authMethods}}
 | 
						|
{{#hasFormParams}}
 | 
						|
        if (!reqHasFile) {
 | 
						|
            headerParams['Content-Type'] = 'application/x-www-form-urlencoded';
 | 
						|
        }
 | 
						|
 | 
						|
{{/hasFormParams}}
 | 
						|
 | 
						|
{{#bodyParam}}
 | 
						|
        headerParams['Content-Type'] = 'application/json';
 | 
						|
 | 
						|
{{/bodyParam}}
 | 
						|
        let requestOptions: JQueryAjaxSettings = {
 | 
						|
            url: localVarPath,
 | 
						|
            type: '{{httpMethod}}',
 | 
						|
            headers: headerParams,
 | 
						|
            processData: false
 | 
						|
        };
 | 
						|
 | 
						|
{{#bodyParam}}
 | 
						|
        requestOptions.data = JSON.stringify({{paramName}});
 | 
						|
{{/bodyParam}}
 | 
						|
        if (headerParams['Content-Type']) {
 | 
						|
            requestOptions.contentType = headerParams['Content-Type'];
 | 
						|
        }
 | 
						|
{{#hasFormParams}}
 | 
						|
        requestOptions.data = formParams;
 | 
						|
        if (reqHasFile) {
 | 
						|
            requestOptions.contentType = false;
 | 
						|
        }
 | 
						|
{{/hasFormParams}}
 | 
						|
 | 
						|
        if (extraJQueryAjaxSettings) {
 | 
						|
            requestOptions = (<any>Object).assign(requestOptions, extraJQueryAjaxSettings);
 | 
						|
        }
 | 
						|
 | 
						|
        if (this.defaultExtraJQueryAjaxSettings) {
 | 
						|
            requestOptions = (<any>Object).assign(requestOptions, this.defaultExtraJQueryAjaxSettings);
 | 
						|
        }
 | 
						|
 | 
						|
        let dfd = $.Deferred();
 | 
						|
        $.ajax(requestOptions).then(
 | 
						|
            (data: {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}any{{/returnType}}, textStatus: string, jqXHR: JQueryXHR) =>
 | 
						|
                dfd.resolve(jqXHR, data),
 | 
						|
            (xhr: JQueryXHR, textStatus: string, errorThrown: string) => {
 | 
						|
                    if(false){}
 | 
						|
                {{#responses}}
 | 
						|
                    else if (xhr.status == {{{code}}} && {{{code}}} >= 400)
 | 
						|
                    {
 | 
						|
                        dfd.reject(new {{dataType}}Exception(<{{dataType}}>xhr.responseJSON))
 | 
						|
                    }
 | 
						|
 | 
						|
                {{/responses}}
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
 | 
						|
                        dfd.reject(errorThrown)
 | 
						|
                    }
 | 
						|
            }
 | 
						|
        );
 | 
						|
        return dfd.promise();
 | 
						|
    }
 | 
						|
 | 
						|
{{/operation}}
 | 
						|
}
 | 
						|
{{/operations}}
 |