From 1cd81416459c48d09197e5cf54af47b65189dbb4 Mon Sep 17 00:00:00 2001 From: Laurent Van der Linden Date: Tue, 22 Sep 2015 08:37:49 +0200 Subject: [PATCH] implement form parameter support using Angular $httpParamSerializer --- .../io/swagger/codegen/CodegenOperation.java | 9 +++++++++ .../resources/TypeScript-Angular/api.mustache | 19 ++++++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenOperation.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenOperation.java index 6eae2c6f0f58..373c5b2b7857 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenOperation.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenOperation.java @@ -77,4 +77,13 @@ public class CodegenOperation { return nonempty(pathParams); } + /** + * Check if there's at least one form parameter + * + * @return true if any form parameter exists, false otherwise + */ + public boolean getHasFormParams() { + return nonempty(formParams); + } + } diff --git a/modules/swagger-codegen/src/main/resources/TypeScript-Angular/api.mustache b/modules/swagger-codegen/src/main/resources/TypeScript-Angular/api.mustache index f08e66333755..80ed286cea10 100644 --- a/modules/swagger-codegen/src/main/resources/TypeScript-Angular/api.mustache +++ b/modules/swagger-codegen/src/main/resources/TypeScript-Angular/api.mustache @@ -14,9 +14,9 @@ module {{package}} { export class {{classname}} { private basePath = '{{basePath}}'; - static $inject: string[] = ['$http']; + static $inject: string[] = ['$http', '$httpParamSerializer']; - constructor(private $http: ng.IHttpService, basePath?: string) { + constructor(private $http: ng.IHttpService, private $httpParamSerializer: (any) => any, basePath?: string) { if (basePath) { this.basePath = basePath; } @@ -32,7 +32,10 @@ module {{package}} { {{/pathParams}} var queryParameters: any = {}; var headerParams: any = {}; +{{#hasFormParams}} + var formParams: any = {}; +{{/hasFormParams}} {{#allParams}} {{#required}} // verify required parameter '{{paramName}}' is set @@ -52,12 +55,22 @@ module {{package}} { headerParams['{{baseName}}'] = {{paramName}}; {{/headerParams}} +{{#hasFormParams}} + headerParams['Content-Type'] = 'application/x-www-form-urlencoded'; + +{{/hasFormParams}} +{{#formParams}} + formParams['{{baseName}}'] = {{paramName}}; + +{{/formParams}} var httpRequestParams: any = { method: '{{httpMethod}}', url: path, - json: true, + json: {{#hasFormParams}}false{{/hasFormParams}}{{^hasFormParams}}true{{/hasFormParams}}, {{#bodyParam}}data: {{paramName}}, {{/bodyParam}} + {{#hasFormParams}}data: this.$httpParamSerializer(formParams), + {{/hasFormParams}} params: queryParameters, headers: headerParams };