forked from loafle/openapi-generator-original
[Elixir] Fixes Typespec for multiple return definitions (#7604)
* Respects multiple responses during typespec generation * Generate Samples
This commit is contained in:
@@ -727,34 +727,45 @@ public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig
|
||||
}
|
||||
}
|
||||
|
||||
sb.append("keyword()) :: {:ok, ");
|
||||
if (returnBaseType == null) {
|
||||
sb.append("nil");
|
||||
} else if (returnSimpleType) {
|
||||
if (!returnTypeIsPrimitive) {
|
||||
sb.append(moduleName);
|
||||
sb.append(".Model.");
|
||||
}
|
||||
sb.append(returnBaseType);
|
||||
sb.append(".t");
|
||||
} else if (returnContainer == null) {
|
||||
sb.append(returnBaseType);
|
||||
sb.append(".t");
|
||||
} else {
|
||||
if (returnContainer.equals("array") ||
|
||||
returnContainer.equals("set")) {
|
||||
sb.append("list(");
|
||||
if (!returnTypeIsPrimitive) {
|
||||
sb.append(moduleName);
|
||||
sb.append(".Model.");
|
||||
sb.append("keyword()) :: ");
|
||||
HashSet<String> uniqueResponseTypes = new HashSet<String>();
|
||||
for (CodegenResponse response : this.responses) {
|
||||
ExtendedCodegenResponse exResponse = (ExtendedCodegenResponse) response;
|
||||
StringBuilder returnEntry = new StringBuilder("");
|
||||
if (exResponse.baseType == null) {
|
||||
returnEntry.append("nil");
|
||||
} else if (exResponse.simpleType) {
|
||||
if (!exResponse.primitiveType) {
|
||||
returnEntry.append(moduleName);
|
||||
returnEntry.append(".Model.");
|
||||
}
|
||||
returnEntry.append(exResponse.baseType);
|
||||
returnEntry.append(".t");
|
||||
} else if (exResponse.containerType == null) {
|
||||
returnEntry.append(returnBaseType);
|
||||
returnEntry.append(".t");
|
||||
} else {
|
||||
if (exResponse.containerType.equals("array") ||
|
||||
exResponse.containerType.equals("set")) {
|
||||
returnEntry.append("list(");
|
||||
if (!exResponse.primitiveType) {
|
||||
returnEntry.append(moduleName);
|
||||
returnEntry.append(".Model.");
|
||||
}
|
||||
returnEntry.append(exResponse.baseType);
|
||||
returnEntry.append(".t)");
|
||||
} else if (exResponse.containerType.equals("map")) {
|
||||
returnEntry.append("map()");
|
||||
}
|
||||
sb.append(returnBaseType);
|
||||
sb.append(".t)");
|
||||
} else if (returnContainer.equals("map")) {
|
||||
sb.append("map()");
|
||||
}
|
||||
uniqueResponseTypes.add(returnEntry.toString());
|
||||
}
|
||||
sb.append("} | {:error, Tesla.Env.t}");
|
||||
|
||||
for (String returnType : uniqueResponseTypes) {
|
||||
sb.append("{:ok, ").append(returnType).append("} | ");
|
||||
}
|
||||
|
||||
sb.append("{:error, Tesla.Env.t}");
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ defmodule OpenapiPetstore.Api.Pet do
|
||||
{:ok, [%Pet{}, ...]} on success
|
||||
{:error, info} on failure
|
||||
"""
|
||||
@spec find_pets_by_status(Tesla.Env.client, list(String.t), keyword()) :: {:ok, list(OpenapiPetstore.Model.Pet.t)} | {:error, Tesla.Env.t}
|
||||
@spec find_pets_by_status(Tesla.Env.client, list(String.t), keyword()) :: {:ok, nil} | {:ok, list(OpenapiPetstore.Model.Pet.t)} | {:error, Tesla.Env.t}
|
||||
def find_pets_by_status(connection, status, _opts \\ []) do
|
||||
%{}
|
||||
|> method(:get)
|
||||
@@ -111,7 +111,7 @@ defmodule OpenapiPetstore.Api.Pet do
|
||||
{:ok, [%Pet{}, ...]} on success
|
||||
{:error, info} on failure
|
||||
"""
|
||||
@spec find_pets_by_tags(Tesla.Env.client, list(String.t), keyword()) :: {:ok, list(OpenapiPetstore.Model.Pet.t)} | {:error, Tesla.Env.t}
|
||||
@spec find_pets_by_tags(Tesla.Env.client, list(String.t), keyword()) :: {:ok, nil} | {:ok, list(OpenapiPetstore.Model.Pet.t)} | {:error, Tesla.Env.t}
|
||||
def find_pets_by_tags(connection, tags, _opts \\ []) do
|
||||
%{}
|
||||
|> method(:get)
|
||||
@@ -139,7 +139,7 @@ defmodule OpenapiPetstore.Api.Pet do
|
||||
{:ok, %OpenapiPetstore.Model.Pet{}} on success
|
||||
{:error, info} on failure
|
||||
"""
|
||||
@spec get_pet_by_id(Tesla.Env.client, integer(), keyword()) :: {:ok, OpenapiPetstore.Model.Pet.t} | {:error, Tesla.Env.t}
|
||||
@spec get_pet_by_id(Tesla.Env.client, integer(), keyword()) :: {:ok, nil} | {:ok, OpenapiPetstore.Model.Pet.t} | {:error, Tesla.Env.t}
|
||||
def get_pet_by_id(connection, pet_id, _opts \\ []) do
|
||||
%{}
|
||||
|> method(:get)
|
||||
|
||||
@@ -77,7 +77,7 @@ defmodule OpenapiPetstore.Api.Store do
|
||||
{:ok, %OpenapiPetstore.Model.Order{}} on success
|
||||
{:error, info} on failure
|
||||
"""
|
||||
@spec get_order_by_id(Tesla.Env.client, integer(), keyword()) :: {:ok, OpenapiPetstore.Model.Order.t} | {:error, Tesla.Env.t}
|
||||
@spec get_order_by_id(Tesla.Env.client, integer(), keyword()) :: {:ok, nil} | {:ok, OpenapiPetstore.Model.Order.t} | {:error, Tesla.Env.t}
|
||||
def get_order_by_id(connection, order_id, _opts \\ []) do
|
||||
%{}
|
||||
|> method(:get)
|
||||
@@ -104,7 +104,7 @@ defmodule OpenapiPetstore.Api.Store do
|
||||
{:ok, %OpenapiPetstore.Model.Order{}} on success
|
||||
{:error, info} on failure
|
||||
"""
|
||||
@spec place_order(Tesla.Env.client, OpenapiPetstore.Model.Order.t, keyword()) :: {:ok, OpenapiPetstore.Model.Order.t} | {:error, Tesla.Env.t}
|
||||
@spec place_order(Tesla.Env.client, OpenapiPetstore.Model.Order.t, keyword()) :: {:ok, nil} | {:ok, OpenapiPetstore.Model.Order.t} | {:error, Tesla.Env.t}
|
||||
def place_order(connection, body, _opts \\ []) do
|
||||
%{}
|
||||
|> method(:post)
|
||||
|
||||
@@ -130,7 +130,7 @@ defmodule OpenapiPetstore.Api.User do
|
||||
{:ok, %OpenapiPetstore.Model.User{}} on success
|
||||
{:error, info} on failure
|
||||
"""
|
||||
@spec get_user_by_name(Tesla.Env.client, String.t, keyword()) :: {:ok, OpenapiPetstore.Model.User.t} | {:error, Tesla.Env.t}
|
||||
@spec get_user_by_name(Tesla.Env.client, String.t, keyword()) :: {:ok, nil} | {:ok, OpenapiPetstore.Model.User.t} | {:error, Tesla.Env.t}
|
||||
def get_user_by_name(connection, username, _opts \\ []) do
|
||||
%{}
|
||||
|> method(:get)
|
||||
@@ -158,7 +158,7 @@ defmodule OpenapiPetstore.Api.User do
|
||||
{:ok, %OpenapiPetstore.Model.String.t{}} on success
|
||||
{:error, info} on failure
|
||||
"""
|
||||
@spec login_user(Tesla.Env.client, String.t, String.t, keyword()) :: {:ok, String.t} | {:error, Tesla.Env.t}
|
||||
@spec login_user(Tesla.Env.client, String.t, String.t, keyword()) :: {:ok, nil} | {:ok, String.t} | {:error, Tesla.Env.t}
|
||||
def login_user(connection, username, password, _opts \\ []) do
|
||||
%{}
|
||||
|> method(:get)
|
||||
|
||||
Reference in New Issue
Block a user