Add lua test script, minor fix to Lua API files (#7490)

* add lua test script, minor fix to api files

* fix model import, avoid null header issue

* add space before equal sign
This commit is contained in:
William Cheng 2018-01-25 22:01:04 +08:00 committed by GitHub
parent e33b350c89
commit df10c725ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 123 additions and 73 deletions

View File

@ -25,7 +25,7 @@ then
fi fi
# if you've executed sbt assembly previously it will use that instead. # if you've executed sbt assembly previously it will use that instead.
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties $@"
ags="generate -t modules/swagger-codegen/src/main/resources/lua -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l lua -o samples/client/petstore/lua -DpackageName=petstore $@" ags="generate -t modules/swagger-codegen/src/main/resources/lua -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l lua -o samples/client/petstore/lua -DpackageName=petstore"
java $JAVA_OPTS -jar $executable $ags java $JAVA_OPTS -jar $executable $ags

View File

@ -977,7 +977,9 @@ public class DefaultGenerator extends AbstractGenerator implements Generator {
} }
if (mapping != null) { if (mapping != null) {
im.put("import", mapping); im.put("import", mapping);
imports.add(im); if (!imports.contains(im)) { // avoid duplicates
imports.add(im);
}
} }
} }

View File

@ -89,7 +89,8 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig {
typeMapping.put("date", "string"); typeMapping.put("date", "string");
typeMapping.put("DateTime", "string"); typeMapping.put("DateTime", "string");
typeMapping.put("password", "string"); typeMapping.put("password", "string");
typeMapping.put("file", "TODO_FILE_MAPPING"); // TODO fix file mapping
typeMapping.put("file", "string");
// map binary to string as a workaround // map binary to string as a workaround
// the correct solution is to use []byte // the correct solution is to use []byte
typeMapping.put("binary", "string"); typeMapping.put("binary", "string");
@ -181,11 +182,11 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig {
@Override @Override
public String apiFileFolder() { public String apiFileFolder() {
return outputFolder + File.separator + "api" + File.separator; return outputFolder + File.separator + packageName + File.separator + "api" + File.separator;
} }
public String modelFileFolder() { public String modelFileFolder() {
return outputFolder + File.separator + "model" + File.separator; return outputFolder + File.separator + packageName + File.separator + "model" + File.separator;
} }
@Override @Override
@ -519,4 +520,13 @@ public class LuaClientCodegen extends DefaultCodegen implements CodegenConfig {
return enumName; return enumName;
} }
} }
@Override
public String toModelImport(String name) {
if (needToImport(toModelName(name))) {
return toModelName(name);
}
return name;
}
} }

View File

