Added serialization from list to CSV string, and generic header param handling

This commit is contained in:
Russell Horton 2011-11-22 14:50:02 -08:00
parent 50a35f6a65
commit fc7b45b5e9
4 changed files with 53 additions and 31 deletions

View File

@ -50,13 +50,20 @@ class APIClient {
$headers = array(); $headers = array();
$headers[] = "Content-type: application/json"; $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) { if ($headerParams != null) {
foreach ($headerParams as $key => $val) { foreach ($headerParams as $key => $val) {
$headers[] = "$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)) { if (is_object($postData) or is_array($postData)) {
$postData = json_encode($postData); $postData = json_encode($postData);
@ -117,13 +124,17 @@ class APIClient {
/** /**
* Serialize the object to a string of 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 JSON * @param object $object an object to be serialized to a string
* @return string the serialized JSON * @return string the serialized object
*/ */
public static function serialize($object) { public static function toPathValue($object) {
return json_encode($object); if (is_array($object)) {
return implode(',', $object);
} else {
return $object;
}
} }

View File

@ -51,28 +51,27 @@ $if(!method.responseVoid)$
\$queryParams = array(); \$queryParams = array();
\$headerParams = 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)$ $if(!method.inputModel)$
$method.queryParameters:{ argument | $method.queryParameters:{ argument |
\$queryParams['$argument.name$'] = \$$argument.name$; if(\$$argument.name$ != null) {
\$queryParams['$argument.name$'] = \$this->apiClient->toPathValue(\$$argument.name$);
}
}$ }$
$method.pathParameters:{ argument | $method.pathParameters:{ argument |
if(\$$argument.name$ != null) { if(\$$argument.name$ != null) {
\$resourcePath = str_replace("{$argument.name$}", \$$argument.name$, \$resourcePath); \$resourcePath = str_replace("{$argument.name$}", \$$argument.name$, \$resourcePath);
} }
}$ }$
$method.headerParameters:{ argument |
if(\$$argument.name$ != null) {
\$headerParams['$argument.name$'] = \$this->apiClient->toPathValue(\$$argument.name$);
}
}$
$endif$ $endif$
$if(method.inputModel)$ $if(method.inputModel)$
$method.queryParameters:{ argument | $method.queryParameters:{ argument |
if(\$$argument.inputModelClassArgument$ != null && \$$argument.inputModelClassArgument$->$argument.name$ != null) { 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 | $method.pathParameters:{ argument |
@ -80,7 +79,13 @@ $method.pathParameters:{ argument |
\$resourcePath = str_replace("{$argument.name$}", \$$argument.inputModelClassArgument$->$argument.name$, \$resourcePath); \$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$ $endif$
//make the API Call //make the API Call
$if(method.postObject)$ $if(method.postObject)$
\$response = \$this->apiClient->callAPI(\$resourcePath, \$method, \$queryParams, \$postData, \$headerParams); \$response = \$this->apiClient->callAPI(\$resourcePath, \$method, \$queryParams, \$postData, \$headerParams);

View File

@ -71,14 +71,17 @@ class APIClient:
return data return data
def serialize(self, obj): def toPathValue(self, obj):
""" """Serialize a list to a CSV string, if necessary.
Args: Args:
obj -- data object to be serialized obj -- data object to be serialized
Returns: Returns:
string -- json serialization of object string -- json serialization of object
""" """
return json.dumps(obj) if type(obj) == list:
return ','.join(obj)
else:
return obj
def deserialize(self, obj, objClass): def deserialize(self, obj, objClass):
"""Derialize a JSON string into an object. """Derialize a JSON string into an object.

View File

@ -51,33 +51,36 @@ $methods:{ method |
queryParams = {} queryParams = {}
headerParams = {} headerParams = {}
$if(method.authToken)$
if not authToken:
raise Exception('missing authToken')
headerParams['auth_token'] = authToken
$endif$
$if(!method.inputModel)$ $if(!method.inputModel)$
$method.queryParameters:{ argument | $method.queryParameters:{ argument |
queryParams['$argument.name$'] = $argument.name$ queryParams['$argument.name$'] = self.apiClient.toPathValue($argument.name$)
}$ }$
$method.pathParameters:{ argument | $method.pathParameters:{ argument |
if $argument.name$ != None: if $argument.name$ != None:
resourcePath = resourcePath.replace('{$argument.name$}', $argument.name$) resourcePath = resourcePath.replace('{$argument.name$}', $argument.name$)
}$
$method.headerParameters:{ argument |
if $argument.name$ != None:
headerParams['$argument.name$'] = self.apiClient.toPathValue($argument.name$)
}$ }$
$endif$ $endif$
$if(method.inputModel)$ $if(method.inputModel)$
$method.queryParameters:{ argument | $method.queryParameters:{ argument |
if $argument.inputModelClassArgument$ != None and $argument.inputModelClassArgument$.$argument.name$ != None: 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 | $method.pathParameters:{ argument |
if $argument.inputModelClassArgument$ != None and $argument.inputModelClassArgument$.$argument.name$ != None: 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$ $endif$
# Make the API Call # Make the API Call