Skip to content

Commit

Permalink
Merge pull request #4 from samingostar/master
Browse files Browse the repository at this point in the history
Header params supported
  • Loading branch information
olaferlandsen committed Oct 10, 2017
2 parents b5dad0b + 41bcc60 commit 4ddc437
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 68 deletions.
76 changes: 47 additions & 29 deletions dist/angular-swagger2-client.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,9 @@
return 'boolean';
else if (this.isLong(value))
return 'long';
else if (this.isString(value))
return 'string'

return 'undefined';
},
/**
Expand Down Expand Up @@ -266,9 +269,19 @@
angular.forEach(rule, function (value, property) {
if (swaggerObject.securityDefinitions.hasOwnProperty(property)) {
var security = swaggerObject.securityDefinitions[property];

switch (security.type) {
case 'basic':
security.in = 'header';
security.name = 'Authorization';
break;
}

swaggerRequest.params[security.name] = {
"name": security.name,
"required": true,
"type": 'string',
"expected": 'string',
"in": security.in,
"format": security.type
};
Expand Down Expand Up @@ -339,13 +352,36 @@
//
var finalResponse = {
uri: swaggerRequest.uri,
formData: [],
status: null,
statusText: null,
data: null,
validation: [],
values: swaggerRequest.input,
params: swaggerRequest.params
};

/**
* Apply a pre-validator: check required, data type and format
* */
angular.forEach(swaggerRequest.params, function (item, param) {
/**
* Check if is required
* */
if (!swaggerRequest.input.hasOwnProperty(param) && item.required === true) {
finalResponse.validation.push(item.name + ' is required and should be a ' + item.expected);
} else if (swaggerRequest.input.hasOwnProperty(param)) {
if (!Utils.isDatatype(swaggerRequest.input[param], item.type)) {
finalResponse.validation.push(item.name + ' should be a ' + item.expected);
} else if ('header' === item.in) {
swaggerRequest.data.headers[param] = swaggerRequest.input[param];
}
}
/**
* @todo Check format
* */
});

/**
* By default, $http don't set content-type:application/x-www-form-urlencoded for POST and PUT
* So, if you need send a POST or PUT, angular-swagger2-client set this header.
Expand All @@ -357,75 +393,57 @@
* Enable file upload
* */
if (swaggerRequest.consumes.indexOf('multipart/form-data') > -1 && swaggerRequest.data.formData.length > 0) {
swaggerRequest.data.headers['content-type'] = 'multipart/form-dataf-8';
swaggerRequest.data.headers['content-type'] = 'multipart/form-data';
}
else {
swaggerRequest.data.headers['content-type'] = 'application/x-www-form-urlencoded';
}
}

/**
* Prepare formData only if the method is POST, PUT, CONNECT or PATCH
* @todo learn more about when, where and how to use form data
*/
if (['post', 'put', 'connect', 'patch'].indexOf(method) > -1) {
var formData = {};

angular.forEach(swaggerRequest.data.formData, function (name, index) {
if (swaggerRequest.input.hasOwnProperty(name)) {
swaggerRequest.data.formData[name] = swaggerRequest.input[name];
formData[name] = swaggerRequest.input[name];
/**
* If the parameter is found, it must be removed so that it is not reused in another parameter,
* otherwise it could generate a totally unnecessary conflict.
* */
delete swaggerRequest.input[name];
}
else {
delete swaggerRequest.data.formData[index];
}
});
/**
* After searching and assigning the values to formData, it is necessary to convert formData
* into a valid notation.
* */
swaggerRequest.data.formData = $httpParamSerializer(swaggerRequest.data.formData);
finalResponse.formData = $httpParamSerializer(formData);
}

/**
* Prepare query params for all methods and only if it have one or more items
* */
if (swaggerRequest.data.query.length > 0) {
var httpQueryObject_1 = {};

angular.forEach(swaggerRequest.data.query, function (name, index) {
if (swaggerRequest.input.hasOwnProperty(name)) {
httpQueryObject_1[name] = swaggerRequest.input[name];
delete swaggerRequest.input[name];
}
else {
delete swaggerRequest.data.query[index];
}
});

finalResponse.uri += '?' + $httpParamSerializer(httpQueryObject_1);
}
/**
* Apply a pre-validator: check required, data type and format
* */
angular.forEach(swaggerRequest.params, function (item, param) {
/**
* Check if is required
* */
if (!swaggerRequest.input.hasOwnProperty(param) && param.required === true) {
finalResponse.validation.push(param.name + ' is required and should be a ' + item.expected);
}
else if (swaggerRequest.input.hasOwnProperty(param)) {
if (!Utils.isDatatype(swaggerRequest.input[param], param.type)) {
finalResponse.validation.push(param.name + ' should be a ' + param.expected);
}
}
/**
* @todo Check format
* */
});

