// Import the Node-Rest-Client Library import { Client } from 'node-rest-client'; import { getNopeLogger } from '../../../../lib/logger/getLogger'; {{#if imports.types}} import { {{#joinList imports.types}}{{this}}{{/joinList}} } from "{{imports.path}}" {{/if}} {{#if tag}} {{#each tag}} {{this}} {{/each}} {{/if}} export class {{operationGroup.operationsGroupName}} { // Default URI which will be used to combine the Requests public uri = ''; public token = ''; public client = new Client(); protected _logger = getNopeLogger('xetics.{{operationGroup.operationsGroupName}}'); {{#each operationGroup.operations}} // Checkout the Original Link at {{getDoku operationName}} public {{operationName}}({{#joinList operationParams}} {{paramDisplayName}}?:{{paramType}} {{/joinList}}):Promise<{{responsesType}}>{ const _this = this; // Define the Parameters and Path Object let _data: any = {}; const _path: any = {}; {{#if operationParams}} {{!-- {{#each operationParams}} /////////////////////////////////////////// // OP => // Inbody: {{this.inBody}} // InPath: {{this.inPath}} // Parameter-Name: {{paramName}} // Display-Name: {{paramDisplayName}} {{/each}} --}} {{!-- Update Path Variable --}} {{#some operationParams "op=>(!op.inBody)"}} // Path Variables {{#joinList this "\n" "op=>(!op.inBody)"}} _path["{{paramName}}"] = {{paramDisplayName}};{{/joinList}} {{/some}} {{!-- Update Parameter --}} {{#some operationParams "op=>(op.inBody && !op.inPath)"}} // Update Parameters _data = Object.assign({},{{#joinList this "\n" "op=>(op.inBody && !op.inPath)"}}{{paramDisplayName}}{{#unless @last}},{{/unless}}{{/joinList}}); {{/some}} {{/if}} // Define the Callback return new Promise<{{responsesType}}>((resolve, reject) => { this.client.{{httpVerb}}(this.uri+`{{updateURL url}}`{{#some operationParams "op=>(!op.inBody && !op.inPath)"}}{{#joinList this " " "op=>(!op.inBody && !op.inPath)"}}+ ({{paramDisplayName}} !== undefined ? `?{{paramDisplayName}}=${ {{paramDisplayName}} }` : ''){{/joinList}}{{/some}},{ data: _data, headers: this.token ? { 'Content-Type': 'application/json', 'Authorization': this.token } : { 'Content-Type': 'application/json' }, path: _path, }, function(data, response) { {{!-- console.log(data,response) --}} if (response.statusCode !== 200) { _this._logger.error('rest-error: ' + response.statusCode); const error = new Error('Failed with '+ response.statusCode); reject(error); } else { if (_this._logger.isDebugEnabled()) { _this._logger.debug('request {{operationGroup.operationsGroupName}}.{{operationName}} sucessfull'); } resolve(data as {{responsesType}}); } }); }); } {{/each}} }