From e6b45bac7eb319c7226a0dc23c7a81d911234a84 Mon Sep 17 00:00:00 2001 From: Erik Timmers Date: Tue, 25 Sep 2018 11:50:26 +0200 Subject: [PATCH] [elm] Major refactoring; add discriminator support * Use the same name for all exposed encoder & decoders; * Improve imports (limit exposures); * Add support for OAS3 discriminators; * Distinct between 0.18 & latest mustache files. --- .../codegen/languages/ElmClientCodegen.java | 160 ++++++++---------- ...DateOnly019.mustache => DateOnly.mustache} | 10 +- .../main/resources/elm/DateOnly018.mustache | 10 +- ...DateTime019.mustache => DateTime.mustache} | 10 +- .../main/resources/elm/DateTime018.mustache | 10 +- .../elm/{Main019.mustache => Main.mustache} | 0 .../main/resources/elm/aliasDecoder.mustache | 7 +- .../main/resources/elm/aliasEncoder.mustache | 8 +- ...ckage.mustache => elm-package018.mustache} | 0 .../main/resources/elm/fieldEncoder.mustache | 2 +- .../src/main/resources/elm/model.mustache | 5 +- .../resources/elm/modelTypeAlias.mustache | 4 +- .../resources/elm/modelTypeArray.mustache | 8 +- .../elm/modelTypeDiscriminator.mustache | 44 +++-- .../resources/elm/modelTypePrimitive.mustache | 8 +- .../main/resources/elm/unionDecoder.mustache | 15 +- .../elm-0.18/src/Data/ApiResponse.elm | 17 +- .../petstore/elm-0.18/src/Data/Category.elm | 15 +- .../petstore/elm-0.18/src/Data/Order_.elm | 27 ++- .../client/petstore/elm-0.18/src/Data/Pet.elm | 27 ++- .../client/petstore/elm-0.18/src/Data/Tag.elm | 15 +- .../petstore/elm-0.18/src/Data/User.elm | 27 ++- .../client/petstore/elm-0.18/src/DateOnly.elm | 10 +- .../client/petstore/elm-0.18/src/DateTime.elm | 10 +- .../petstore/elm-0.18/src/Request/Pet.elm | 16 +- .../petstore/elm-0.18/src/Request/Store.elm | 8 +- .../petstore/elm-0.18/src/Request/User.elm | 12 +- .../petstore/elm/src/Data/ApiResponse.elm | 17 +- .../client/petstore/elm/src/Data/Category.elm | 15 +- .../client/petstore/elm/src/Data/Order_.elm | 27 ++- samples/client/petstore/elm/src/Data/Pet.elm | 27 ++- samples/client/petstore/elm/src/Data/Tag.elm | 15 +- samples/client/petstore/elm/src/Data/User.elm | 27 ++- samples/client/petstore/elm/src/DateOnly.elm | 10 +- samples/client/petstore/elm/src/DateTime.elm | 10 +- .../client/petstore/elm/src/Request/Pet.elm | 16 +- .../client/petstore/elm/src/Request/Store.elm | 8 +- .../client/petstore/elm/src/Request/User.elm | 12 +- 38 files changed, 315 insertions(+), 354 deletions(-) rename modules/openapi-generator/src/main/resources/elm/{DateOnly019.mustache => DateOnly.mustache} (74%) rename modules/openapi-generator/src/main/resources/elm/{DateTime019.mustache => DateTime.mustache} (72%) rename modules/openapi-generator/src/main/resources/elm/{Main019.mustache => Main.mustache} (100%) rename modules/openapi-generator/src/main/resources/elm/{elm-package.mustache => elm-package018.mustache} (100%) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java index b0c20144eb3f..8d94006be503 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java @@ -53,6 +53,7 @@ import java.util.Map; import java.util.Set; import java.util.TreeSet; +import java.util.stream.Collectors; public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig { private static final Logger LOGGER = LoggerFactory.getLogger(ElmClientCodegen.class); @@ -62,7 +63,7 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig { private static final String ELM_VERSION = "elmVersion"; private static final String ENCODER = "elmEncoder"; private static final String DECODER = "elmDecoder"; - private static final String X_DISCRIMINATOR_TYPE = "x-discriminator-value"; + private static final String DISCRIMINATOR_NAME = "discriminatorName"; private static final String UNION_TYPE = "elmUnionType"; protected String packageName = "openapi"; @@ -187,10 +188,18 @@ public void processOpts() { case ELM_018: LOGGER.info("Elm version = 0.18"); additionalProperties.put("isElm018", true); + supportingFiles.add(new SupportingFile("DateOnly018.mustache", "src", "DateOnly.elm")); + supportingFiles.add(new SupportingFile("DateTime018.mustache", "src", "DateTime.elm")); + supportingFiles.add(new SupportingFile("elm-package018.mustache", "", "elm-package.json")); + supportingFiles.add(new SupportingFile("Main018.mustache", "src", "Main.elm")); break; case ELM_019: LOGGER.info("Elm version = 0.19"); additionalProperties.put("isElm019", true); + supportingFiles.add(new SupportingFile("DateOnly.mustache", "src", "DateOnly.elm")); + supportingFiles.add(new SupportingFile("DateTime.mustache", "src", "DateTime.elm")); + supportingFiles.add(new SupportingFile("elm.mustache", "", "elm.json")); + supportingFiles.add(new SupportingFile("Main.mustache", "src", "Main.elm")); break; default: throw new RuntimeException("Undefined Elm version"); @@ -199,19 +208,6 @@ public void processOpts() { supportingFiles.add(new SupportingFile("Byte.mustache", "src", "Byte.elm")); supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore")); supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); - - if (ElmVersion.ELM_018.equals(elmVersion)) { - supportingFiles.add(new SupportingFile("DateOnly018.mustache", "src", "DateOnly.elm")); - supportingFiles.add(new SupportingFile("DateTime018.mustache", "src", "DateTime.elm")); - supportingFiles.add(new SupportingFile("elm-package.mustache", "", "elm-package.json")); - supportingFiles.add(new SupportingFile("Main018.mustache", "src", "Main.elm")); - } - if (ElmVersion.ELM_019.equals(elmVersion)) { - supportingFiles.add(new SupportingFile("DateOnly019.mustache", "src", "DateOnly.elm")); - supportingFiles.add(new SupportingFile("DateTime019.mustache", "src", "DateTime.elm")); - supportingFiles.add(new SupportingFile("elm.mustache", "", "elm.json")); - supportingFiles.add(new SupportingFile("Main019.mustache", "src", "Main.elm")); - } } @Override @@ -339,55 +335,40 @@ public int compare(CodegenModel cm1, CodegenModel cm2) { for (Map mo : models) { CodegenModel cm = (CodegenModel) mo.get("model"); if (cm.isEnum) { - this.addEncoderAndDecoder(cm.vendorExtensions, cm.classname, false, false); + addEncoderAndDecoder(cm.vendorExtensions, cm.classname, DataTypeExposure.EXPOSED); cm.vendorExtensions.put(UNION_TYPE, cm.classname); } else if (cm.isAlias) { - this.addEncoderAndDecoder(cm.vendorExtensions, cm.dataType, false, true); + addEncoderAndDecoder(cm.vendorExtensions, cm.dataType, DataTypeExposure.EXPOSED); } List elmImports = new ArrayList<>(); for (CodegenProperty property : cm.allVars) { if (property.complexType != null) { - elmImports.add(createPropertyImport(property)); + final ElmImport elmImport = createImport(property.complexType); + elmImports.add(elmImport); } } if (cm.isArrayModel) { if (cm.arrayModelType != null) { // add type imports - final ElmImport elmImport = new ElmImport(); - final String modulePrefix = customPrimitives.contains(cm.arrayModelType) ? "" : "Data."; - elmImport.moduleName = modulePrefix + cm.arrayModelType; - elmImport.exposures = new TreeSet<>(); - elmImport.exposures.add(cm.arrayModelType); - elmImport.exposures.add(org.openapitools.codegen.utils.StringUtils.camelize(cm.arrayModelType, true) + "Decoder"); - elmImport.exposures.add(org.openapitools.codegen.utils.StringUtils.camelize(cm.arrayModelType, true) + "Encoder"); - elmImport.hasExposures = true; + final ElmImport elmImport = createImport(cm.arrayModelType); elmImports.add(elmImport); } } if (cm.discriminator != null) { for (CodegenModel child : cm.children) { // add child imports - final ElmImport elmImport = new ElmImport(); - final String modulePrefix = customPrimitives.contains(child.classname) ? "" : "Data."; - elmImport.moduleName = modulePrefix + child.classname; - elmImport.exposures = new TreeSet<>(); - elmImport.exposures.add(child.classname); - elmImport.exposures.add(child.classVarName + "Decoder"); - elmImport.exposures.add(child.classVarName + "Encoder"); - elmImport.hasExposures = true; + final ElmImport elmImport = createImport(child.classname); elmImports.add(elmImport); - // set discriminator value to all children (recursively) - this.setDiscriminatorValue(child, cm.getDiscriminatorName(), this.getDiscriminatorValue(child)); + final String propertyName = cm.discriminator.getPropertyName(); + final List allVars = child.allVars.stream() + .filter(var -> !var.baseName.equals(propertyName)) + .collect(Collectors.toList()); + child.allVars.clear(); + child.allVars.addAll(allVars); - // add all non-discriminator vars - int index = 0; - for (CodegenProperty property : cm.vars) { - if (!cm.discriminator.equals(property.baseName)) { - child.vars.add(index++, property); - } - } + child.vendorExtensions.put(DISCRIMINATOR_NAME, propertyName); } } inner.put("elmImports", elmImports); @@ -396,42 +377,16 @@ public int compare(CodegenModel cm1, CodegenModel cm2) { return objs; } - private void setDiscriminatorValue(CodegenModel model, String baseName, String value) { - for (CodegenProperty prop : model.vars) { - if (prop.baseName.equals(baseName)) { - prop.discriminatorValue = value; - } - } - for (CodegenProperty prop : model.allVars) { - if (prop.baseName.equals(baseName)) { - prop.discriminatorValue = value; - } - } - if (model.children != null) { - final boolean newDiscriminator = model.discriminator != null; - for (CodegenModel child : model.children) { - this.setDiscriminatorValue(child, baseName, newDiscriminator ? value : this.getDiscriminatorValue(child)); - } - } - } - - private String getDiscriminatorValue(CodegenModel model) { - return model.vendorExtensions.containsKey(X_DISCRIMINATOR_TYPE) ? - (String) model.vendorExtensions.get(X_DISCRIMINATOR_TYPE) : model.classname; - } - - private ElmImport createPropertyImport(final CodegenProperty property) { + private ElmImport createImport(final String name) { final ElmImport elmImport = new ElmImport(); - final String modulePrefix = customPrimitives.contains(property.complexType) ? "" : "Data."; - elmImport.moduleName = modulePrefix + property.complexType; - elmImport.exposures = new TreeSet<>(); - elmImport.exposures.add(property.complexType); - if (property.vendorExtensions.containsKey(DECODER)) { - elmImport.exposures.add((String) property.vendorExtensions.get(DECODER)); - } - if (property.vendorExtensions.containsKey(ENCODER)) { - elmImport.exposures.add((String) property.vendorExtensions.get(ENCODER)); + final boolean isData = !customPrimitives.contains(name); + final String modulePrefix = isData ? "Data." : ""; + elmImport.moduleName = modulePrefix + name; + if (isData) { + elmImport.as = name; } + elmImport.exposures = new TreeSet<>(); + elmImport.exposures.add(name); elmImport.hasExposures = true; return elmImport; } @@ -463,7 +418,6 @@ public Map postProcessOperationsWithModels(Map o if (!dependencies.containsKey(op.bodyParam.dataType)) { dependencies.put(op.bodyParam.dataType, new TreeSet()); } - dependencies.get(op.bodyParam.dataType).add(encoder); } } for (CodegenResponse resp : op.responses) { @@ -475,7 +429,6 @@ public Map postProcessOperationsWithModels(Map o if (!dependencies.containsKey(resp.dataType)) { dependencies.put(resp.dataType, new TreeSet()); } - dependencies.get(resp.dataType).add(decoder); } } } @@ -485,6 +438,7 @@ public Map postProcessOperationsWithModels(Map o final ElmImport elmImport = new ElmImport(); final String key = entry.getKey(); elmImport.moduleName = "Data." + key; + elmImport.as = key; elmImport.exposures = entry.getValue(); elmImport.exposures.add(key); elmImport.hasExposures = true; @@ -582,10 +536,12 @@ public String getTypeDeclaration(Schema p) { public CodegenProperty fromProperty(String name, Schema p) { final CodegenProperty property = super.fromProperty(name, p); - final String dataType = property.isEnum ? property.baseName : property.dataType; - addEncoderAndDecoder(property.vendorExtensions, dataType, property.isMapContainer, property.isPrimitiveType && !property.isEnum); if (property.isEnum) { + addEncoderAndDecoder(property.vendorExtensions, property.baseName, DataTypeExposure.INTERNAL); property.vendorExtensions.put(UNION_TYPE, property.datatypeWithEnum); + } else { + final boolean isPrimitiveType = property.isMapContainer ? isPrimitiveDataType(property.dataType) : property.isPrimitiveType; + addEncoderAndDecoder(property.vendorExtensions, property.dataType, isPrimitiveType ? DataTypeExposure.PRIMITIVE : DataTypeExposure.EXTERNAL); } return property; @@ -595,33 +551,46 @@ public CodegenProperty fromProperty(String name, Schema p) { public CodegenResponse fromResponse(OpenAPI openAPI, String responseCode, ApiResponse resp) { final CodegenResponse response = super.fromResponse(openAPI, responseCode, resp); if (response.dataType != null) { - addEncoderAndDecoder(response.vendorExtensions, response.dataType, response.isMapContainer, response.primitiveType); + final boolean isPrimitiveType = response.isMapContainer ? isPrimitiveDataType(response.dataType) : response.primitiveType; + addEncoderAndDecoder(response.vendorExtensions, response.dataType, isPrimitiveType ? DataTypeExposure.PRIMITIVE : DataTypeExposure.EXTERNAL); } return response; } @Override public void postProcessParameter(CodegenParameter parameter) { - addEncoderAndDecoder(parameter.vendorExtensions, parameter.dataType, parameter.isMapContainer, parameter.isPrimitiveType); + final boolean isPrimitiveType = parameter.isMapContainer ? isPrimitiveDataType(parameter.dataType) : parameter.isPrimitiveType; + addEncoderAndDecoder(parameter.vendorExtensions, parameter.dataType, isPrimitiveType ? DataTypeExposure.PRIMITIVE : DataTypeExposure.EXTERNAL); } private boolean isPrimitiveDataType(String dataType) { return languageSpecificPrimitives.contains(dataType); } - private void addEncoderAndDecoder(Map vendorExtensions, String dataType, Boolean isMapContainer, Boolean isPrimitiveType) { - if (isMapContainer) { - isPrimitiveType = isPrimitiveDataType(dataType); - } + private void addEncoderAndDecoder(final Map vendorExtensions, final String dataType, final DataTypeExposure dataTypeExposure) { final String baseName = org.openapitools.codegen.utils.StringUtils.camelize(dataType, true); String encoderName; String decoderName; - if (isPrimitiveType) { - encoderName = "Encode." + baseName; - decoderName = "Decode." + baseName; - } else { - encoderName = baseName + "Encoder"; - decoderName = baseName + "Decoder"; + switch (dataTypeExposure) { + case EXPOSED: + decoderName = "decoder"; + encoderName = "encoder"; + break; + case INTERNAL: + encoderName = baseName + "Encoder"; + decoderName = baseName + "Decoder"; + break; + case EXTERNAL: + encoderName = dataType + ".encoder"; + decoderName = dataType + ".decoder"; + break; + case PRIMITIVE: + encoderName = "Encode." + baseName; + decoderName = "Decode." + baseName; + break; + default: + encoderName = ""; + decoderName = ""; } if (!vendorExtensions.containsKey(ENCODER)) { vendorExtensions.put(ENCODER, encoderName); @@ -631,6 +600,13 @@ private void addEncoderAndDecoder(Map vendorExtensions, String d } } + private enum DataTypeExposure { + EXPOSED, + INTERNAL, + EXTERNAL, + PRIMITIVE + } + private static class ElmImport { public String moduleName; public String as; diff --git a/modules/openapi-generator/src/main/resources/elm/DateOnly019.mustache b/modules/openapi-generator/src/main/resources/elm/DateOnly.mustache similarity index 74% rename from modules/openapi-generator/src/main/resources/elm/DateOnly019.mustache rename to modules/openapi-generator/src/main/resources/elm/DateOnly.mustache index c18b180ba11e..df5e681bc3fd 100644 --- a/modules/openapi-generator/src/main/resources/elm/DateOnly019.mustache +++ b/modules/openapi-generator/src/main/resources/elm/DateOnly.mustache @@ -1,4 +1,4 @@ -module DateOnly exposing (DateOnly, dateOnlyDecoder, dateOnlyEncoder) +module DateOnly exposing (DateOnly, decoder, encoder) import Iso8601 import Json.Decode as Decode exposing (Decoder) @@ -11,14 +11,14 @@ type alias DateOnly = Time.Posix -dateOnlyDecoder : Decoder DateOnly -dateOnlyDecoder = +decoder : Decoder DateOnly +decoder = Decode.string |> Decode.andThen decodeIsoString -dateOnlyEncoder : DateOnly -> Encode.Value -dateOnlyEncoder model = +encoder : DateOnly -> Encode.Value +encoder model = Iso8601.fromTime model |> String.left 10 |> Encode.string diff --git a/modules/openapi-generator/src/main/resources/elm/DateOnly018.mustache b/modules/openapi-generator/src/main/resources/elm/DateOnly018.mustache index 59551c7aa71e..aeb610cab257 100644 --- a/modules/openapi-generator/src/main/resources/elm/DateOnly018.mustache +++ b/modules/openapi-generator/src/main/resources/elm/DateOnly018.mustache @@ -1,4 +1,4 @@ -module DateOnly exposing (DateOnly, dateOnlyDecoder, dateOnlyEncoder) +module DateOnly exposing (DateOnly, decoder, encoder) import Date import Date.Extra exposing (fromIsoString, toFormattedString) @@ -11,14 +11,14 @@ type alias DateOnly = Date.Date -dateOnlyDecoder : Decoder DateOnly -dateOnlyDecoder = +decoder : Decoder DateOnly +decoder = Decode.string |> Decode.andThen decodeIsoString -dateOnlyEncoder : DateOnly -> Encode.Value -dateOnlyEncoder model = +encoder : DateOnly -> Encode.Value +encoder model = Encode.string <| toFormattedString "yyyy-MM-dd" model diff --git a/modules/openapi-generator/src/main/resources/elm/DateTime019.mustache b/modules/openapi-generator/src/main/resources/elm/DateTime.mustache similarity index 72% rename from modules/openapi-generator/src/main/resources/elm/DateTime019.mustache rename to modules/openapi-generator/src/main/resources/elm/DateTime.mustache index 28882c8cfa69..f7ad4ba814e9 100644 --- a/modules/openapi-generator/src/main/resources/elm/DateTime019.mustache +++ b/modules/openapi-generator/src/main/resources/elm/DateTime.mustache @@ -1,4 +1,4 @@ -module DateTime exposing (DateTime, dateTimeDecoder, dateTimeEncoder) +module DateTime exposing (DateTime, decoder, encoder) import Iso8601 import Json.Decode as Decode exposing (Decoder) @@ -11,14 +11,14 @@ type alias DateTime = Time.Posix -dateTimeDecoder : Decoder DateTime -dateTimeDecoder = +decoder : Decoder DateTime +decoder = Decode.string |> Decode.andThen decodeIsoString -dateTimeEncoder : DateTime -> Encode.Value -dateTimeEncoder model = +encoder : DateTime -> Encode.Value +encoder model = Encode.string <| Iso8601.fromTime model diff --git a/modules/openapi-generator/src/main/resources/elm/DateTime018.mustache b/modules/openapi-generator/src/main/resources/elm/DateTime018.mustache index d3638500a894..714b7fbb2746 100644 --- a/modules/openapi-generator/src/main/resources/elm/DateTime018.mustache +++ b/modules/openapi-generator/src/main/resources/elm/DateTime018.mustache @@ -1,4 +1,4 @@ -module DateTime exposing (DateTime, dateTimeDecoder, dateTimeEncoder) +module DateTime exposing (DateTime, decoder, encoder) import Date import Date.Extra exposing (fromIsoString, toIsoString) @@ -11,14 +11,14 @@ type alias DateTime = Date.Date -dateTimeDecoder : Decoder DateTime -dateTimeDecoder = +decoder : Decoder DateTime +decoder = Decode.string |> Decode.andThen decodeIsoString -dateTimeEncoder : DateTime -> Encode.Value -dateTimeEncoder model = +encoder : DateTime -> Encode.Value +encoder model = Encode.string <| toIsoString model diff --git a/modules/openapi-generator/src/main/resources/elm/Main019.mustache b/modules/openapi-generator/src/main/resources/elm/Main.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/elm/Main019.mustache rename to modules/openapi-generator/src/main/resources/elm/Main.mustache diff --git a/modules/openapi-generator/src/main/resources/elm/aliasDecoder.mustache b/modules/openapi-generator/src/main/resources/elm/aliasDecoder.mustache index 8a20470d27d2..c03d1c5b74f6 100644 --- a/modules/openapi-generator/src/main/resources/elm/aliasDecoder.mustache +++ b/modules/openapi-generator/src/main/resources/elm/aliasDecoder.mustache @@ -1,7 +1,6 @@ -{{classVarName}}Decoder : Decoder {{classname}} -{{classVarName}}Decoder = +decoder : Decoder {{classname}} +decoder = {{#isElm018}}decode{{/isElm018}}{{#isElm019}}Decode.succeed{{/isElm019}} {{classname}} {{#allVars}} -{{^discriminatorValue}} |> {{>fieldDecoder}} -{{/discriminatorValue}} + |> {{>fieldDecoder}} {{/allVars}} diff --git a/modules/openapi-generator/src/main/resources/elm/aliasEncoder.mustache b/modules/openapi-generator/src/main/resources/elm/aliasEncoder.mustache index 7889f1f03551..b4435dfb03d2 100644 --- a/modules/openapi-generator/src/main/resources/elm/aliasEncoder.mustache +++ b/modules/openapi-generator/src/main/resources/elm/aliasEncoder.mustache @@ -1,7 +1,7 @@ -{{classVarName}}Encoder : {{classname}} -> Encode.Value -{{classVarName}}Encoder model = +encoder : {{#vendorExtensions.discriminatorName}}String -> {{/vendorExtensions.discriminatorName}}{{classname}} -> Encode.Value +encoder {{#vendorExtensions.discriminatorName}}tag {{/vendorExtensions.discriminatorName}}model = Encode.object {{#allVars}} {{#-first}}[{{/-first}}{{^-first}},{{/-first}} {{>fieldEncoder}} -{{/allVars}} - ] \ No newline at end of file +{{/allVars}}{{#vendorExtensions.discriminatorName}} , ( "{{{vendorExtensions.discriminatorName}}}", Encode.string tag ){{/vendorExtensions.discriminatorName}} + ] diff --git a/modules/openapi-generator/src/main/resources/elm/elm-package.mustache b/modules/openapi-generator/src/main/resources/elm/elm-package018.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/elm/elm-package.mustache rename to modules/openapi-generator/src/main/resources/elm/elm-package018.mustache diff --git a/modules/openapi-generator/src/main/resources/elm/fieldEncoder.mustache b/modules/openapi-generator/src/main/resources/elm/fieldEncoder.mustache index ccd982a96c62..df4dc919d6eb 100644 --- a/modules/openapi-generator/src/main/resources/elm/fieldEncoder.mustache +++ b/modules/openapi-generator/src/main/resources/elm/fieldEncoder.mustache @@ -1 +1 @@ -( "{{baseName}}", {{#discriminatorValue}}Encode.string "{{discriminatorValue}}"{{/discriminatorValue}}{{^discriminatorValue}}{{^required}}withDefault Encode.null (map {{/required}}{{#isContainer}}(Encode.list {{#isElm018}}<< List.map {{/isElm018}}{{/isContainer}}{{vendorExtensions.elmEncoder}}{{#isContainer}}){{/isContainer}} model.{{name}}{{^required}}){{/required}}{{/discriminatorValue}} ) \ No newline at end of file +( "{{baseName}}", {{#discriminatorValue}}Encode.string "{{discriminatorValue}}"{{/discriminatorValue}}{{^discriminatorValue}}{{^required}}Maybe.withDefault Encode.null (Maybe.map {{/required}}{{#isContainer}}(Encode.list {{#isElm018}}<< List.map {{/isElm018}}{{/isContainer}}{{vendorExtensions.elmEncoder}}{{#isContainer}}){{/isContainer}} model.{{name}}{{^required}}){{/required}}{{/discriminatorValue}} ) \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/elm/model.mustache b/modules/openapi-generator/src/main/resources/elm/model.mustache index 2fdecbf47a1f..42fa46711d9c 100644 --- a/modules/openapi-generator/src/main/resources/elm/model.mustache +++ b/modules/openapi-generator/src/main/resources/elm/model.mustache @@ -1,11 +1,10 @@ {{>licenseInfo}} -module Data.{{classname}} exposing ({{#models}}{{#model}}{{classname}}{{#hasChildren}}(..){{/hasChildren}}{{#isEnum}}(..){{/isEnum}}{{^isEnum}}{{#vars}}{{#isEnum}}, {{vendorExtensions.elmUnionType}}(..){{/isEnum}}{{/vars}}{{/isEnum}}, {{classVarName}}Decoder, {{classVarName}}Encoder{{/model}}{{/models}}) +module Data.{{classname}} exposing ({{#models}}{{#model}}{{classname}}{{#hasChildren}}(..){{/hasChildren}}{{#isEnum}}(..){{/isEnum}}{{^isEnum}}{{#vars}}{{#isEnum}}, {{vendorExtensions.elmUnionType}}(..){{/isEnum}}{{/vars}}{{/isEnum}}, decoder, encoder{{/model}}{{/models}}) {{>imports}}import Json.Decode as Decode exposing (Decoder) import Json.Decode.Pipeline exposing ({{#isElm018}}decode, {{/isElm018}}optional, required) import Json.Encode as Encode -import Maybe exposing (map, withDefault) {{#models}} {{#model}} @@ -14,6 +13,6 @@ import Maybe exposing (map, withDefault) {-| {{{description}}} -} {{/description}} -{{#isEnum}}{{>modelTypeUnion}}{{/isEnum}}{{^isEnum}}{{#hasChildren}}{{>modelTypeDiscriminator}}{{/hasChildren}}{{^hasChildren}}{{#isAlias}}{{>modelTypePrimitive}}{{/isAlias}}{{^isAlias}}{{#isArrayModel}}{{>modelTypeArray}}{{/isArrayModel}}{{^isArrayModel}}{{>modelTypeAlias}}{{/isArrayModel}}{{/isAlias}}{{/hasChildren}}{{/isEnum}} +{{#isEnum}}{{>modelTypeUnion}}{{/isEnum}}{{^isEnum}}{{#discriminator}}{{>modelTypeDiscriminator}}{{/discriminator}}{{^discriminator}}{{#isAlias}}{{>modelTypePrimitive}}{{/isAlias}}{{^isAlias}}{{#isArrayModel}}{{>modelTypeArray}}{{/isArrayModel}}{{^isArrayModel}}{{>modelTypeAlias}}{{/isArrayModel}}{{/isAlias}}{{/discriminator}}{{/isEnum}} {{/model}} {{/models}} diff --git a/modules/openapi-generator/src/main/resources/elm/modelTypeAlias.mustache b/modules/openapi-generator/src/main/resources/elm/modelTypeAlias.mustache index fc796b4c23df..6063ffe8f4b6 100644 --- a/modules/openapi-generator/src/main/resources/elm/modelTypeAlias.mustache +++ b/modules/openapi-generator/src/main/resources/elm/modelTypeAlias.mustache @@ -1,6 +1,6 @@ type alias {{classname}} = - { {{#vars}}{{^-first}} , {{/-first}}{{name}} : {{^required}}Maybe {{#isContainer}}({{/isContainer}}{{/required}}{{#isContainer}}List {{/isContainer}}{{#isEnum}}{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{dataType}}{{/isEnum}}{{^required}}{{#isContainer}}){{/isContainer}}{{/required}} -{{/vars}} } + { {{#allVars}}{{^-first}} , {{/-first}}{{name}} : {{^required}}Maybe {{#isContainer}}({{/isContainer}}{{/required}}{{#isContainer}}List {{/isContainer}}{{#isEnum}}{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{dataType}}{{/isEnum}}{{^required}}{{#isContainer}}){{/isContainer}}{{/required}} +{{/allVars}} } {{#vars}} {{#isEnum}} diff --git a/modules/openapi-generator/src/main/resources/elm/modelTypeArray.mustache b/modules/openapi-generator/src/main/resources/elm/modelTypeArray.mustache index 30f67fc37fb9..a636dcce9f9d 100644 --- a/modules/openapi-generator/src/main/resources/elm/modelTypeArray.mustache +++ b/modules/openapi-generator/src/main/resources/elm/modelTypeArray.mustache @@ -2,11 +2,11 @@ type alias {{classname}} = {{parent}} -{{classVarName}}Decoder : Decoder {{classname}} -{{classVarName}}Decoder = +decoder : Decoder {{classname}} +decoder = Decode.list {{vendorExtensions.elmDecoder}} -{{classVarName}}Encoder : {{classname}} -> Encode.Value -{{classVarName}}Encoder items = +encoder : {{classname}} -> Encode.Value +encoder items = Encode.list {{#isElm018}}(List.map {{/isElm018}}{{vendorExtensions.elmEncoder}} items{{#isElm018}}){{/isElm018}} diff --git a/modules/openapi-generator/src/main/resources/elm/modelTypeDiscriminator.mustache b/modules/openapi-generator/src/main/resources/elm/modelTypeDiscriminator.mustache index 728c7a729ff3..61c71765842b 100644 --- a/modules/openapi-generator/src/main/resources/elm/modelTypeDiscriminator.mustache +++ b/modules/openapi-generator/src/main/resources/elm/modelTypeDiscriminator.mustache @@ -1,34 +1,32 @@ type {{classname}} -{{#children}} - {{#-first}}={{/-first}}{{^-first}}|{{/-first}} {{classname}}Type {{classname}} -{{/children}} +{{#mappedModels}} + {{#-first}}={{/-first}}{{^-first}}|{{/-first}} {{modelName}}Type {{modelName}} +{{/mappedModels}} -{{classVarName}}Decoder : Decoder {{classname}} -{{classVarName}}Decoder = - Decode.field "{{{discriminatorName}}}" Decode.string - |> Decode.andThen {{classVarName}}TypeDecoder +decoder : Decoder {{classname}} +decoder = + Decode.field "{{{discriminator.propertyName}}}" Decode.string + |> Decode.andThen {{classVarName}}Decoder -{{classVarName}}TypeDecoder : String -> Decoder {{classname}} -{{classVarName}}TypeDecoder {{{discriminatorName}}} = - case {{{discriminatorName}}} of -{{#children}} - "{{vendorExtensions.x-discriminator-value}}" -> - Decode.map {{classname}}Type {{classVarName}}Decoder +{{classVarName}}Decoder : String -> Decoder {{classname}} +{{classVarName}}Decoder tag = + case tag of +{{#mappedModels}} + "{{mappingName}}" -> + Decode.map {{modelName}}Type {{modelName}}.decoder -{{/children}} +{{/mappedModels}} _ -> - Decode.fail <| - "Trying to decode {{classname}}, but {{{discriminatorName}}} " - ++ {{{discriminatorName}}} ++ " is not supported." + Decode.fail <| "Trying to decode {{classname}}, but {{{discriminatorName}}} " ++ tag ++ " is not supported." -{{classVarName}}Encoder : {{classname}} -> Encode.Value -{{classVarName}}Encoder model = +encoder : {{classname}} -> Encode.Value +encoder model = case model of -{{#children}} - {{classname}}Type subModel -> - {{classVarName}}Encoder subModel +{{#mappedModels}} + {{modelName}}Type subModel -> + {{modelName}}.encoder "{{mappingName}}" subModel -{{/children}} +{{/mappedModels}} diff --git a/modules/openapi-generator/src/main/resources/elm/modelTypePrimitive.mustache b/modules/openapi-generator/src/main/resources/elm/modelTypePrimitive.mustache index 7c671f24a90b..864bde60fe1d 100644 --- a/modules/openapi-generator/src/main/resources/elm/modelTypePrimitive.mustache +++ b/modules/openapi-generator/src/main/resources/elm/modelTypePrimitive.mustache @@ -2,11 +2,11 @@ type alias {{classname}} = {{dataType}} -{{classVarName}}Decoder : Decoder {{classname}} -{{classVarName}}Decoder = +decoder : Decoder {{classname}} +decoder = {{vendorExtensions.elmDecoder}} -{{classVarName}}Encoder : {{classname}} -> Encode.Value -{{classVarName}}Encoder = +encoder : {{classname}} -> Encode.Value +encoder = {{vendorExtensions.elmEncoder}} diff --git a/modules/openapi-generator/src/main/resources/elm/unionDecoder.mustache b/modules/openapi-generator/src/main/resources/elm/unionDecoder.mustache index 4b1efba70ec9..4051dce9f6ea 100644 --- a/modules/openapi-generator/src/main/resources/elm/unionDecoder.mustache +++ b/modules/openapi-generator/src/main/resources/elm/unionDecoder.mustache @@ -1,15 +1,16 @@ {{vendorExtensions.elmDecoder}} : Decoder {{vendorExtensions.elmUnionType}} {{vendorExtensions.elmDecoder}} = Decode.string - |> Decode.andThen (\str -> - case str of + |> Decode.andThen + (\str -> + case str of {{#allowableValues}} {{#enumVars}} - {{{value}}} -> - Decode.succeed {{name}} + {{{value}}} -> + Decode.succeed {{name}} {{/enumVars}} {{/allowableValues}} - other -> - Decode.fail <| "Unknown type: " ++ other - ) \ No newline at end of file + other -> + Decode.fail <| "Unknown type: " ++ other + ) diff --git a/samples/client/petstore/elm-0.18/src/Data/ApiResponse.elm b/samples/client/petstore/elm-0.18/src/Data/ApiResponse.elm index b392f467ca51..36006df2fae3 100644 --- a/samples/client/petstore/elm-0.18/src/Data/ApiResponse.elm +++ b/samples/client/petstore/elm-0.18/src/Data/ApiResponse.elm @@ -10,12 +10,11 @@ -} -module Data.ApiResponse exposing (ApiResponse, apiResponseDecoder, apiResponseEncoder) +module Data.ApiResponse exposing (ApiResponse, decoder, encoder) import Json.Decode as Decode exposing (Decoder) import Json.Decode.Pipeline exposing (decode, optional, required) import Json.Encode as Encode -import Maybe exposing (map, withDefault) {-| Describes the result of uploading an image resource @@ -27,18 +26,18 @@ type alias ApiResponse = } -apiResponseDecoder : Decoder ApiResponse -apiResponseDecoder = +decoder : Decoder ApiResponse +decoder = decode ApiResponse |> optional "code" (Decode.nullable Decode.int) Nothing |> optional "type" (Decode.nullable Decode.string) Nothing |> optional "message" (Decode.nullable Decode.string) Nothing -apiResponseEncoder : ApiResponse -> Encode.Value -apiResponseEncoder model = +encoder : ApiResponse -> Encode.Value +encoder model = Encode.object - [ ( "code", withDefault Encode.null (map Encode.int model.code) ) - , ( "type", withDefault Encode.null (map Encode.string model.type_) ) - , ( "message", withDefault Encode.null (map Encode.string model.message) ) + [ ( "code", Maybe.withDefault Encode.null (Maybe.map Encode.int model.code) ) + , ( "type", Maybe.withDefault Encode.null (Maybe.map Encode.string model.type_) ) + , ( "message", Maybe.withDefault Encode.null (Maybe.map Encode.string model.message) ) ] diff --git a/samples/client/petstore/elm-0.18/src/Data/Category.elm b/samples/client/petstore/elm-0.18/src/Data/Category.elm index c47b3e1fa626..38144b5c5cb0 100644 --- a/samples/client/petstore/elm-0.18/src/Data/Category.elm +++ b/samples/client/petstore/elm-0.18/src/Data/Category.elm @@ -10,12 +10,11 @@ -} -module Data.Category exposing (Category, categoryDecoder, categoryEncoder) +module Data.Category exposing (Category, decoder, encoder) import Json.Decode as Decode exposing (Decoder) import Json.Decode.Pipeline exposing (decode, optional, required) import Json.Encode as Encode -import Maybe exposing (map, withDefault) {-| A category for a pet @@ -26,16 +25,16 @@ type alias Category = } -categoryDecoder : Decoder Category -categoryDecoder = +decoder : Decoder Category +decoder = decode Category |> optional "id" (Decode.nullable Decode.int) Nothing |> optional "name" (Decode.nullable Decode.string) Nothing -categoryEncoder : Category -> Encode.Value -categoryEncoder model = +encoder : Category -> Encode.Value +encoder model = Encode.object - [ ( "id", withDefault Encode.null (map Encode.int model.id) ) - , ( "name", withDefault Encode.null (map Encode.string model.name) ) + [ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) ) + , ( "name", Maybe.withDefault Encode.null (Maybe.map Encode.string model.name) ) ] diff --git a/samples/client/petstore/elm-0.18/src/Data/Order_.elm b/samples/client/petstore/elm-0.18/src/Data/Order_.elm index 8703f63c8ed3..b69e761b24f6 100644 --- a/samples/client/petstore/elm-0.18/src/Data/Order_.elm +++ b/samples/client/petstore/elm-0.18/src/Data/Order_.elm @@ -10,13 +10,12 @@ -} -module Data.Order_ exposing (Order_, Status(..), orderDecoder, orderEncoder) +module Data.Order_ exposing (Order_, Status(..), decoder, encoder) -import DateTime exposing (DateTime, dateTimeDecoder, dateTimeEncoder) +import DateTime exposing (DateTime) import Json.Decode as Decode exposing (Decoder) import Json.Decode.Pipeline exposing (decode, optional, required) import Json.Encode as Encode -import Maybe exposing (map, withDefault) {-| An order for a pets from the pet store @@ -37,26 +36,26 @@ type Status | Delivered -orderDecoder : Decoder Order_ -orderDecoder = +decoder : Decoder Order_ +decoder = decode Order_ |> optional "id" (Decode.nullable Decode.int) Nothing |> optional "petId" (Decode.nullable Decode.int) Nothing |> optional "quantity" (Decode.nullable Decode.int) Nothing - |> optional "shipDate" (Decode.nullable dateTimeDecoder) Nothing + |> optional "shipDate" (Decode.nullable DateTime.decoder) Nothing |> optional "status" (Decode.nullable statusDecoder) Nothing |> optional "complete" (Decode.nullable Decode.bool) (Just False) -orderEncoder : Order_ -> Encode.Value -orderEncoder model = +encoder : Order_ -> Encode.Value +encoder model = Encode.object - [ ( "id", withDefault Encode.null (map Encode.int model.id) ) - , ( "petId", withDefault Encode.null (map Encode.int model.petId) ) - , ( "quantity", withDefault Encode.null (map Encode.int model.quantity) ) - , ( "shipDate", withDefault Encode.null (map dateTimeEncoder model.shipDate) ) - , ( "status", withDefault Encode.null (map statusEncoder model.status) ) - , ( "complete", withDefault Encode.null (map Encode.bool model.complete) ) + [ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) ) + , ( "petId", Maybe.withDefault Encode.null (Maybe.map Encode.int model.petId) ) + , ( "quantity", Maybe.withDefault Encode.null (Maybe.map Encode.int model.quantity) ) + , ( "shipDate", Maybe.withDefault Encode.null (Maybe.map DateTime.encoder model.shipDate) ) + , ( "status", Maybe.withDefault Encode.null (Maybe.map statusEncoder model.status) ) + , ( "complete", Maybe.withDefault Encode.null (Maybe.map Encode.bool model.complete) ) ] diff --git a/samples/client/petstore/elm-0.18/src/Data/Pet.elm b/samples/client/petstore/elm-0.18/src/Data/Pet.elm index 76fb0e4d0a2c..752126f02938 100644 --- a/samples/client/petstore/elm-0.18/src/Data/Pet.elm +++ b/samples/client/petstore/elm-0.18/src/Data/Pet.elm @@ -10,14 +10,13 @@ -} -module Data.Pet exposing (Pet, Status(..), petDecoder, petEncoder) +module Data.Pet exposing (Pet, Status(..), decoder, encoder) -import Data.Category exposing (Category, categoryDecoder, categoryEncoder) -import Data.Tag exposing (Tag, tagDecoder, tagEncoder) +import Data.Category as Category exposing (Category) +import Data.Tag as Tag exposing (Tag) import Json.Decode as Decode exposing (Decoder) import Json.Decode.Pipeline exposing (decode, optional, required) import Json.Encode as Encode -import Maybe exposing (map, withDefault) {-| A pet for sale in the pet store @@ -38,26 +37,26 @@ type Status | Sold -petDecoder : Decoder Pet -petDecoder = +decoder : Decoder Pet +decoder = decode Pet |> optional "id" (Decode.nullable Decode.int) Nothing - |> optional "category" (Decode.nullable categoryDecoder) Nothing + |> optional "category" (Decode.nullable Category.decoder) Nothing |> required "name" Decode.string |> required "photoUrls" (Decode.list Decode.string) - |> optional "tags" (Decode.nullable (Decode.list tagDecoder)) Nothing + |> optional "tags" (Decode.nullable (Decode.list Tag.decoder)) Nothing |> optional "status" (Decode.nullable statusDecoder) Nothing -petEncoder : Pet -> Encode.Value -petEncoder model = +encoder : Pet -> Encode.Value +encoder model = Encode.object - [ ( "id", withDefault Encode.null (map Encode.int model.id) ) - , ( "category", withDefault Encode.null (map categoryEncoder model.category) ) + [ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) ) + , ( "category", Maybe.withDefault Encode.null (Maybe.map Category.encoder model.category) ) , ( "name", Encode.string model.name ) , ( "photoUrls", (Encode.list << List.map Encode.string) model.photoUrls ) - , ( "tags", withDefault Encode.null (map (Encode.list << List.map tagEncoder) model.tags) ) - , ( "status", withDefault Encode.null (map statusEncoder model.status) ) + , ( "tags", Maybe.withDefault Encode.null (Maybe.map (Encode.list << List.map Tag.encoder) model.tags) ) + , ( "status", Maybe.withDefault Encode.null (Maybe.map statusEncoder model.status) ) ] diff --git a/samples/client/petstore/elm-0.18/src/Data/Tag.elm b/samples/client/petstore/elm-0.18/src/Data/Tag.elm index 338eaa7ad270..906e6f7286ff 100644 --- a/samples/client/petstore/elm-0.18/src/Data/Tag.elm +++ b/samples/client/petstore/elm-0.18/src/Data/Tag.elm @@ -10,12 +10,11 @@ -} -module Data.Tag exposing (Tag, tagDecoder, tagEncoder) +module Data.Tag exposing (Tag, decoder, encoder) import Json.Decode as Decode exposing (Decoder) import Json.Decode.Pipeline exposing (decode, optional, required) import Json.Encode as Encode -import Maybe exposing (map, withDefault) {-| A tag for a pet @@ -26,16 +25,16 @@ type alias Tag = } -tagDecoder : Decoder Tag -tagDecoder = +decoder : Decoder Tag +decoder = decode Tag |> optional "id" (Decode.nullable Decode.int) Nothing |> optional "name" (Decode.nullable Decode.string) Nothing -tagEncoder : Tag -> Encode.Value -tagEncoder model = +encoder : Tag -> Encode.Value +encoder model = Encode.object - [ ( "id", withDefault Encode.null (map Encode.int model.id) ) - , ( "name", withDefault Encode.null (map Encode.string model.name) ) + [ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) ) + , ( "name", Maybe.withDefault Encode.null (Maybe.map Encode.string model.name) ) ] diff --git a/samples/client/petstore/elm-0.18/src/Data/User.elm b/samples/client/petstore/elm-0.18/src/Data/User.elm index 2b873692d2dc..1d8b44b4b96a 100644 --- a/samples/client/petstore/elm-0.18/src/Data/User.elm +++ b/samples/client/petstore/elm-0.18/src/Data/User.elm @@ -10,12 +10,11 @@ -} -module Data.User exposing (User, userDecoder, userEncoder) +module Data.User exposing (User, decoder, encoder) import Json.Decode as Decode exposing (Decoder) import Json.Decode.Pipeline exposing (decode, optional, required) import Json.Encode as Encode -import Maybe exposing (map, withDefault) {-| A User who is purchasing from the pet store @@ -32,8 +31,8 @@ type alias User = } -userDecoder : Decoder User -userDecoder = +decoder : Decoder User +decoder = decode User |> optional "id" (Decode.nullable Decode.int) Nothing |> optional "username" (Decode.nullable Decode.string) Nothing @@ -45,15 +44,15 @@ userDecoder = |> optional "userStatus" (Decode.nullable Decode.int) Nothing -userEncoder : User -> Encode.Value -userEncoder model = +encoder : User -> Encode.Value +encoder model = Encode.object - [ ( "id", withDefault Encode.null (map Encode.int model.id) ) - , ( "username", withDefault Encode.null (map Encode.string model.username) ) - , ( "firstName", withDefault Encode.null (map Encode.string model.firstName) ) - , ( "lastName", withDefault Encode.null (map Encode.string model.lastName) ) - , ( "email", withDefault Encode.null (map Encode.string model.email) ) - , ( "password", withDefault Encode.null (map Encode.string model.password) ) - , ( "phone", withDefault Encode.null (map Encode.string model.phone) ) - , ( "userStatus", withDefault Encode.null (map Encode.int model.userStatus) ) + [ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) ) + , ( "username", Maybe.withDefault Encode.null (Maybe.map Encode.string model.username) ) + , ( "firstName", Maybe.withDefault Encode.null (Maybe.map Encode.string model.firstName) ) + , ( "lastName", Maybe.withDefault Encode.null (Maybe.map Encode.string model.lastName) ) + , ( "email", Maybe.withDefault Encode.null (Maybe.map Encode.string model.email) ) + , ( "password", Maybe.withDefault Encode.null (Maybe.map Encode.string model.password) ) + , ( "phone", Maybe.withDefault Encode.null (Maybe.map Encode.string model.phone) ) + , ( "userStatus", Maybe.withDefault Encode.null (Maybe.map Encode.int model.userStatus) ) ] diff --git a/samples/client/petstore/elm-0.18/src/DateOnly.elm b/samples/client/petstore/elm-0.18/src/DateOnly.elm index 59551c7aa71e..aeb610cab257 100644 --- a/samples/client/petstore/elm-0.18/src/DateOnly.elm +++ b/samples/client/petstore/elm-0.18/src/DateOnly.elm @@ -1,4 +1,4 @@ -module DateOnly exposing (DateOnly, dateOnlyDecoder, dateOnlyEncoder) +module DateOnly exposing (DateOnly, decoder, encoder) import Date import Date.Extra exposing (fromIsoString, toFormattedString) @@ -11,14 +11,14 @@ type alias DateOnly = Date.Date -dateOnlyDecoder : Decoder DateOnly -dateOnlyDecoder = +decoder : Decoder DateOnly +decoder = Decode.string |> Decode.andThen decodeIsoString -dateOnlyEncoder : DateOnly -> Encode.Value -dateOnlyEncoder model = +encoder : DateOnly -> Encode.Value +encoder model = Encode.string <| toFormattedString "yyyy-MM-dd" model diff --git a/samples/client/petstore/elm-0.18/src/DateTime.elm b/samples/client/petstore/elm-0.18/src/DateTime.elm index d3638500a894..714b7fbb2746 100644 --- a/samples/client/petstore/elm-0.18/src/DateTime.elm +++ b/samples/client/petstore/elm-0.18/src/DateTime.elm @@ -1,4 +1,4 @@ -module DateTime exposing (DateTime, dateTimeDecoder, dateTimeEncoder) +module DateTime exposing (DateTime, decoder, encoder) import Date import Date.Extra exposing (fromIsoString, toIsoString) @@ -11,14 +11,14 @@ type alias DateTime = Date.Date -dateTimeDecoder : Decoder DateTime -dateTimeDecoder = +decoder : Decoder DateTime +decoder = Decode.string |> Decode.andThen decodeIsoString -dateTimeEncoder : DateTime -> Encode.Value -dateTimeEncoder model = +encoder : DateTime -> Encode.Value +encoder model = Encode.string <| toIsoString model diff --git a/samples/client/petstore/elm-0.18/src/Request/Pet.elm b/samples/client/petstore/elm-0.18/src/Request/Pet.elm index 948ab5d3c019..24ddb56fbb36 100644 --- a/samples/client/petstore/elm-0.18/src/Request/Pet.elm +++ b/samples/client/petstore/elm-0.18/src/Request/Pet.elm @@ -12,8 +12,8 @@ module Request.Pet exposing (addPet, deletePet, findPetsByStatus, findPetsByTags, getPetById, updatePet, updatePetWithForm, uploadFile) -import Data.ApiResponse exposing (ApiResponse, apiResponseDecoder) -import Data.Pet exposing (Pet, petDecoder, petEncoder) +import Data.ApiResponse as ApiResponse exposing (ApiResponse) +import Data.Pet as Pet exposing (Pet) import Dict import Http import Json.Decode as Decode @@ -29,7 +29,7 @@ addPet model = { method = "POST" , url = basePath ++ "/pet" , headers = [] - , body = Http.jsonBody <| petEncoder model + , body = Http.jsonBody <| Pet.encoder model , expect = Http.expectStringResponse (\_ -> Ok ()) , timeout = Just 30000 , withCredentials = False @@ -58,7 +58,7 @@ findPetsByStatus = , url = basePath ++ "/pet/findByStatus" , headers = [] , body = Http.emptyBody - , expect = Http.expectJson (Decode.list petDecoder) + , expect = Http.expectJson (Decode.list Pet.decoder) , timeout = Just 30000 , withCredentials = False } @@ -73,7 +73,7 @@ findPetsByTags = , url = basePath ++ "/pet/findByTags" , headers = [] , body = Http.emptyBody - , expect = Http.expectJson (Decode.list petDecoder) + , expect = Http.expectJson (Decode.list Pet.decoder) , timeout = Just 30000 , withCredentials = False } @@ -88,7 +88,7 @@ getPetById petId = , url = basePath ++ "/pet/" ++ toString petId , headers = [] , body = Http.emptyBody - , expect = Http.expectJson petDecoder + , expect = Http.expectJson Pet.decoder , timeout = Just 30000 , withCredentials = False } @@ -100,7 +100,7 @@ updatePet model = { method = "PUT" , url = basePath ++ "/pet" , headers = [] - , body = Http.jsonBody <| petEncoder model + , body = Http.jsonBody <| Pet.encoder model , expect = Http.expectStringResponse (\_ -> Ok ()) , timeout = Just 30000 , withCredentials = False @@ -127,7 +127,7 @@ uploadFile petId = , url = basePath ++ "/pet/" ++ toString petId ++ "/uploadImage" , headers = [] , body = Http.emptyBody - , expect = Http.expectJson apiResponseDecoder + , expect = Http.expectJson ApiResponse.decoder , timeout = Just 30000 , withCredentials = False } diff --git a/samples/client/petstore/elm-0.18/src/Request/Store.elm b/samples/client/petstore/elm-0.18/src/Request/Store.elm index 2e98105a2f4e..6786fbb25187 100644 --- a/samples/client/petstore/elm-0.18/src/Request/Store.elm +++ b/samples/client/petstore/elm-0.18/src/Request/Store.elm @@ -12,7 +12,7 @@ module Request.Store exposing (deleteOrder, getInventory, getOrderById, placeOrder) -import Data.Order_ exposing (Order_, orderDecoder, orderEncoder) +import Data.Order_ as Order_ exposing (Order_) import Dict import Http import Json.Decode as Decode @@ -61,7 +61,7 @@ getOrderById orderId = , url = basePath ++ "/store/order/" ++ toString orderId , headers = [] , body = Http.emptyBody - , expect = Http.expectJson orderDecoder + , expect = Http.expectJson Order_.decoder , timeout = Just 30000 , withCredentials = False } @@ -73,8 +73,8 @@ placeOrder model = { method = "POST" , url = basePath ++ "/store/order" , headers = [] - , body = Http.jsonBody <| orderEncoder model - , expect = Http.expectJson orderDecoder + , body = Http.jsonBody <| Order_.encoder model + , expect = Http.expectJson Order_.decoder , timeout = Just 30000 , withCredentials = False } diff --git a/samples/client/petstore/elm-0.18/src/Request/User.elm b/samples/client/petstore/elm-0.18/src/Request/User.elm index e6bbbb32ed5d..b466fa6c5168 100644 --- a/samples/client/petstore/elm-0.18/src/Request/User.elm +++ b/samples/client/petstore/elm-0.18/src/Request/User.elm @@ -12,7 +12,7 @@ module Request.User exposing (createUser, createUsersWithArrayInput, createUsersWithListInput, deleteUser, getUserByName, loginUser, logoutUser, updateUser) -import Data.User exposing (User, userDecoder, userEncoder) +import Data.User as User exposing (User) import Dict import Http import Json.Decode as Decode @@ -30,7 +30,7 @@ createUser model = { method = "POST" , url = basePath ++ "/user" , headers = [] - , body = Http.jsonBody <| userEncoder model + , body = Http.jsonBody <| User.encoder model , expect = Http.expectStringResponse (\_ -> Ok ()) , timeout = Just 30000 , withCredentials = False @@ -43,7 +43,7 @@ createUsersWithArrayInput model = { method = "POST" , url = basePath ++ "/user/createWithArray" , headers = [] - , body = Http.jsonBody <| userEncoder model + , body = Http.jsonBody <| User.encoder model , expect = Http.expectStringResponse (\_ -> Ok ()) , timeout = Just 30000 , withCredentials = False @@ -56,7 +56,7 @@ createUsersWithListInput model = { method = "POST" , url = basePath ++ "/user/createWithList" , headers = [] - , body = Http.jsonBody <| userEncoder model + , body = Http.jsonBody <| User.encoder model , expect = Http.expectStringResponse (\_ -> Ok ()) , timeout = Just 30000 , withCredentials = False @@ -85,7 +85,7 @@ getUserByName username = , url = basePath ++ "/user/" ++ username , headers = [] , body = Http.emptyBody - , expect = Http.expectJson userDecoder + , expect = Http.expectJson User.decoder , timeout = Just 30000 , withCredentials = False } @@ -125,7 +125,7 @@ updateUser username model = { method = "PUT" , url = basePath ++ "/user/" ++ username , headers = [] - , body = Http.jsonBody <| userEncoder model + , body = Http.jsonBody <| User.encoder model , expect = Http.expectStringResponse (\_ -> Ok ()) , timeout = Just 30000 , withCredentials = False diff --git a/samples/client/petstore/elm/src/Data/ApiResponse.elm b/samples/client/petstore/elm/src/Data/ApiResponse.elm index 9bb9480a8aee..2227c89ad88d 100644 --- a/samples/client/petstore/elm/src/Data/ApiResponse.elm +++ b/samples/client/petstore/elm/src/Data/ApiResponse.elm @@ -10,12 +10,11 @@ -} -module Data.ApiResponse exposing (ApiResponse, apiResponseDecoder, apiResponseEncoder) +module Data.ApiResponse exposing (ApiResponse, decoder, encoder) import Json.Decode as Decode exposing (Decoder) import Json.Decode.Pipeline exposing (optional, required) import Json.Encode as Encode -import Maybe exposing (map, withDefault) {-| Describes the result of uploading an image resource @@ -27,18 +26,18 @@ type alias ApiResponse = } -apiResponseDecoder : Decoder ApiResponse -apiResponseDecoder = +decoder : Decoder ApiResponse +decoder = Decode.succeed ApiResponse |> optional "code" (Decode.nullable Decode.int) Nothing |> optional "type" (Decode.nullable Decode.string) Nothing |> optional "message" (Decode.nullable Decode.string) Nothing -apiResponseEncoder : ApiResponse -> Encode.Value -apiResponseEncoder model = +encoder : ApiResponse -> Encode.Value +encoder model = Encode.object - [ ( "code", withDefault Encode.null (map Encode.int model.code) ) - , ( "type", withDefault Encode.null (map Encode.string model.type_) ) - , ( "message", withDefault Encode.null (map Encode.string model.message) ) + [ ( "code", Maybe.withDefault Encode.null (Maybe.map Encode.int model.code) ) + , ( "type", Maybe.withDefault Encode.null (Maybe.map Encode.string model.type_) ) + , ( "message", Maybe.withDefault Encode.null (Maybe.map Encode.string model.message) ) ] diff --git a/samples/client/petstore/elm/src/Data/Category.elm b/samples/client/petstore/elm/src/Data/Category.elm index 01b80800072e..b927627fe70d 100644 --- a/samples/client/petstore/elm/src/Data/Category.elm +++ b/samples/client/petstore/elm/src/Data/Category.elm @@ -10,12 +10,11 @@ -} -module Data.Category exposing (Category, categoryDecoder, categoryEncoder) +module Data.Category exposing (Category, decoder, encoder) import Json.Decode as Decode exposing (Decoder) import Json.Decode.Pipeline exposing (optional, required) import Json.Encode as Encode -import Maybe exposing (map, withDefault) {-| A category for a pet @@ -26,16 +25,16 @@ type alias Category = } -categoryDecoder : Decoder Category -categoryDecoder = +decoder : Decoder Category +decoder = Decode.succeed Category |> optional "id" (Decode.nullable Decode.int) Nothing |> optional "name" (Decode.nullable Decode.string) Nothing -categoryEncoder : Category -> Encode.Value -categoryEncoder model = +encoder : Category -> Encode.Value +encoder model = Encode.object - [ ( "id", withDefault Encode.null (map Encode.int model.id) ) - , ( "name", withDefault Encode.null (map Encode.string model.name) ) + [ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) ) + , ( "name", Maybe.withDefault Encode.null (Maybe.map Encode.string model.name) ) ] diff --git a/samples/client/petstore/elm/src/Data/Order_.elm b/samples/client/petstore/elm/src/Data/Order_.elm index 3985c150336c..45d086df7175 100644 --- a/samples/client/petstore/elm/src/Data/Order_.elm +++ b/samples/client/petstore/elm/src/Data/Order_.elm @@ -10,13 +10,12 @@ -} -module Data.Order_ exposing (Order_, Status(..), orderDecoder, orderEncoder) +module Data.Order_ exposing (Order_, Status(..), decoder, encoder) -import DateTime exposing (DateTime, dateTimeDecoder, dateTimeEncoder) +import DateTime exposing (DateTime) import Json.Decode as Decode exposing (Decoder) import Json.Decode.Pipeline exposing (optional, required) import Json.Encode as Encode -import Maybe exposing (map, withDefault) {-| An order for a pets from the pet store @@ -37,26 +36,26 @@ type Status | Delivered -orderDecoder : Decoder Order_ -orderDecoder = +decoder : Decoder Order_ +decoder = Decode.succeed Order_ |> optional "id" (Decode.nullable Decode.int) Nothing |> optional "petId" (Decode.nullable Decode.int) Nothing |> optional "quantity" (Decode.nullable Decode.int) Nothing - |> optional "shipDate" (Decode.nullable dateTimeDecoder) Nothing + |> optional "shipDate" (Decode.nullable DateTime.decoder) Nothing |> optional "status" (Decode.nullable statusDecoder) Nothing |> optional "complete" (Decode.nullable Decode.bool) (Just False) -orderEncoder : Order_ -> Encode.Value -orderEncoder model = +encoder : Order_ -> Encode.Value +encoder model = Encode.object - [ ( "id", withDefault Encode.null (map Encode.int model.id) ) - , ( "petId", withDefault Encode.null (map Encode.int model.petId) ) - , ( "quantity", withDefault Encode.null (map Encode.int model.quantity) ) - , ( "shipDate", withDefault Encode.null (map dateTimeEncoder model.shipDate) ) - , ( "status", withDefault Encode.null (map statusEncoder model.status) ) - , ( "complete", withDefault Encode.null (map Encode.bool model.complete) ) + [ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) ) + , ( "petId", Maybe.withDefault Encode.null (Maybe.map Encode.int model.petId) ) + , ( "quantity", Maybe.withDefault Encode.null (Maybe.map Encode.int model.quantity) ) + , ( "shipDate", Maybe.withDefault Encode.null (Maybe.map DateTime.encoder model.shipDate) ) + , ( "status", Maybe.withDefault Encode.null (Maybe.map statusEncoder model.status) ) + , ( "complete", Maybe.withDefault Encode.null (Maybe.map Encode.bool model.complete) ) ] diff --git a/samples/client/petstore/elm/src/Data/Pet.elm b/samples/client/petstore/elm/src/Data/Pet.elm index f0968e4c1db8..ed15ad08d2b4 100644 --- a/samples/client/petstore/elm/src/Data/Pet.elm +++ b/samples/client/petstore/elm/src/Data/Pet.elm @@ -10,14 +10,13 @@ -} -module Data.Pet exposing (Pet, Status(..), petDecoder, petEncoder) +module Data.Pet exposing (Pet, Status(..), decoder, encoder) -import Data.Category exposing (Category, categoryDecoder, categoryEncoder) -import Data.Tag exposing (Tag, tagDecoder, tagEncoder) +import Data.Category as Category exposing (Category) +import Data.Tag as Tag exposing (Tag) import Json.Decode as Decode exposing (Decoder) import Json.Decode.Pipeline exposing (optional, required) import Json.Encode as Encode -import Maybe exposing (map, withDefault) {-| A pet for sale in the pet store @@ -38,26 +37,26 @@ type Status | Sold -petDecoder : Decoder Pet -petDecoder = +decoder : Decoder Pet +decoder = Decode.succeed Pet |> optional "id" (Decode.nullable Decode.int) Nothing - |> optional "category" (Decode.nullable categoryDecoder) Nothing + |> optional "category" (Decode.nullable Category.decoder) Nothing |> required "name" Decode.string |> required "photoUrls" (Decode.list Decode.string) - |> optional "tags" (Decode.nullable (Decode.list tagDecoder)) Nothing + |> optional "tags" (Decode.nullable (Decode.list Tag.decoder)) Nothing |> optional "status" (Decode.nullable statusDecoder) Nothing -petEncoder : Pet -> Encode.Value -petEncoder model = +encoder : Pet -> Encode.Value +encoder model = Encode.object - [ ( "id", withDefault Encode.null (map Encode.int model.id) ) - , ( "category", withDefault Encode.null (map categoryEncoder model.category) ) + [ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) ) + , ( "category", Maybe.withDefault Encode.null (Maybe.map Category.encoder model.category) ) , ( "name", Encode.string model.name ) , ( "photoUrls", Encode.list Encode.string model.photoUrls ) - , ( "tags", withDefault Encode.null (map (Encode.list tagEncoder) model.tags) ) - , ( "status", withDefault Encode.null (map statusEncoder model.status) ) + , ( "tags", Maybe.withDefault Encode.null (Maybe.map (Encode.list Tag.encoder) model.tags) ) + , ( "status", Maybe.withDefault Encode.null (Maybe.map statusEncoder model.status) ) ] diff --git a/samples/client/petstore/elm/src/Data/Tag.elm b/samples/client/petstore/elm/src/Data/Tag.elm index 21c76a52eeec..c514abe1429b 100644 --- a/samples/client/petstore/elm/src/Data/Tag.elm +++ b/samples/client/petstore/elm/src/Data/Tag.elm @@ -10,12 +10,11 @@ -} -module Data.Tag exposing (Tag, tagDecoder, tagEncoder) +module Data.Tag exposing (Tag, decoder, encoder) import Json.Decode as Decode exposing (Decoder) import Json.Decode.Pipeline exposing (optional, required) import Json.Encode as Encode -import Maybe exposing (map, withDefault) {-| A tag for a pet @@ -26,16 +25,16 @@ type alias Tag = } -tagDecoder : Decoder Tag -tagDecoder = +decoder : Decoder Tag +decoder = Decode.succeed Tag |> optional "id" (Decode.nullable Decode.int) Nothing |> optional "name" (Decode.nullable Decode.string) Nothing -tagEncoder : Tag -> Encode.Value -tagEncoder model = +encoder : Tag -> Encode.Value +encoder model = Encode.object - [ ( "id", withDefault Encode.null (map Encode.int model.id) ) - , ( "name", withDefault Encode.null (map Encode.string model.name) ) + [ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) ) + , ( "name", Maybe.withDefault Encode.null (Maybe.map Encode.string model.name) ) ] diff --git a/samples/client/petstore/elm/src/Data/User.elm b/samples/client/petstore/elm/src/Data/User.elm index 3f08ec516250..a6213937f528 100644 --- a/samples/client/petstore/elm/src/Data/User.elm +++ b/samples/client/petstore/elm/src/Data/User.elm @@ -10,12 +10,11 @@ -} -module Data.User exposing (User, userDecoder, userEncoder) +module Data.User exposing (User, decoder, encoder) import Json.Decode as Decode exposing (Decoder) import Json.Decode.Pipeline exposing (optional, required) import Json.Encode as Encode -import Maybe exposing (map, withDefault) {-| A User who is purchasing from the pet store @@ -32,8 +31,8 @@ type alias User = } -userDecoder : Decoder User -userDecoder = +decoder : Decoder User +decoder = Decode.succeed User |> optional "id" (Decode.nullable Decode.int) Nothing |> optional "username" (Decode.nullable Decode.string) Nothing @@ -45,15 +44,15 @@ userDecoder = |> optional "userStatus" (Decode.nullable Decode.int) Nothing -userEncoder : User -> Encode.Value -userEncoder model = +encoder : User -> Encode.Value +encoder model = Encode.object - [ ( "id", withDefault Encode.null (map Encode.int model.id) ) - , ( "username", withDefault Encode.null (map Encode.string model.username) ) - , ( "firstName", withDefault Encode.null (map Encode.string model.firstName) ) - , ( "lastName", withDefault Encode.null (map Encode.string model.lastName) ) - , ( "email", withDefault Encode.null (map Encode.string model.email) ) - , ( "password", withDefault Encode.null (map Encode.string model.password) ) - , ( "phone", withDefault Encode.null (map Encode.string model.phone) ) - , ( "userStatus", withDefault Encode.null (map Encode.int model.userStatus) ) + [ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) ) + , ( "username", Maybe.withDefault Encode.null (Maybe.map Encode.string model.username) ) + , ( "firstName", Maybe.withDefault Encode.null (Maybe.map Encode.string model.firstName) ) + , ( "lastName", Maybe.withDefault Encode.null (Maybe.map Encode.string model.lastName) ) + , ( "email", Maybe.withDefault Encode.null (Maybe.map Encode.string model.email) ) + , ( "password", Maybe.withDefault Encode.null (Maybe.map Encode.string model.password) ) + , ( "phone", Maybe.withDefault Encode.null (Maybe.map Encode.string model.phone) ) + , ( "userStatus", Maybe.withDefault Encode.null (Maybe.map Encode.int model.userStatus) ) ] diff --git a/samples/client/petstore/elm/src/DateOnly.elm b/samples/client/petstore/elm/src/DateOnly.elm index c18b180ba11e..df5e681bc3fd 100644 --- a/samples/client/petstore/elm/src/DateOnly.elm +++ b/samples/client/petstore/elm/src/DateOnly.elm @@ -1,4 +1,4 @@ -module DateOnly exposing (DateOnly, dateOnlyDecoder, dateOnlyEncoder) +module DateOnly exposing (DateOnly, decoder, encoder) import Iso8601 import Json.Decode as Decode exposing (Decoder) @@ -11,14 +11,14 @@ type alias DateOnly = Time.Posix -dateOnlyDecoder : Decoder DateOnly -dateOnlyDecoder = +decoder : Decoder DateOnly +decoder = Decode.string |> Decode.andThen decodeIsoString -dateOnlyEncoder : DateOnly -> Encode.Value -dateOnlyEncoder model = +encoder : DateOnly -> Encode.Value +encoder model = Iso8601.fromTime model |> String.left 10 |> Encode.string diff --git a/samples/client/petstore/elm/src/DateTime.elm b/samples/client/petstore/elm/src/DateTime.elm index 28882c8cfa69..f7ad4ba814e9 100644 --- a/samples/client/petstore/elm/src/DateTime.elm +++ b/samples/client/petstore/elm/src/DateTime.elm @@ -1,4 +1,4 @@ -module DateTime exposing (DateTime, dateTimeDecoder, dateTimeEncoder) +module DateTime exposing (DateTime, decoder, encoder) import Iso8601 import Json.Decode as Decode exposing (Decoder) @@ -11,14 +11,14 @@ type alias DateTime = Time.Posix -dateTimeDecoder : Decoder DateTime -dateTimeDecoder = +decoder : Decoder DateTime +decoder = Decode.string |> Decode.andThen decodeIsoString -dateTimeEncoder : DateTime -> Encode.Value -dateTimeEncoder model = +encoder : DateTime -> Encode.Value +encoder model = Encode.string <| Iso8601.fromTime model diff --git a/samples/client/petstore/elm/src/Request/Pet.elm b/samples/client/petstore/elm/src/Request/Pet.elm index 0a3b1e89891d..aa46bd8df692 100644 --- a/samples/client/petstore/elm/src/Request/Pet.elm +++ b/samples/client/petstore/elm/src/Request/Pet.elm @@ -12,8 +12,8 @@ module Request.Pet exposing (addPet, deletePet, findPetsByStatus, findPetsByTags, getPetById, updatePet, updatePetWithForm, uploadFile) -import Data.ApiResponse exposing (ApiResponse, apiResponseDecoder) -import Data.Pet exposing (Pet, petDecoder, petEncoder) +import Data.ApiResponse as ApiResponse exposing (ApiResponse) +import Data.Pet as Pet exposing (Pet) import Dict import Http import Json.Decode as Decode @@ -29,7 +29,7 @@ addPet model = { method = "POST" , url = basePath ++ "/pet" , headers = [] - , body = Http.jsonBody <| petEncoder model + , body = Http.jsonBody <| Pet.encoder model , expect = Http.expectStringResponse (\_ -> Ok ()) , timeout = Just 30000 , withCredentials = False @@ -58,7 +58,7 @@ findPetsByStatus = , url = basePath ++ "/pet/findByStatus" , headers = [] , body = Http.emptyBody - , expect = Http.expectJson (Decode.list petDecoder) + , expect = Http.expectJson (Decode.list Pet.decoder) , timeout = Just 30000 , withCredentials = False } @@ -73,7 +73,7 @@ findPetsByTags = , url = basePath ++ "/pet/findByTags" , headers = [] , body = Http.emptyBody - , expect = Http.expectJson (Decode.list petDecoder) + , expect = Http.expectJson (Decode.list Pet.decoder) , timeout = Just 30000 , withCredentials = False } @@ -88,7 +88,7 @@ getPetById petId = , url = basePath ++ "/pet/" ++ String.fromInt petId , headers = [] , body = Http.emptyBody - , expect = Http.expectJson petDecoder + , expect = Http.expectJson Pet.decoder , timeout = Just 30000 , withCredentials = False } @@ -100,7 +100,7 @@ updatePet model = { method = "PUT" , url = basePath ++ "/pet" , headers = [] - , body = Http.jsonBody <| petEncoder model + , body = Http.jsonBody <| Pet.encoder model , expect = Http.expectStringResponse (\_ -> Ok ()) , timeout = Just 30000 , withCredentials = False @@ -127,7 +127,7 @@ uploadFile petId = , url = basePath ++ "/pet/" ++ String.fromInt petId ++ "/uploadImage" , headers = [] , body = Http.emptyBody - , expect = Http.expectJson apiResponseDecoder + , expect = Http.expectJson ApiResponse.decoder , timeout = Just 30000 , withCredentials = False } diff --git a/samples/client/petstore/elm/src/Request/Store.elm b/samples/client/petstore/elm/src/Request/Store.elm index 548995384251..d0192277a9bb 100644 --- a/samples/client/petstore/elm/src/Request/Store.elm +++ b/samples/client/petstore/elm/src/Request/Store.elm @@ -12,7 +12,7 @@ module Request.Store exposing (deleteOrder, getInventory, getOrderById, placeOrder) -import Data.Order_ exposing (Order_, orderDecoder, orderEncoder) +import Data.Order_ as Order_ exposing (Order_) import Dict import Http import Json.Decode as Decode @@ -61,7 +61,7 @@ getOrderById orderId = , url = basePath ++ "/store/order/" ++ String.fromInt orderId , headers = [] , body = Http.emptyBody - , expect = Http.expectJson orderDecoder + , expect = Http.expectJson Order_.decoder , timeout = Just 30000 , withCredentials = False } @@ -73,8 +73,8 @@ placeOrder model = { method = "POST" , url = basePath ++ "/store/order" , headers = [] - , body = Http.jsonBody <| orderEncoder model - , expect = Http.expectJson orderDecoder + , body = Http.jsonBody <| Order_.encoder model + , expect = Http.expectJson Order_.decoder , timeout = Just 30000 , withCredentials = False } diff --git a/samples/client/petstore/elm/src/Request/User.elm b/samples/client/petstore/elm/src/Request/User.elm index e6bbbb32ed5d..b466fa6c5168 100644 --- a/samples/client/petstore/elm/src/Request/User.elm +++ b/samples/client/petstore/elm/src/Request/User.elm @@ -12,7 +12,7 @@ module Request.User exposing (createUser, createUsersWithArrayInput, createUsersWithListInput, deleteUser, getUserByName, loginUser, logoutUser, updateUser) -import Data.User exposing (User, userDecoder, userEncoder) +import Data.User as User exposing (User) import Dict import Http import Json.Decode as Decode @@ -30,7 +30,7 @@ createUser model = { method = "POST" , url = basePath ++ "/user" , headers = [] - , body = Http.jsonBody <| userEncoder model + , body = Http.jsonBody <| User.encoder model , expect = Http.expectStringResponse (\_ -> Ok ()) , timeout = Just 30000 , withCredentials = False @@ -43,7 +43,7 @@ createUsersWithArrayInput model = { method = "POST" , url = basePath ++ "/user/createWithArray" , headers = [] - , body = Http.jsonBody <| userEncoder model + , body = Http.jsonBody <| User.encoder model , expect = Http.expectStringResponse (\_ -> Ok ()) , timeout = Just 30000 , withCredentials = False @@ -56,7 +56,7 @@ createUsersWithListInput model = { method = "POST" , url = basePath ++ "/user/createWithList" , headers = [] - , body = Http.jsonBody <| userEncoder model + , body = Http.jsonBody <| User.encoder model , expect = Http.expectStringResponse (\_ -> Ok ()) , timeout = Just 30000 , withCredentials = False @@ -85,7 +85,7 @@ getUserByName username = , url = basePath ++ "/user/" ++ username , headers = [] , body = Http.emptyBody - , expect = Http.expectJson userDecoder + , expect = Http.expectJson User.decoder , timeout = Just 30000 , withCredentials = False } @@ -125,7 +125,7 @@ updateUser username model = { method = "PUT" , url = basePath ++ "/user/" ++ username , headers = [] - , body = Http.jsonBody <| userEncoder model + , body = Http.jsonBody <| User.encoder model , expect = Http.expectStringResponse (\_ -> Ok ()) , timeout = Just 30000 , withCredentials = False