@ -8,12 +8,14 @@ local dkjson = require "dkjson"
local basexx = require "basexx" local basexx = require "basexx"
-- model import -- model import
local {{{packageName}}}_{{classname}} = require "{{{packageName}}}.api.{{classname}}" {{#imports}}
local {{{packageName}}}_{{import}} = require "{{{packageName}}}.model.{{import}}"
{{/imports}}
local {{{packageName}}}= {} local {{{classname}}} = {}
local {{{packageName}}}_mt = { local {{{classname}}}_mt = {
__name = "{{{classname}}}"; __name = "{{{classname}}}";
__index = {{{packageName}}}; __index = {{{classname}}};
} }
local function new_{{classname}}(host, basePath, schemes) local function new_{{classname}}(host, basePath, schemes)
@ -31,7 +33,7 @@ local function new_{{classname}}(host, basePath, schemes)
http_password = nil; http_password = nil;
api_key = {}; api_key = {};
access_token = nil; access_token = nil;
}, {{{packageName}}}_mt) }, {{{classname}}}_mt)
end end
{{#operation}} {{#operation}}
@ -60,7 +62,9 @@ function {{classname}}:{{operationId}}({{#allParams}}{{paramName}}{{#hasMore}},
{{/hasProduces}} {{/hasProduces}}
{{#headerParams}} {{#headerParams}}
req.headers:upsert("{{baseName}}", {{paramName}}) if {{paramName}} then
req.headers:upsert("{{baseName}}", {{paramName}})
end
{{/headerParams}} {{/headerParams}}
{{#formParams}} {{#formParams}}
{{#-first}} {{#-first}}
@ -79,7 +83,9 @@ function {{classname}}:{{operationId}}({{#allParams}}{{paramName}}{{#hasMore}},
{{#isApiKey}} {{#isApiKey}}
{{#isKeyInHeader}} {{#isKeyInHeader}}
-- api key in headers '{{keyParamName}}' -- api key in headers '{{keyParamName}}'
req.headers:upsert("{{{name}}}", api_key['{{{keyParamName}}}']) if self.api_key['{{{keyParamName}}}'] then
req.headers:upsert("{{{name}}}", self.api_key['{{{keyParamName}}}'])
end
{{/isKeyInHeader}} {{/isKeyInHeader}}
{{#isKeyInQuery}} {{#isKeyInQuery}}
-- TODO: api key in query '{{keyParamName}}' -- TODO: api key in query '{{keyParamName}}'
@ -91,7 +97,9 @@ function {{classname}}:{{operationId}}({{#allParams}}{{paramName}}{{#hasMore}},
{{/isBasic}} {{/isBasic}}
{{#isOAuth}} {{#isOAuth}}
-- oAuth -- oAuth
req.headers:upsert("authorization", "Bearer " .. self.access_token) if self.access_token then
req.headers:upsert("authorization", "Bearer " .. self.access_token)
end
{{/isOAuth}} {{/isOAuth}}
{{/authMethods}} {{/authMethods}}
@ -120,7 +128,7 @@ function {{classname}}:{{operationId}}({{#allParams}}{{paramName}}{{#hasMore}},
{{^returnTypeIsPrimitive}} {{^returnTypeIsPrimitive}}
{{#isListContainer}} {{#isListContainer}}
for _, ob in ipairs(result) do for _, ob in ipairs(result) do
cast_{{returnType}}(ob) {{packageName}}_{{returnType}}.cast(ob)
end end
return result, headers return result, headers
{{/isListContainer}} {{/isListContainer}}
@ -129,7 +137,7 @@ function {{classname}}:{{operationId}}({{#allParams}}{{paramName}}{{#hasMore}},
{{/isMapContainer}} {{/isMapContainer}}
{{^isMapContainer}} {{^isMapContainer}}
{{^isListContainer}} {{^isListContainer}}
return cast_{{returnType}}(result), headers return {{packageName}}_{{returnType}}.cast(result), headers
{{/isListContainer}} {{/isListContainer}}
{{/isMapContainer}} {{/isMapContainer}}
{{/returnTypeIsPrimitive}} {{/returnTypeIsPrimitive}}
@ -149,4 +157,8 @@ function {{classname}}:{{operationId}}({{#allParams}}{{paramName}}{{#hasMore}},
end end
{{/operation}} {{/operation}}
return {
new = new_{{classname}};
}
{{/operations}} {{/operations}}

View File

@ -1 +1 @@
2.3.1-SNAPSHOT 2.4.0-SNAPSHOT

View File

@ -1,8 +0,0 @@
/*___Generated_by_IDEA___*/
package io.swagger.client;
/* This stub is only used by the IDE. It is NOT the BuildConfig class actually packed into the APK */
public final class BuildConfig {
public final static boolean DEBUG = Boolean.parseBoolean(null);
}

View File

@ -1,7 +0,0 @@
/*___Generated_by_IDEA___*/
package io.swagger.client;
/* This stub is only used by the IDE. It is NOT the Manifest class actually packed into the APK */
public final class Manifest {
}

View File

@ -1,7 +0,0 @@
/*___Generated_by_IDEA___*/
package io.swagger.client;
/* This stub is only used by the IDE. It is NOT the R class actually packed into the APK */
public final class R {
}

View File

@ -36,6 +36,9 @@ public class Animal {
@SerializedName("color") @SerializedName("color")
private String color = "red"; private String color = "red";
public Animal() {
this.className = this.getClass().getSimpleName();
}
public Animal className(String className) { public Animal className(String className) {
this.className = className; this.className = className;
return this; return this;

View File

@ -1 +1 @@
2.3.0-SNAPSHOT 2.4.0-SNAPSHOT

View File

@ -36,7 +36,7 @@ git_remote=`git remote`
if [ "$git_remote" = "" ]; then # git remote not defined if [ "$git_remote" = "" ]; then # git remote not defined
if [ "$GIT_TOKEN" = "" ]; then if [ "$GIT_TOKEN" = "" ]; then
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git crediential in your environment." echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
else else
git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git

View File

@ -16,12 +16,13 @@ local dkjson = require "dkjson"
local basexx = require "basexx" local basexx = require "basexx"
-- model import -- model import
local petstore_pet_api = require "petstore.api.pet_api" local petstore_api_response = require "petstore.model.api_response"
local petstore_pet = require "petstore.model.pet"
local petstore= {} local pet_api = {}
local petstore_mt = { local pet_api_mt = {
__name = "pet_api"; __name = "pet_api";
__index = petstore; __index = pet_api;
} }
local function new_pet_api(host, basePath, schemes) local function new_pet_api(host, basePath, schemes)
@ -39,7 +40,7 @@ local function new_pet_api(host, basePath, schemes)
http_password = nil; http_password = nil;
api_key = {}; api_key = {};
access_token = nil; access_token = nil;
}, petstore_mt) }, pet_api_mt)
end end
function pet_api:add_pet(body) function pet_api:add_pet(body)
@ -65,7 +66,9 @@ function pet_api:add_pet(body)
req:set_body(dkjson.encode(body)) req:set_body(dkjson.encode(body))
-- oAuth -- oAuth
req.headers:upsert("authorization", "Bearer " .. self.access_token) if self.access_token then
req.headers:upsert("authorization", "Bearer " .. self.access_token)
end
-- make the HTTP call -- make the HTTP call
local headers, stream, errno = req:go() local headers, stream, errno = req:go()
@ -101,9 +104,13 @@ function pet_api:delete_pet(pet_id, api_key)
--local var_accept = { "application/xml", "application/json" } --local var_accept = { "application/xml", "application/json" }
req.headers:upsert("content-type", "application/xml") req.headers:upsert("content-type", "application/xml")
req.headers:upsert("api_key", api_key) if api_key then
req.headers:upsert("api_key", api_key)
end
-- oAuth -- oAuth
req.headers:upsert("authorization", "Bearer " .. self.access_token) if self.access_token then
req.headers:upsert("authorization", "Bearer " .. self.access_token)
end
-- make the HTTP call -- make the HTTP call
local headers, stream, errno = req:go() local headers, stream, errno = req:go()
@ -140,7 +147,9 @@ function pet_api:find_pets_by_status(status)
req.headers:upsert("content-type", "application/xml") req.headers:upsert("content-type", "application/xml")
-- oAuth -- oAuth
req.headers:upsert("authorization", "Bearer " .. self.access_token) if self.access_token then
req.headers:upsert("authorization", "Bearer " .. self.access_token)
end
-- make the HTTP call -- make the HTTP call
local headers, stream, errno = req:go() local headers, stream, errno = req:go()
@ -161,7 +170,7 @@ function pet_api:find_pets_by_status(status)
return nil, err3 return nil, err3
end end
for _, ob in ipairs(result) do for _, ob in ipairs(result) do
cast_pet(ob) petstore_pet.cast(ob)
end end
return result, headers return result, headers
else else
@ -191,7 +200,9 @@ function pet_api:find_pets_by_tags(tags)
req.headers:upsert("content-type", "application/xml") req.headers:upsert("content-type", "application/xml")
-- oAuth -- oAuth
req.headers:upsert("authorization", "Bearer " .. self.access_token) if self.access_token then
req.headers:upsert("authorization", "Bearer " .. self.access_token)
end
-- make the HTTP call -- make the HTTP call
local headers, stream, errno = req:go() local headers, stream, errno = req:go()
@ -212,7 +223,7 @@ function pet_api:find_pets_by_tags(tags)
return nil, err3 return nil, err3
end end
for _, ob in ipairs(result) do for _, ob in ipairs(result) do
cast_pet(ob) petstore_pet.cast(ob)
end end
return result, headers return result, headers
else else
@ -242,7 +253,9 @@ function pet_api:get_pet_by_id(pet_id)
req.headers:upsert("content-type", "application/xml") req.headers:upsert("content-type", "application/xml")
-- api key in headers 'api_key' -- api key in headers 'api_key'
req.headers:upsert("api_key", api_key['api_key']) if self.api_key['api_key'] then
req.headers:upsert("api_key", self.api_key['api_key'])
end
-- make the HTTP call -- make the HTTP call
local headers, stream, errno = req:go() local headers, stream, errno = req:go()
@ -262,7 +275,7 @@ function pet_api:get_pet_by_id(pet_id)
if result == nil then if result == nil then
return nil, err3 return nil, err3
end end
return cast_pet(result), headers return petstore_pet.cast(result), headers
else else
local body, err, errno2 = stream:get_body_as_string() local body, err, errno2 = stream:get_body_as_string()
if not body then if not body then
@ -297,7 +310,9 @@ function pet_api:update_pet(body)
req:set_body(dkjson.encode(body)) req:set_body(dkjson.encode(body))
-- oAuth -- oAuth
req.headers:upsert("authorization", "Bearer " .. self.access_token) if self.access_token then
req.headers:upsert("authorization", "Bearer " .. self.access_token)
end
-- make the HTTP call -- make the HTTP call
local headers, stream, errno = req:go() local headers, stream, errno = req:go()
@ -343,7 +358,9 @@ function pet_api:update_pet_with_form(pet_id, name, status)
["status"] = status; ["status"] = status;
})) }))
-- oAuth -- oAuth
req.headers:upsert("authorization", "Bearer " .. self.access_token) if self.access_token then
req.headers:upsert("authorization", "Bearer " .. self.access_token)
end
-- make the HTTP call -- make the HTTP call
local headers, stream, errno = req:go() local headers, stream, errno = req:go()
@ -389,7 +406,9 @@ function pet_api:upload_file(pet_id, additional_metadata, file)
["file"] = file; ["file"] = file;
})) }))
-- oAuth -- oAuth
req.headers:upsert("authorization", "Bearer " .. self.access_token) if self.access_token then
req.headers:upsert("authorization", "Bearer " .. self.access_token)
end
-- make the HTTP call -- make the HTTP call
local headers, stream, errno = req:go() local headers, stream, errno = req:go()
@ -409,7 +428,7 @@ function pet_api:upload_file(pet_id, additional_metadata, file)
if result == nil then if result == nil then
return nil, err3 return nil, err3
end end
return cast_api_response(result), headers return petstore_api_response.cast(result), headers
else else
local body, err, errno2 = stream:get_body_as_string() local body, err, errno2 = stream:get_body_as_string()
if not body then if not body then
@ -421,3 +440,7 @@ function pet_api:upload_file(pet_id, additional_metadata, file)
end end
end end
return {
new = new_pet_api;
}

View File

@ -16,12 +16,12 @@ local dkjson = require "dkjson"
local basexx = require "basexx" local basexx = require "basexx"
-- model import -- model import
local petstore_store_api = require "petstore.api.store_api" local petstore_order = require "petstore.model.order"
local petstore= {} local store_api = {}
local petstore_mt = { local store_api_mt = {
__name = "store_api"; __name = "store_api";
__index = petstore; __index = store_api;
} }
local function new_store_api(host, basePath, schemes) local function new_store_api(host, basePath, schemes)
@ -39,7 +39,7 @@ local function new_store_api(host, basePath, schemes)
http_password = nil; http_password = nil;
api_key = {}; api_key = {};
access_token = nil; access_token = nil;
}, petstore_mt) }, store_api_mt)
end end
function store_api:delete_order(order_id) function store_api:delete_order(order_id)
@ -93,7 +93,9 @@ function store_api:get_inventory()
req.headers:upsert("content-type", "application/json") req.headers:upsert("content-type", "application/json")
-- api key in headers 'api_key' -- api key in headers 'api_key'
req.headers:upsert("api_key", api_key['api_key']) if self.api_key['api_key'] then
req.headers:upsert("api_key", self.api_key['api_key'])
end
-- make the HTTP call -- make the HTTP call
local headers, stream, errno = req:go() local headers, stream, errno = req:go()
@ -159,7 +161,7 @@ function store_api:get_order_by_id(order_id)
if result == nil then if result == nil then
return nil, err3 return nil, err3
end end
return cast_order(result), headers return petstore_order.cast(result), headers
else else
local body, err, errno2 = stream:get_body_as_string() local body, err, errno2 = stream:get_body_as_string()
if not body then if not body then
@ -207,7 +209,7 @@ function store_api:place_order(body)
if result == nil then if result == nil then
return nil, err3 return nil, err3
end end
return cast_order(result), headers return petstore_order.cast(result), headers
else else
local body, err, errno2 = stream:get_body_as_string() local body, err, errno2 = stream:get_body_as_string()
if not body then if not body then
@ -219,3 +221,7 @@ function store_api:place_order(body)
end end
end end
return {
new = new_store_api;
}

View File

@ -16,12 +16,12 @@ local dkjson = require "dkjson"
local basexx = require "basexx" local basexx = require "basexx"
-- model import -- model import
local petstore_user_api = require "petstore.api.user_api" local petstore_user = require "petstore.model.user"
local petstore= {} local user_api = {}
local petstore_mt = { local user_api_mt = {
__name = "user_api"; __name = "user_api";
__index = petstore; __index = user_api;
} }
local function new_user_api(host, basePath, schemes) local function new_user_api(host, basePath, schemes)
@ -39,7 +39,7 @@ local function new_user_api(host, basePath, schemes)
http_password = nil; http_password = nil;
api_key = {}; api_key = {};
access_token = nil; access_token = nil;
}, petstore_mt) }, user_api_mt)
end end
function user_api:create_user(body) function user_api:create_user(body)
@ -222,7 +222,7 @@ function user_api:get_user_by_name(username)
if result == nil then if result == nil then
return nil, err3 return nil, err3
end end
return cast_user(result), headers return petstore_user.cast(result), headers
else else
local body, err, errno2 = stream:get_body_as_string() local body, err, errno2 = stream:get_body_as_string()
if not body then if not body then
@ -352,3 +352,7 @@ function user_api:update_user(username, body)
end end
end end
return {
new = new_user_api;
}

View File

@ -0,0 +1,12 @@
local petstore_client = require "petstore.api.pet_api"
local petstore_client_pet = require "petstore.model.pet"
local my_pet_http_api = petstore_client.new("petstore.swagger.io", "/v2", {"http"})
local my_pet = my_pet_http_api:get_pet_by_id(5)
for k,v in pairs(my_pet) do
print(k,v)
end
local my_new_pet = petstore_client_pet.new("Mr. Barks")
my_pet_http_api:add_pet(my_new_pet)