var httpConfig = angular.extend({
url: this.host + finalResponse.uri,
method: method,
data: swaggerRequest.data.formData,
data: finalResponse.formData,
headers: swaggerRequest.data.headers
}, swaggerRequest.config);
// prepare promise
Expand Down
89 changes: 50 additions & 39 deletions dist/angular-swagger2-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@
else if (this.isFloat(value)) return 'float';
else if (this.isBoolean(value)) return 'boolean';
else if (this.isLong(value)) return 'long';
else if (this.isString(value)) return 'string';

return 'undefined';
},
/**
Expand Down Expand Up @@ -261,9 +263,19 @@
angular.forEach(rule, function (value:any, property:any) {
if (swaggerObject.securityDefinitions.hasOwnProperty(property)) {
let security = swaggerObject.securityDefinitions[property];

switch (security.type) {
case 'basic':
security.in = 'header';
security.name = 'Authorization';
break;
}

swaggerRequest.params[security.name] = {
"name" : security.name,
"required": true,
"type" : 'string',
"expected": 'string',
"in" : security.in,
"format" : security.type
};
Expand Down Expand Up @@ -348,6 +360,7 @@
//
let finalResponse:any = {
uri : swaggerRequest.uri,
formData : [],
status : null,
statusText : null,
data : null,
Expand All @@ -356,7 +369,34 @@
params : swaggerRequest.params
};


/**
* Apply a pre-validator: check required, data type and format
* */
angular.forEach (swaggerRequest.params, function (item:any, param:any) {
/**
* Check if is required
* */
if (!swaggerRequest.input.hasOwnProperty(param) && item.required === true) {
finalResponse.validation.push(
item.name + ' is required and should be a ' + item.expected
);
}
/**
* Check data type
* */
else if (swaggerRequest.input.hasOwnProperty(param)) {
if (!Utils.isDatatype(swaggerRequest.input[param], item.type)) {
finalResponse.validation.push(
item.name + ' should be a ' + item.expected
)
} else if ('header' === item.in) {
swaggerRequest.data.headers[param] = swaggerRequest.input[param];
}
}
/**
* @todo Check format
* */
});

/**
* By default, $http don't set content-type:application/x-www-form-urlencoded for POST and PUT
Expand All @@ -369,7 +409,7 @@
* Enable file upload
* */
if (swaggerRequest.consumes.indexOf('multipart/form-data') > -1 && swaggerRequest.data.formData.length > 0) {
swaggerRequest.data.headers['content-type'] = 'multipart/form-dataf-8';
swaggerRequest.data.headers['content-type'] = 'multipart/form-data';
}
else {
swaggerRequest.data.headers['content-type'] = 'application/x-www-form-urlencoded';
Expand All @@ -381,73 +421,44 @@
* @todo learn more about when, where and how to use form data
*/
if (['post', 'put', 'connect', 'patch'].indexOf(method) > -1) {
let formData:any = {};

angular.forEach(swaggerRequest.data.formData, function (name:string, index:any) {
if (swaggerRequest.input.hasOwnProperty(name)) {
swaggerRequest.data.formData[name] = swaggerRequest.input[name];
formData[name] = swaggerRequest.input[name];
/**
* If the parameter is found, it must be removed so that it is not reused in another parameter,
* otherwise it could generate a totally unnecessary conflict.
* */
delete swaggerRequest.input[name];
}
/**
* The user may enter data that is not required or not used and this should not represent an error.
* **/
else {
delete swaggerRequest.data.formData[index];
}
});
/**
* After searching and assigning the values to formData, it is necessary to convert formData
* into a valid notation.
* */
swaggerRequest.data.formData = $httpParamSerializer(swaggerRequest.data.formData);
finalResponse.formData = $httpParamSerializer(formData);
}

/**
* Prepare query params for all methods and only if it have one or more items
* */
if (swaggerRequest.data.query.length > 0) {
let httpQueryObject:any = {};

angular.forEach(swaggerRequest.data.query, function (name:string, index:any) {
if (swaggerRequest.input.hasOwnProperty(name)) {
httpQueryObject[name] = swaggerRequest.input[name];
delete swaggerRequest.input[name];
} else {
delete swaggerRequest.data.query[index];
}
});
finalResponse.uri += '?' + $httpParamSerializer(httpQueryObject);
}
/**
* Apply a pre-validator: check required, data type and format
* */
angular.forEach (swaggerRequest.params, function (item:any, param:any) {
/**
* Check if is required
* */
if (!swaggerRequest.input.hasOwnProperty(param) && param.required === true) {
finalResponse.validation.push(
param.name + ' is required and should be a ' + item.expected
);
}
/**
* Check data type
* */
else if (swaggerRequest.input.hasOwnProperty(param)) {
if (!Utils.isDatatype(swaggerRequest.input[param], param.type)) {
finalResponse.validation.push(
param.name + ' should be a ' + param.expected
)
}
}
/**
* @todo Check format
* */
});

let httpConfig = angular.extend({
url : this.host + finalResponse.uri,
method : method,
data : swaggerRequest.data.formData,
data : finalResponse.formData,
headers : swaggerRequest.data.headers
}, swaggerRequest.config);

Expand Down

0 comments on commit 4ddc437

Please sign in to comment.