Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 19 additions & 8 deletions conf/php/structure/APIClient.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,21 @@ public function callAPI($resourcePath, $method, $queryParams, $postData,

$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);
}
Expand Down Expand Up @@ -117,13 +124,17 @@ public function callAPI($resourcePath, $method, $queryParams, $postData,


/**
* 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;
}
}


Expand Down
25 changes: 15 additions & 10 deletions conf/php/templates/ResourceObject.st
Original file line number Diff line number Diff line change
Expand Up @@ -51,36 +51,41 @@ $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 |
if(\$$argument.inputModelClassArgument$ != null && \$$argument.inputModelClassArgument$->$argument.name$ != null) {
\$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);
Expand Down
9 changes: 6 additions & 3 deletions conf/python/structure/APIClient.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,17 @@ def callAPI(self, resourcePath, method, queryParams, postData,

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.
Expand Down
23 changes: 13 additions & 10 deletions conf/python/templates/ResourceObject.st
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
* Time: 11:00 PM
*/
public class PHPLibCodeGen extends LibraryCodeGenerator {
String outputBasePath;

public static void main(String[] args) {
if(args.length < 1){
Expand All @@ -50,19 +49,21 @@ public static void main(String[] args) {
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());
}
Expand All @@ -86,8 +87,8 @@ protected LanguageConfiguration initializeLangConfig(LanguageConfiguration PHPCo
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;
}

}