forked from loafle/openapi-generator-original
* 1st commit of lua generator * add petstore sample * various fixes based on feedback * better return handling * check status code 1st letter * add support for query parameters, auth, body param * more fixes based on daurnimator feedback * more fixes based on daurnimator feedback * fix a few more issues found by luac -p * use lower case for http header key name * more fixes based on feedback * update lua sample * skip auto-generated readme, doc, test files * use tab instead of 2-space * fix container return type * fix cast method call * fix cast function call
424 lines
12 KiB
Lua
424 lines
12 KiB
Lua
--[[
|
|
Swagger Petstore
|
|
|
|
This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters.
|
|
|
|
OpenAPI spec version: 1.0.0
|
|
Contact: apiteam@swagger.io
|
|
Generated by: https://github.com/swagger-api/swagger-codegen.git
|
|
]]
|
|
|
|
--package petstore
|
|
|
|
local http_request = require "http.request"
|
|
local http_util = require "http.util"
|
|
local dkjson = require "dkjson"
|
|
local basexx = require "basexx"
|
|
|
|
-- model import
|
|
local petstore_pet_api = require "petstore.api.pet_api"
|
|
|
|
local petstore= {}
|
|
local petstore_mt = {
|
|
__name = "pet_api";
|
|
__index = petstore;
|
|
}
|
|
|
|
local function new_pet_api(host, basePath, schemes)
|
|
local schemes_map = {}
|
|
for _,v in ipairs(schemes) do
|
|
schemes_map[v] = v
|
|
end
|
|
local default_scheme = schemes_map.https or schemes_map.http
|
|
return setmetatable({
|
|
host = host;
|
|
basePath = basePath or "http://petstore.swagger.io/v2";
|
|
schemes = schemes_map;
|
|
default_scheme = default_scheme;
|
|
http_username = nil;
|
|
http_password = nil;
|
|
api_key = {};
|
|
access_token = nil;
|
|
}, petstore_mt)
|
|
end
|
|
|
|
function pet_api:add_pet(body)
|
|
local req = http_request.new_from_uri({
|
|
scheme = self.default_scheme;
|
|
host = self.host;
|
|
path = string.format("%s/pet",
|
|
self.basePath);
|
|
})
|
|
|
|
-- set HTTP verb
|
|
req.headers:upsert(":method", "POST")
|
|
-- TODO: create a function to select proper accept
|
|
-- ref: https://github.com/swagger-api/swagger-codegen/pull/6252#issuecomment-321199879
|
|
--local var_content_type = { "application/json", "application/xml" }
|
|
req.headers:upsert("accept", "application/json")
|
|
|
|
-- TODO: create a function to select proper content-type
|
|
-- ref: https://github.com/swagger-api/swagger-codegen/pull/6252#issuecomment-321199879
|
|
--local var_accept = { "application/xml", "application/json" }
|
|
req.headers:upsert("content-type", "application/xml")
|
|
|
|
req:set_body(dkjson.encode(body))
|
|
|
|
-- oAuth
|
|
req.headers:upsert("authorization", "Bearer " .. self.access_token)
|
|
|
|
-- make the HTTP call
|
|
local headers, stream, errno = req:go()
|
|
if not headers then
|
|
return nil, stream, errno
|
|
end
|
|
local http_status = headers:get(":status")
|
|
if http_status:sub(1,1) == "2" then
|
|
return nil, headers
|
|
else
|
|
local body, err, errno2 = stream:get_body_as_string()
|
|
if not body then
|
|
return nil, err, errno2
|
|
end
|
|
stream:shutdown()
|
|
-- return the error message (http body)
|
|
return nil, http_status, body
|
|
end
|
|
end
|
|
|
|
function pet_api:delete_pet(pet_id, api_key)
|
|
local req = http_request.new_from_uri({
|
|
scheme = self.default_scheme;
|
|
host = self.host;
|
|
path = string.format("%s/pet/%s",
|
|
self.basePath, pet_id);
|
|
})
|
|
|
|
-- set HTTP verb
|
|
req.headers:upsert(":method", "DELETE")
|
|
-- TODO: create a function to select proper content-type
|
|
-- ref: https://github.com/swagger-api/swagger-codegen/pull/6252#issuecomment-321199879
|
|
--local var_accept = { "application/xml", "application/json" }
|
|
req.headers:upsert("content-type", "application/xml")
|
|
|
|
req.headers:upsert("api_key", api_key)
|
|
-- oAuth
|
|
req.headers:upsert("authorization", "Bearer " .. self.access_token)
|
|
|
|
-- make the HTTP call
|
|
local headers, stream, errno = req:go()
|
|
if not headers then
|
|
return nil, stream, errno
|
|
end
|
|
local http_status = headers:get(":status")
|
|
if http_status:sub(1,1) == "2" then
|
|
return nil, headers
|
|
else
|
|
local body, err, errno2 = stream:get_body_as_string()
|
|
if not body then
|
|
return nil, err, errno2
|
|
end
|
|
stream:shutdown()
|
|
-- return the error message (http body)
|
|
return nil, http_status, body
|
|
end
|
|
end
|
|
|
|
function pet_api:find_pets_by_status(status)
|
|
local req = http_request.new_from_uri({
|
|
scheme = self.default_scheme;
|
|
host = self.host;
|
|
path = string.format("%s/pet/findByStatus?status=%s",
|
|
self.basePath, http_util.encodeURIComponent(status));
|
|
})
|
|
|
|
-- set HTTP verb
|
|
req.headers:upsert(":method", "GET")
|
|
-- TODO: create a function to select proper content-type
|
|
-- ref: https://github.com/swagger-api/swagger-codegen/pull/6252#issuecomment-321199879
|
|
--local var_accept = { "application/xml", "application/json" }
|
|
req.headers:upsert("content-type", "application/xml")
|
|
|
|
-- oAuth
|
|
req.headers:upsert("authorization", "Bearer " .. self.access_token)
|
|
|
|
-- make the HTTP call
|
|
local headers, stream, errno = req:go()
|
|
if not headers then
|
|
return nil, stream, errno
|
|
end
|
|
local http_status = headers:get(":status")
|
|
if http_status:sub(1,1) == "2" then
|
|
local body, err, errno2 = stream:get_body_as_string()
|
|
-- exception when getting the HTTP body
|
|
if not body then
|
|
return nil, err, errno2
|
|
end
|
|
stream:shutdown()
|
|
local result, _, err3 = dkjson.decode(body)
|
|
-- exception when decoding the HTTP body
|
|
if result == nil then
|
|
return nil, err3
|
|
end
|
|
for _, ob in ipairs(result) do
|
|
cast_pet(ob)
|
|
end
|
|
return result, headers
|
|
else
|
|
local body, err, errno2 = stream:get_body_as_string()
|
|
if not body then
|
|
return nil, err, errno2
|
|
end
|
|
stream:shutdown()
|
|
-- return the error message (http body)
|
|
return nil, http_status, body
|
|
end
|
|
end
|
|
|
|
function pet_api:find_pets_by_tags(tags)
|
|
local req = http_request.new_from_uri({
|
|
scheme = self.default_scheme;
|
|
host = self.host;
|
|
path = string.format("%s/pet/findByTags?tags=%s",
|
|
self.basePath, http_util.encodeURIComponent(tags));
|
|
})
|
|
|
|
-- set HTTP verb
|
|
req.headers:upsert(":method", "GET")
|
|
-- TODO: create a function to select proper content-type
|
|
-- ref: https://github.com/swagger-api/swagger-codegen/pull/6252#issuecomment-321199879
|
|
--local var_accept = { "application/xml", "application/json" }
|
|
req.headers:upsert("content-type", "application/xml")
|
|
|
|
-- oAuth
|
|
req.headers:upsert("authorization", "Bearer " .. self.access_token)
|
|
|
|
-- make the HTTP call
|
|
local headers, stream, errno = req:go()
|
|
if not headers then
|
|
return nil, stream, errno
|
|
end
|
|
local http_status = headers:get(":status")
|
|
if http_status:sub(1,1) == "2" then
|
|
local body, err, errno2 = stream:get_body_as_string()
|
|
-- exception when getting the HTTP body
|
|
if not body then
|
|
return nil, err, errno2
|
|
end
|
|
stream:shutdown()
|
|
local result, _, err3 = dkjson.decode(body)
|
|
-- exception when decoding the HTTP body
|
|
if result == nil then
|
|
return nil, err3
|
|
end
|
|
for _, ob in ipairs(result) do
|
|
cast_pet(ob)
|
|
end
|
|
return result, headers
|
|
else
|
|
local body, err, errno2 = stream:get_body_as_string()
|
|
if not body then
|
|
return nil, err, errno2
|
|
end
|
|
stream:shutdown()
|
|
-- return the error message (http body)
|
|
return nil, http_status, body
|
|
end
|
|
end
|
|
|
|
function pet_api:get_pet_by_id(pet_id)
|
|
local req = http_request.new_from_uri({
|
|
scheme = self.default_scheme;
|
|
host = self.host;
|
|
path = string.format("%s/pet/%s",
|
|
self.basePath, pet_id);
|
|
})
|
|
|
|
-- set HTTP verb
|
|
req.headers:upsert(":method", "GET")
|
|
-- TODO: create a function to select proper content-type
|
|
-- ref: https://github.com/swagger-api/swagger-codegen/pull/6252#issuecomment-321199879
|
|
--local var_accept = { "application/xml", "application/json" }
|
|
req.headers:upsert("content-type", "application/xml")
|
|
|
|
-- api key in headers 'api_key'
|
|
req.headers:upsert("api_key", api_key['api_key'])
|
|
|
|
-- make the HTTP call
|
|
local headers, stream, errno = req:go()
|
|
if not headers then
|
|
return nil, stream, errno
|
|
end
|
|
local http_status = headers:get(":status")
|
|
if http_status:sub(1,1) == "2" then
|
|
local body, err, errno2 = stream:get_body_as_string()
|
|
-- exception when getting the HTTP body
|
|
if not body then
|
|
return nil, err, errno2
|
|
end
|
|
stream:shutdown()
|
|
local result, _, err3 = dkjson.decode(body)
|
|
-- exception when decoding the HTTP body
|
|
if result == nil then
|
|
return nil, err3
|
|
end
|
|
return cast_pet(result), headers
|
|
else
|
|
local body, err, errno2 = stream:get_body_as_string()
|
|
if not body then
|
|
return nil, err, errno2
|
|
end
|
|
stream:shutdown()
|
|
-- return the error message (http body)
|
|
return nil, http_status, body
|
|
end
|
|
end
|
|
|
|
function pet_api:update_pet(body)
|
|
local req = http_request.new_from_uri({
|
|
scheme = self.default_scheme;
|
|
host = self.host;
|
|
path = string.format("%s/pet",
|
|
self.basePath);
|
|
})
|
|
|
|
-- set HTTP verb
|
|
req.headers:upsert(":method", "PUT")
|
|
-- TODO: create a function to select proper accept
|
|
-- ref: https://github.com/swagger-api/swagger-codegen/pull/6252#issuecomment-321199879
|
|
--local var_content_type = { "application/json", "application/xml" }
|
|
req.headers:upsert("accept", "application/json")
|
|
|
|
-- TODO: create a function to select proper content-type
|
|
-- ref: https://github.com/swagger-api/swagger-codegen/pull/6252#issuecomment-321199879
|
|
--local var_accept = { "application/xml", "application/json" }
|
|
req.headers:upsert("content-type", "application/xml")
|
|
|
|
req:set_body(dkjson.encode(body))
|
|
|
|
-- oAuth
|
|
req.headers:upsert("authorization", "Bearer " .. self.access_token)
|
|
|
|
-- make the HTTP call
|
|
local headers, stream, errno = req:go()
|
|
if not headers then
|
|
return nil, stream, errno
|
|
end
|
|
local http_status = headers:get(":status")
|
|
if http_status:sub(1,1) == "2" then
|
|
return nil, headers
|
|
else
|
|
local body, err, errno2 = stream:get_body_as_string()
|
|
if not body then
|
|
return nil, err, errno2
|
|
end
|
|
stream:shutdown()
|
|
-- return the error message (http body)
|
|
return nil, http_status, body
|
|
end
|
|
end
|
|
|
|
function pet_api:update_pet_with_form(pet_id, name, status)
|
|
local req = http_request.new_from_uri({
|
|
scheme = self.default_scheme;
|
|
host = self.host;
|
|
path = string.format("%s/pet/%s",
|
|
self.basePath, pet_id);
|
|
})
|
|
|
|
-- set HTTP verb
|
|
req.headers:upsert(":method", "POST")
|
|
-- TODO: create a function to select proper accept
|
|
-- ref: https://github.com/swagger-api/swagger-codegen/pull/6252#issuecomment-321199879
|
|
--local var_content_type = { "application/x-www-form-urlencoded" }
|
|
req.headers:upsert("accept", "application/x-www-form-urlencoded")
|
|
|
|
-- TODO: create a function to select proper content-type
|
|
-- ref: https://github.com/swagger-api/swagger-codegen/pull/6252#issuecomment-321199879
|
|
--local var_accept = { "application/xml", "application/json" }
|
|
req.headers:upsert("content-type", "application/xml")
|
|
|
|
req:set_body(http_util.dict_to_query({
|
|
["name"] = name;
|
|
["status"] = status;
|
|
}))
|
|
-- oAuth
|
|
req.headers:upsert("authorization", "Bearer " .. self.access_token)
|
|
|
|
-- make the HTTP call
|
|
local headers, stream, errno = req:go()
|
|
if not headers then
|
|
return nil, stream, errno
|
|
end
|
|
local http_status = headers:get(":status")
|
|
if http_status:sub(1,1) == "2" then
|
|
return nil, headers
|
|
else
|
|
local body, err, errno2 = stream:get_body_as_string()
|
|
if not body then
|
|
return nil, err, errno2
|
|
end
|
|
stream:shutdown()
|
|
-- return the error message (http body)
|
|
return nil, http_status, body
|
|
end
|
|
end
|
|
|
|
function pet_api:upload_file(pet_id, additional_metadata, file)
|
|
local req = http_request.new_from_uri({
|
|
scheme = self.default_scheme;
|
|
host = self.host;
|
|
path = string.format("%s/pet/%s/uploadImage",
|
|
self.basePath, pet_id);
|
|
})
|
|
|
|
-- set HTTP verb
|
|
req.headers:upsert(":method", "POST")
|
|
-- TODO: create a function to select proper accept
|
|
-- ref: https://github.com/swagger-api/swagger-codegen/pull/6252#issuecomment-321199879
|
|
--local var_content_type = { "multipart/form-data" }
|
|
req.headers:upsert("accept", "multipart/form-data")
|
|
|
|
-- TODO: create a function to select proper content-type
|
|
-- ref: https://github.com/swagger-api/swagger-codegen/pull/6252#issuecomment-321199879
|
|
--local var_accept = { "application/json" }
|
|
req.headers:upsert("content-type", "application/json")
|
|
|
|
req:set_body(http_util.dict_to_query({
|
|
["additionalMetadata"] = additional_metadata;
|
|
["file"] = file;
|
|
}))
|
|
-- oAuth
|
|
req.headers:upsert("authorization", "Bearer " .. self.access_token)
|
|
|
|
-- make the HTTP call
|
|
local headers, stream, errno = req:go()
|
|
if not headers then
|
|
return nil, stream, errno
|
|
end
|
|
local http_status = headers:get(":status")
|
|
if http_status:sub(1,1) == "2" then
|
|
local body, err, errno2 = stream:get_body_as_string()
|
|
-- exception when getting the HTTP body
|
|
if not body then
|
|
return nil, err, errno2
|
|
end
|
|
stream:shutdown()
|
|
local result, _, err3 = dkjson.decode(body)
|
|
-- exception when decoding the HTTP body
|
|
if result == nil then
|
|
return nil, err3
|
|
end
|
|
return cast_api_response(result), headers
|
|
else
|
|
local body, err, errno2 = stream:get_body_as_string()
|
|
if not body then
|
|
return nil, err, errno2
|
|
end
|
|
stream:shutdown()
|
|
-- return the error message (http body)
|
|
return nil, http_status, body
|
|
end
|
|
end
|
|
|