From fc7b45b5e9663d41605ed92e5607364ff898b36f Mon Sep 17 00:00:00 2001 From: Russell Horton Date: Tue, 22 Nov 2011 14:50:02 -0800 Subject: [PATCH 1/2] Added serialization from list to CSV string, and generic header param handling --- conf/php/structure/APIClient.php | 27 +++++++++++++++++-------- conf/php/templates/ResourceObject.st | 25 ++++++++++++++--------- conf/python/structure/APIClient.py | 9 ++++++--- conf/python/templates/ResourceObject.st | 23 ++++++++++++--------- 4 files changed, 53 insertions(+), 31 deletions(-) diff --git a/conf/php/structure/APIClient.php b/conf/php/structure/APIClient.php index 7c9941fec03..47818f56520 100644 --- a/conf/php/structure/APIClient.php +++ b/conf/php/structure/APIClient.php @@ -50,14 +50,21 @@ class APIClient { $headers = array(); $headers[] = "Content-type: application/json"; - $headers[] = "api_key: " . $this->apiKey; + # Allow API key from $headerParams to override default + $added_api_key = False; if ($headerParams != null) { foreach ($headerParams as $key => $val) { $headers[] = "$key: $val"; + if ($key == 'api_key') { + $added_api_key = True; + } } } - + if (! $added_api_key) { + $headers[] = "api_key: " . $this->apiKey; + } + if (is_object($postData) or is_array($postData)) { $postData = json_encode($postData); } @@ -117,13 +124,17 @@ class APIClient { /** - * Serialize the object to a string of JSON - * - * @param object $object an object to be serialized to JSON - * @return string the serialized JSON + * Take value and turn it into a string suitable for inclusion in + * the path or the header + * @param object $object an object to be serialized to a string + * @return string the serialized object */ - public static function serialize($object) { - return json_encode($object); + public static function toPathValue($object) { + if (is_array($object)) { + return implode(',', $object); + } else { + return $object; + } } diff --git a/conf/php/templates/ResourceObject.st b/conf/php/templates/ResourceObject.st index 6ae5c16b95a..c9c5ee33fa8 100644 --- a/conf/php/templates/ResourceObject.st +++ b/conf/php/templates/ResourceObject.st @@ -51,28 +51,27 @@ $if(!method.responseVoid)$ \$queryParams = array(); \$headerParams = array(); -$if(method.authToken)$ - if(\$authToken == null || strlen(\$authToken) == 0) { - throw new Exception('missing authToken'); - } - \$headerParams['auth_token'] = \$authToken; -$endif$ - - $if(!method.inputModel)$ $method.queryParameters:{ argument | - \$queryParams['$argument.name$'] = \$$argument.name$; + if(\$$argument.name$ != null) { + \$queryParams['$argument.name$'] = \$this->apiClient->toPathValue(\$$argument.name$); + } }$ $method.pathParameters:{ argument | if(\$$argument.name$ != null) { \$resourcePath = str_replace("{$argument.name$}", \$$argument.name$, \$resourcePath); } }$ +$method.headerParameters:{ argument | + if(\$$argument.name$ != null) { + \$headerParams['$argument.name$'] = \$this->apiClient->toPathValue(\$$argument.name$); + } +}$ $endif$ $if(method.inputModel)$ $method.queryParameters:{ argument | if(\$$argument.inputModelClassArgument$ != null && \$$argument.inputModelClassArgument$->$argument.name$ != null) { - \$queryParams["$argument.name$"] = \$$argument.inputModelClassArgument$->$argument.name$; + \$queryParams["$argument.name$"] = \$this->apiClient->toPathValue(\$$argument.inputModelClassArgument$->$argument.name$); } }$ $method.pathParameters:{ argument | @@ -80,7 +79,13 @@ $method.pathParameters:{ argument | \$resourcePath = str_replace("{$argument.name$}", \$$argument.inputModelClassArgument$->$argument.name$, \$resourcePath); } }$ +$method.headerParameters:{ argument | + if(\$$argument.inputModelClassArgument$ != null && \$$argument.inputModelClassArgument$->$argument.name$ != null) { + \$headerParams['$argument.name$'] = \$this->apiClient->toPathValue(\$$argument.inputModelClassArgument$->$argument.name$); + } +}$ $endif$ + //make the API Call $if(method.postObject)$ \$response = \$this->apiClient->callAPI(\$resourcePath, \$method, \$queryParams, \$postData, \$headerParams); diff --git a/conf/python/structure/APIClient.py b/conf/python/structure/APIClient.py index 2f17b12660f..ddde8783a95 100644 --- a/conf/python/structure/APIClient.py +++ b/conf/python/structure/APIClient.py @@ -71,14 +71,17 @@ class APIClient: return data - def serialize(self, obj): - """ + def toPathValue(self, obj): + """Serialize a list to a CSV string, if necessary. Args: obj -- data object to be serialized Returns: string -- json serialization of object """ - return json.dumps(obj) + if type(obj) == list: + return ','.join(obj) + else: + return obj def deserialize(self, obj, objClass): """Derialize a JSON string into an object. diff --git a/conf/python/templates/ResourceObject.st b/conf/python/templates/ResourceObject.st index ab6e17c2ff6..a396b2a650a 100644 --- a/conf/python/templates/ResourceObject.st +++ b/conf/python/templates/ResourceObject.st @@ -51,33 +51,36 @@ $methods:{ method | queryParams = {} headerParams = {} -$if(method.authToken)$ - if not authToken: - raise Exception('missing authToken') - headerParams['auth_token'] = authToken -$endif$ $if(!method.inputModel)$ $method.queryParameters:{ argument | - queryParams['$argument.name$'] = $argument.name$ -}$ + queryParams['$argument.name$'] = self.apiClient.toPathValue($argument.name$) +}$ $method.pathParameters:{ argument | if $argument.name$ != None: resourcePath = resourcePath.replace('{$argument.name$}', $argument.name$) - +}$ +$method.headerParameters:{ argument | + if $argument.name$ != None: + headerParams['$argument.name$'] = self.apiClient.toPathValue($argument.name$) }$ $endif$ $if(method.inputModel)$ $method.queryParameters:{ argument | if $argument.inputModelClassArgument$ != None and $argument.inputModelClassArgument$.$argument.name$ != None: - queryParams['$argument.name$'] = $argument.inputModelClassArgument$.$argument.name$ + queryParams['$argument.name$'] = self.apiClient.toPathValue($argument.inputModelClassArgument$.$argument.name$) }$ $method.pathParameters:{ argument | if $argument.inputModelClassArgument$ != None and $argument.inputModelClassArgument$.$argument.name$ != None: - resourcePath = resourcePath.replace('{$argument.name$}', $argument.inputModelClassArgument$.$argument.name$) + resourcePath = resourcePath.replace('{$argument.name$}', $argument.inputModelClassArgument$.$argument.name$) }$ +$method.headerParameters:{ argument | + if $argument.inputModelClassArgument$ != None and $argument.inputModelClassArgument$.$argument.name$ != None: + headerParams['$argument.name$'] = self.apiClient.toPathValue($argument.inputModelClassArgument$.$argument.name$) +}$ + $endif$ # Make the API Call From 37470775c96c5aa00758a48ba84a1f49acc5fe80 Mon Sep 17 00:00:00 2001 From: Russell Horton Date: Tue, 22 Nov 2011 14:50:36 -0800 Subject: [PATCH 2/2] cleaned up PHP library generated code path --- .../codegen/config/php/PHPLibCodeGen.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/wordnik/swagger/codegen/config/php/PHPLibCodeGen.java b/src/main/java/com/wordnik/swagger/codegen/config/php/PHPLibCodeGen.java index f8d261ed7bf..cbe3c01b6b1 100644 --- a/src/main/java/com/wordnik/swagger/codegen/config/php/PHPLibCodeGen.java +++ b/src/main/java/com/wordnik/swagger/codegen/config/php/PHPLibCodeGen.java @@ -30,7 +30,6 @@ import java.io.File; * Time: 11:00 PM */ public class PHPLibCodeGen extends LibraryCodeGenerator { - String outputBasePath; public static void main(String[] args) { if(args.length < 1){ @@ -50,19 +49,21 @@ public class PHPLibCodeGen extends LibraryCodeGenerator { String packageName = args[2]; String libraryHome = args[3]; if(libraryHome.endsWith("/")){ - libraryHome = libraryHome.substring(0, libraryHome.length()-1) + packageName; + libraryHome = libraryHome.substring(0, libraryHome.length()-1); } String modelPackageName = packageName+".model"; String apiPackageName = packageName+".api"; - String classOutputDir = libraryHome + "/src/main/php/" + packageName.replace(".","/"); - PHPLibCodeGen codeGenerator = new PHPLibCodeGen(apiServerURL, apiKey, modelPackageName, apiPackageName, classOutputDir, libraryHome); + String classOutputDir = libraryHome + packageName.replace(".","/"); + PHPLibCodeGen codeGenerator = new PHPLibCodeGen(apiServerURL, apiKey, modelPackageName, + apiPackageName, classOutputDir, libraryHome); codeGenerator.generateCode(); } + } - public PHPLibCodeGen(String apiServerURL, String apiKey, String modelPackageName, String apiPackageName, String classOutputDir, String libraryHome){ + public PHPLibCodeGen(String apiServerURL, String apiKey, String modelPackageName, String apiPackageName, + String classOutputDir, String libraryHome){ super(apiServerURL, apiKey, modelPackageName, apiPackageName, classOutputDir, libraryHome); - this.outputBasePath = classOutputDir; this.setDataTypeMappingProvider(new PHPDataTypeMappingProvider()); this.setNameGenerator(new CamelCaseNamingPolicyProvider()); } @@ -86,8 +87,8 @@ public class PHPLibCodeGen extends LibraryCodeGenerator { FileUtil.createOutputDirectories(PHPConfiguration.getResourceClassLocation(), PHPConfiguration.getClassFileExtension()); FileUtil.clearFolder(PHPConfiguration.getModelClassLocation()); FileUtil.clearFolder(PHPConfiguration.getResourceClassLocation()); - - FileUtil.copyDirectory(new File(PHPConfiguration.getStructureLocation()), new File(PHPConfiguration.getLibraryHome() + "/src/main/php")); + FileUtil.copyDirectory(new File(PHPConfiguration.getStructureLocation()), new File(PHPConfiguration.getResourceClassLocation())); return PHPConfiguration; } + }