Add support for UUIDs (#1516)

And fix naming for `decode` functions.
This commit is contained in:
Erik Timmers 2018-11-27 06:47:06 +01:00 committed by William Cheng
parent 34abedeb8a
commit 172448fa28
39 changed files with 276 additions and 350 deletions

View File

@ -130,7 +130,8 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
Arrays.asList(
"Byte",
"DateOnly",
"DateTime")
"DateTime",
"Uuid")
);
instantiationTypes.clear();
@ -153,6 +154,7 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
typeMapping.put("ByteArray", "Byte");
typeMapping.put("file", "String");
typeMapping.put("binary", "String");
typeMapping.put("UUID", "Uuid");
importMapping.clear();
@ -675,31 +677,31 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
private void addEncoderAndDecoder(final Map<String, Object> vendorExtensions, final String dataType, final DataTypeExposure dataTypeExposure) {
final String baseName = org.openapitools.codegen.utils.StringUtils.camelize(dataType, true);
String encoderName;
String encodeName;
String decoderName;
switch (dataTypeExposure) {
case EXPOSED:
decoderName = "decoder";
encoderName = "encoder";
encodeName = "encode";
break;
case INTERNAL:
encoderName = baseName + "Encoder";
encodeName = "encode" + StringUtils.capitalize(baseName);
decoderName = baseName + "Decoder";
break;
case EXTERNAL:
encoderName = dataType + ".encoder";
encodeName = dataType + ".encode";
decoderName = dataType + ".decoder";
break;
case PRIMITIVE:
encoderName = "Encode." + baseName;
encodeName = "Encode." + baseName;
decoderName = "Decode." + baseName;
break;
default:
encoderName = "";
encodeName = "";
decoderName = "";
}
if (!vendorExtensions.containsKey(ENCODER)) {
vendorExtensions.put(ENCODER, encoderName);
vendorExtensions.put(ENCODER, encodeName);
}
if (!vendorExtensions.containsKey(DECODER)) {
vendorExtensions.put(DECODER, decoderName);

View File

@ -1,4 +1,4 @@
module Byte exposing (Byte, decoder, encoder)
module Byte exposing (Byte, decoder, encode)
import Json.Decode as Decode exposing (Decoder)
import Json.Encode as Encode
@ -13,6 +13,6 @@ decoder =
Decode.string
encoder : Byte -> Encode.Value
encoder model =
encode : Byte -> Encode.Value
encode model =
Encode.string model

View File

@ -1,4 +1,4 @@
module DateOnly exposing (DateOnly, decoder, encoder, toString)
module DateOnly exposing (DateOnly, decoder, encode, toString)
import Iso8601
import Json.Decode as Decode exposing (Decoder)
@ -17,8 +17,8 @@ decoder =
|> Decode.andThen decodeIsoString
encoder : DateOnly -> Encode.Value
encoder =
encode : DateOnly -> Encode.Value
encode =
Encode.string << toString

View File

@ -1,4 +1,4 @@
module DateOnly exposing (DateOnly, decoder, encoder, toString)
module DateOnly exposing (DateOnly, decoder, encode, toString)
import Date
import Date.Extra exposing (fromIsoString, toFormattedString)
@ -17,8 +17,8 @@ decoder =
|> Decode.andThen decodeIsoString
encoder : DateOnly -> Encode.Value
encoder =
encode : DateOnly -> Encode.Value
encode =
Encode.string << toString

View File

@ -1,4 +1,4 @@
module DateTime exposing (DateTime, decoder, encoder, toString)
module DateTime exposing (DateTime, decoder, encode, toString)
import Iso8601
import Json.Decode as Decode exposing (Decoder)
@ -17,8 +17,8 @@ decoder =
|> Decode.andThen decodeIsoString
encoder : DateTime -> Encode.Value
encoder =
encode : DateTime -> Encode.Value
encode =
Encode.string << toString

View File

@ -1,4 +1,4 @@
module DateTime exposing (DateTime, decoder, encoder, toString)
module DateTime exposing (DateTime, decoder, encode, toString)
import Date
import Date.Extra exposing (fromIsoString, toIsoString)
@ -17,8 +17,8 @@ decoder =
|> Decode.andThen decodeIsoString
encoder : DateTime -> Encode.Value
encoder =
encode : DateTime -> Encode.Value
encode =
Encode.string << toString

View File

@ -9,6 +9,7 @@
"exposed-modules": [],
"dependencies": {
"NoRedInk/elm-decode-pipeline": "3.0.0 <= v < 4.0.0",
"danyx23/elm-uuid": "2.0.2 <= v < 2.1.1",
"elm-lang/core": "5.1.1 <= v < 6.0.0",
"elm-lang/html": "2.0.0 <= v < 3.0.0",
"elm-lang/http": "1.0.0 <= v < 2.0.0",

View File

@ -7,6 +7,7 @@
"dependencies": {
"direct": {
"NoRedInk/elm-json-decode-pipeline": "1.0.0",
"danyx23/elm-uuid": "2.1.2",
"elm/browser": "1.0.1",
"elm/core": "1.0.2",
"elm/html": "1.0.0",
@ -20,6 +21,8 @@
"elm/bytes": "1.0.5",
"elm/file": "1.0.1",
"elm/parser": "1.1.0",
"elm/random": "1.0.0",
"elm/regex": "1.0.0",
"elm/virtual-dom": "1.0.2"
}
},

View File

@ -1,6 +1,6 @@
{{>licenseInfo}}
module Data.{{classname}} exposing ({{#models}}{{#model}}{{classname}}{{#hasChildren}}(..){{/hasChildren}}{{#isEnum}}(..){{/isEnum}}{{^isEnum}}{{#vars}}{{#isEnum}}, {{vendorExtensions.elmCustomType}}(..){{/isEnum}}{{/vars}}{{/isEnum}}, decoder, encoder{{/model}}{{/models}})
module Data.{{classname}} exposing ({{#models}}{{#model}}{{classname}}{{#hasChildren}}(..){{/hasChildren}}{{#isEnum}}(..){{/isEnum}}{{^isEnum}}{{#vars}}{{#isEnum}}, {{vendorExtensions.elmCustomType}}(..){{/isEnum}}{{/vars}}{{/isEnum}}, decoder, encode{{/model}}{{/models}})
{{>imports}}import Dict exposing (Dict)
import Json.Decode as Decode exposing (Decoder)

View File

@ -7,6 +7,6 @@ decoder =
Decode.list {{vendorExtensions.elmDecoder}}
encoder : {{classname}} -> Encode.Value
encoder items =
encode : {{classname}} -> Encode.Value
encode items =
Encode.list {{#isElm018}}(List.map {{/isElm018}}{{vendorExtensions.elmEncoder}} items{{#isElm018}}){{/isElm018}}

View File

@ -22,8 +22,8 @@ decoder =
Decode.fail <| "Trying to decode {{classname}}, but {{{discriminatorName}}} " ++ tag ++ " is not supported."
encoder : {{classname}} -> Encode.Value
encoder model =
encode : {{classname}} -> Encode.Value
encode model =
case model of
{{#mappedModels}}
{{modelName}}Type subModel ->

View File

@ -7,6 +7,6 @@ decoder =
{{vendorExtensions.elmDecoder}}
encoder : {{classname}} -> Encode.Value
encoder =
encode : {{classname}} -> Encode.Value
encode =
{{vendorExtensions.elmEncoder}}

View File

@ -1,5 +1,5 @@
encoder : {{#vendorExtensions.discriminatorName}}String -> {{/vendorExtensions.discriminatorName}}{{classname}} -> Encode.Value
encoder {{#vendorExtensions.discriminatorName}}tag {{/vendorExtensions.discriminatorName}}model =
encode : {{#vendorExtensions.discriminatorName}}String -> {{/vendorExtensions.discriminatorName}}{{classname}} -> Encode.Value
encode {{#vendorExtensions.discriminatorName}}tag {{/vendorExtensions.discriminatorName}}model =
Encode.object
{{#allVars}}
{{#-first}}[{{/-first}}{{^-first}},{{/-first}} {{>recordFieldEncoder}}

View File

@ -9,6 +9,7 @@
"exposed-modules": [],
"dependencies": {
"NoRedInk/elm-decode-pipeline": "3.0.0 <= v < 4.0.0",
"danyx23/elm-uuid": "2.0.2 <= v < 2.1.1",
"elm-lang/core": "5.1.1 <= v < 6.0.0",
"elm-lang/html": "2.0.0 <= v < 3.0.0",
"elm-lang/http": "1.0.0 <= v < 2.0.0",

View File

@ -1,4 +1,4 @@
module Byte exposing (Byte, decoder, encoder)
module Byte exposing (Byte, decoder, encode)
import Json.Decode as Decode exposing (Decoder)
import Json.Encode as Encode
@ -13,6 +13,6 @@ decoder =
Decode.string
encoder : Byte -> Encode.Value
encoder model =
encode : Byte -> Encode.Value
encode model =
Encode.string model

View File

@ -10,7 +10,7 @@
-}
module Data.ApiResponse exposing (ApiResponse, decoder, encoder)
module Data.ApiResponse exposing (ApiResponse, decoder, encode)
import Dict exposing (Dict)
import Json.Decode as Decode exposing (Decoder)
@ -21,9 +21,9 @@ import Json.Encode as Encode
{-| Describes the result of uploading an image resource
-}
type alias ApiResponse =
{ code : Maybe (Int)
, type_ : Maybe (String)
, message : Maybe (String)
{ code : Maybe Int
, type_ : Maybe String
, message : Maybe String
}
@ -35,14 +35,10 @@ decoder =
|> optional "message" (Decode.nullable Decode.string) Nothing
encoder : ApiResponse -> Encode.Value
encoder model =
encode : ApiResponse -> Encode.Value
encode model =
Encode.object
[ ( "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) )
]

View File

@ -10,7 +10,7 @@
-}
module Data.Category exposing (Category, decoder, encoder)
module Data.Category exposing (Category, decoder, encode)
import Dict exposing (Dict)
import Json.Decode as Decode exposing (Decoder)
@ -21,8 +21,8 @@ import Json.Encode as Encode
{-| A category for a pet
-}
type alias Category =
{ id : Maybe (Int)
, name : Maybe (String)
{ id : Maybe Int
, name : Maybe String
}
@ -33,13 +33,9 @@ decoder =
|> optional "name" (Decode.nullable Decode.string) Nothing
encoder : Category -> Encode.Value
encoder model =
encode : Category -> Encode.Value
encode model =
Encode.object
[ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) )
, ( "name", Maybe.withDefault Encode.null (Maybe.map Encode.string model.name) )
]

View File

@ -10,7 +10,7 @@
-}
module Data.Order_ exposing (Order_, Status(..), decoder, encoder)
module Data.Order_ exposing (Order_, Status(..), decoder, encode)
import DateTime exposing (DateTime)
import Dict exposing (Dict)
@ -22,12 +22,12 @@ import Json.Encode as Encode
{-| An order for a pets from the pet store
-}
type alias Order_ =
{ id : Maybe (Int)
, petId : Maybe (Int)
, quantity : Maybe (Int)
, shipDate : Maybe (DateTime)
, status : Maybe (Status)
, complete : Maybe (Bool)
{ id : Maybe Int
, petId : Maybe Int
, quantity : Maybe Int
, shipDate : Maybe DateTime
, status : Maybe Status
, complete : Maybe Bool
}
@ -37,7 +37,6 @@ type Status
| Delivered
decoder : Decoder Order_
decoder =
decode Order_
@ -49,21 +48,18 @@ decoder =
|> optional "complete" (Decode.nullable Decode.bool) (Just False)
encoder : Order_ -> Encode.Value
encoder model =
encode : Order_ -> Encode.Value
encode model =
Encode.object
[ ( "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) )
, ( "shipDate", Maybe.withDefault Encode.null (Maybe.map DateTime.encode model.shipDate) )
, ( "status", Maybe.withDefault Encode.null (Maybe.map encodeStatus model.status) )
, ( "complete", Maybe.withDefault Encode.null (Maybe.map Encode.bool model.complete) )
]
statusDecoder : Decoder Status
statusDecoder =
Decode.string
@ -84,9 +80,8 @@ statusDecoder =
)
statusEncoder : Status -> Encode.Value
statusEncoder model =
encodeStatus : Status -> Encode.Value
encodeStatus model =
case model of
Placed ->
Encode.string "placed"
@ -96,6 +91,3 @@ statusEncoder model =
Delivered ->
Encode.string "delivered"

View File

@ -10,7 +10,7 @@
-}
module Data.Pet exposing (Pet, Status(..), decoder, encoder)
module Data.Pet exposing (Pet, Status(..), decoder, encode)
import Data.Category as Category exposing (Category)
import Data.Tag as Tag exposing (Tag)
@ -23,12 +23,12 @@ import Json.Encode as Encode
{-| A pet for sale in the pet store
-}
type alias Pet =
{ id : Maybe (Int)
, category : Maybe (Category)
{ id : Maybe Int
, category : Maybe Category
, name : String
, photoUrls : (List String)
, tags : Maybe ((List Tag))
, status : Maybe (Status)
, photoUrls : List String
, tags : Maybe (List Tag)
, status : Maybe Status
}
@ -38,7 +38,6 @@ type Status
| Sold
decoder : Decoder Pet
decoder =
decode Pet
@ -50,21 +49,18 @@ decoder =
|> optional "status" (Decode.nullable statusDecoder) Nothing
encoder : Pet -> Encode.Value
encoder model =
encode : Pet -> Encode.Value
encode model =
Encode.object
[ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) )
, ( "category", Maybe.withDefault Encode.null (Maybe.map Category.encoder model.category) )
, ( "category", Maybe.withDefault Encode.null (Maybe.map Category.encode model.category) )
, ( "name", Encode.string model.name )
, ( "photoUrls", (Encode.list << List.map Encode.string) model.photoUrls )
, ( "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) )
, ( "tags", Maybe.withDefault Encode.null (Maybe.map (Encode.list << List.map Tag.encode) model.tags) )
, ( "status", Maybe.withDefault Encode.null (Maybe.map encodeStatus model.status) )
]
statusDecoder : Decoder Status
statusDecoder =
Decode.string
@ -85,9 +81,8 @@ statusDecoder =
)
statusEncoder : Status -> Encode.Value
statusEncoder model =
encodeStatus : Status -> Encode.Value
encodeStatus model =
case model of
Available ->
Encode.string "available"
@ -97,6 +92,3 @@ statusEncoder model =
Sold ->
Encode.string "sold"

View File

@ -10,7 +10,7 @@
-}
module Data.Tag exposing (Tag, decoder, encoder)
module Data.Tag exposing (Tag, decoder, encode)
import Dict exposing (Dict)
import Json.Decode as Decode exposing (Decoder)
@ -21,8 +21,8 @@ import Json.Encode as Encode
{-| A tag for a pet
-}
type alias Tag =
{ id : Maybe (Int)
, name : Maybe (String)
{ id : Maybe Int
, name : Maybe String
}
@ -33,13 +33,9 @@ decoder =
|> optional "name" (Decode.nullable Decode.string) Nothing
encoder : Tag -> Encode.Value
encoder model =
encode : Tag -> Encode.Value
encode model =
Encode.object
[ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) )
, ( "name", Maybe.withDefault Encode.null (Maybe.map Encode.string model.name) )
]

View File

@ -10,7 +10,7 @@
-}
module Data.User exposing (User, decoder, encoder)
module Data.User exposing (User, decoder, encode)
import Dict exposing (Dict)
import Json.Decode as Decode exposing (Decoder)
@ -21,14 +21,14 @@ import Json.Encode as Encode
{-| A User who is purchasing from the pet store
-}
type alias User =
{ id : Maybe (Int)
, username : Maybe (String)
, firstName : Maybe (String)
, lastName : Maybe (String)
, email : Maybe (String)
, password : Maybe (String)
, phone : Maybe (String)
, userStatus : Maybe (Int)
{ id : Maybe Int
, username : Maybe String
, firstName : Maybe String
, lastName : Maybe String
, email : Maybe String
, password : Maybe String
, phone : Maybe String
, userStatus : Maybe Int
}
@ -45,9 +45,8 @@ decoder =
|> optional "userStatus" (Decode.nullable Decode.int) Nothing
encoder : User -> Encode.Value
encoder model =
encode : User -> Encode.Value
encode model =
Encode.object
[ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) )
, ( "username", Maybe.withDefault Encode.null (Maybe.map Encode.string model.username) )
@ -57,7 +56,4 @@ encoder model =
, ( "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) )
]

View File

@ -1,4 +1,4 @@
module DateOnly exposing (DateOnly, decoder, encoder, toString)
module DateOnly exposing (DateOnly, decoder, encode, toString)
import Date
import Date.Extra exposing (fromIsoString, toFormattedString)
@ -17,8 +17,8 @@ decoder =
|> Decode.andThen decodeIsoString
encoder : DateOnly -> Encode.Value
encoder =
encode : DateOnly -> Encode.Value
encode =
Encode.string << toString

View File

@ -1,4 +1,4 @@
module DateTime exposing (DateTime, decoder, encoder, toString)
module DateTime exposing (DateTime, decoder, encode, toString)
import Date
import Date.Extra exposing (fromIsoString, toIsoString)
@ -17,8 +17,8 @@ decoder =
|> Decode.andThen decodeIsoString
encoder : DateTime -> Encode.Value
encoder =
encode : DateTime -> Encode.Value
encode =
Encode.string << toString

View File

@ -12,8 +12,8 @@
module Request.Pet exposing (addPet, deletePet, findPetsByStatus, findPetsByTags, getPetById, updatePet, updatePetWithForm, uploadFile)
import Data.Pet as Pet exposing (Pet)
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 <| Pet.encoder model
, body = Http.jsonBody <| Pet.encode model
, expect = Http.expectStringResponse (\_ -> Ok ())
, timeout = Just 30000
, withCredentials = False
@ -40,7 +40,7 @@ addPet model =
deletePet : Int -> Http.Request ()
deletePet petId =
{ method = "DELETE"
, url = basePath ++ "/pet/" ++ toString petId
, url = basePath ++ "/pet/" ++ toString petId
, headers = []
, body = Http.emptyBody
, expect = Http.expectStringResponse (\_ -> Ok ())
@ -85,7 +85,7 @@ findPetsByTags =
getPetById : Int -> Http.Request Pet
getPetById petId =
{ method = "GET"
, url = basePath ++ "/pet/" ++ toString petId
, url = basePath ++ "/pet/" ++ toString petId
, headers = []
, body = Http.emptyBody
, expect = Http.expectJson Pet.decoder
@ -100,7 +100,7 @@ updatePet model =
{ method = "PUT"
, url = basePath ++ "/pet"
, headers = []
, body = Http.jsonBody <| Pet.encoder model
, body = Http.jsonBody <| Pet.encode model
, expect = Http.expectStringResponse (\_ -> Ok ())
, timeout = Just 30000
, withCredentials = False
@ -111,7 +111,7 @@ updatePet model =
updatePetWithForm : Int -> Http.Request ()
updatePetWithForm petId =
{ method = "POST"
, url = basePath ++ "/pet/" ++ toString petId
, url = basePath ++ "/pet/" ++ toString petId
, headers = []
, body = Http.emptyBody
, expect = Http.expectStringResponse (\_ -> Ok ())
@ -124,7 +124,7 @@ updatePetWithForm petId =
uploadFile : Int -> Http.Request ApiResponse
uploadFile petId =
{ method = "POST"
, url = basePath ++ "/pet/" ++ toString petId ++ "/uploadImage"
, url = basePath ++ "/pet/" ++ toString petId ++ "/uploadImage"
, headers = []
, body = Http.emptyBody
, expect = Http.expectJson ApiResponse.decoder

View File

@ -28,7 +28,7 @@ basePath =
deleteOrder : String -> Http.Request ()
deleteOrder orderId =
{ method = "DELETE"
, url = basePath ++ "/store/order/" ++ orderId
, url = basePath ++ "/store/order/" ++ orderId
, headers = []
, body = Http.emptyBody
, expect = Http.expectStringResponse (\_ -> Ok ())
@ -58,7 +58,7 @@ getInventory =
getOrderById : Int -> Http.Request Order_
getOrderById orderId =
{ method = "GET"
, url = basePath ++ "/store/order/" ++ toString orderId
, url = basePath ++ "/store/order/" ++ toString orderId
, headers = []
, body = Http.emptyBody
, expect = Http.expectJson Order_.decoder
@ -73,7 +73,7 @@ placeOrder model =
{ method = "POST"
, url = basePath ++ "/store/order"
, headers = []
, body = Http.jsonBody <| Order_.encoder model
, body = Http.jsonBody <| Order_.encode model
, expect = Http.expectJson Order_.decoder
, timeout = Just 30000
, withCredentials = False

View File

@ -30,7 +30,7 @@ createUser model =
{ method = "POST"
, url = basePath ++ "/user"
, headers = []
, body = Http.jsonBody <| User.encoder model
, body = Http.jsonBody <| User.encode 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 <| User.encoder model
, body = Http.jsonBody <| User.encode 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 <| User.encoder model
, body = Http.jsonBody <| User.encode model
, expect = Http.expectStringResponse (\_ -> Ok ())
, timeout = Just 30000
, withCredentials = False
@ -69,7 +69,7 @@ createUsersWithListInput model =
deleteUser : String -> Http.Request ()
deleteUser username =
{ method = "DELETE"
, url = basePath ++ "/user/" ++ username
, url = basePath ++ "/user/" ++ username
, headers = []
, body = Http.emptyBody
, expect = Http.expectStringResponse (\_ -> Ok ())
@ -82,7 +82,7 @@ deleteUser username =
getUserByName : String -> Http.Request User
getUserByName username =
{ method = "GET"
, url = basePath ++ "/user/" ++ username
, url = basePath ++ "/user/" ++ username
, headers = []
, body = Http.emptyBody
, expect = Http.expectJson User.decoder
@ -123,9 +123,9 @@ logoutUser =
updateUser : String -> User -> Http.Request ()
updateUser username model =
{ method = "PUT"
, url = basePath ++ "/user/" ++ username
, url = basePath ++ "/user/" ++ username
, headers = []
, body = Http.jsonBody <| User.encoder model
, body = Http.jsonBody <| User.encode model
, expect = Http.expectStringResponse (\_ -> Ok ())
, timeout = Just 30000
, withCredentials = False

View File

@ -7,6 +7,7 @@
"dependencies": {
"direct": {
"NoRedInk/elm-json-decode-pipeline": "1.0.0",
"danyx23/elm-uuid": "2.1.2",
"elm/browser": "1.0.1",
"elm/core": "1.0.2",
"elm/html": "1.0.0",
@ -20,6 +21,8 @@
"elm/bytes": "1.0.5",
"elm/file": "1.0.1",
"elm/parser": "1.1.0",
"elm/random": "1.0.0",
"elm/regex": "1.0.0",
"elm/virtual-dom": "1.0.2"
}
},

View File

@ -1,4 +1,4 @@
module Byte exposing (Byte, decoder, encoder)
module Byte exposing (Byte, decoder, encode)
import Json.Decode as Decode exposing (Decoder)
import Json.Encode as Encode
@ -13,6 +13,6 @@ decoder =
Decode.string
encoder : Byte -> Encode.Value
encoder model =
encode : Byte -> Encode.Value
encode model =
Encode.string model

View File

@ -10,7 +10,7 @@
-}
module Data.ApiResponse exposing (ApiResponse, decoder, encoder)
module Data.ApiResponse exposing (ApiResponse, decoder, encode)
import Dict exposing (Dict)
import Json.Decode as Decode exposing (Decoder)
@ -21,9 +21,9 @@ import Json.Encode as Encode
{-| Describes the result of uploading an image resource
-}
type alias ApiResponse =
{ code : Maybe (Int)
, type_ : Maybe (String)
, message : Maybe (String)
{ code : Maybe Int
, type_ : Maybe String
, message : Maybe String
}
@ -35,14 +35,10 @@ decoder =
|> optional "message" (Decode.nullable Decode.string) Nothing
encoder : ApiResponse -> Encode.Value
encoder model =
encode : ApiResponse -> Encode.Value
encode model =
Encode.object
[ ( "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) )
]

View File

@ -10,7 +10,7 @@
-}
module Data.Category exposing (Category, decoder, encoder)
module Data.Category exposing (Category, decoder, encode)
import Dict exposing (Dict)
import Json.Decode as Decode exposing (Decoder)
@ -21,8 +21,8 @@ import Json.Encode as Encode
{-| A category for a pet
-}
type alias Category =
{ id : Maybe (Int)
, name : Maybe (String)
{ id : Maybe Int
, name : Maybe String
}
@ -33,13 +33,9 @@ decoder =
|> optional "name" (Decode.nullable Decode.string) Nothing
encoder : Category -> Encode.Value
encoder model =
encode : Category -> Encode.Value
encode model =
Encode.object
[ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) )
, ( "name", Maybe.withDefault Encode.null (Maybe.map Encode.string model.name) )
]

View File

@ -10,7 +10,7 @@
-}
module Data.Order_ exposing (Order_, Status(..), decoder, encoder)
module Data.Order_ exposing (Order_, Status(..), decoder, encode)
import DateTime exposing (DateTime)
import Dict exposing (Dict)
@ -22,12 +22,12 @@ import Json.Encode as Encode
{-| An order for a pets from the pet store
-}
type alias Order_ =
{ id : Maybe (Int)
, petId : Maybe (Int)
, quantity : Maybe (Int)
, shipDate : Maybe (DateTime)
, status : Maybe (Status)
, complete : Maybe (Bool)
{ id : Maybe Int
, petId : Maybe Int
, quantity : Maybe Int
, shipDate : Maybe DateTime
, status : Maybe Status
, complete : Maybe Bool
}
@ -37,7 +37,6 @@ type Status
| Delivered
decoder : Decoder Order_
decoder =
Decode.succeed Order_
@ -49,21 +48,18 @@ decoder =
|> optional "complete" (Decode.nullable Decode.bool) (Just False)
encoder : Order_ -> Encode.Value
encoder model =
encode : Order_ -> Encode.Value
encode model =
Encode.object
[ ( "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) )
, ( "shipDate", Maybe.withDefault Encode.null (Maybe.map DateTime.encode model.shipDate) )
, ( "status", Maybe.withDefault Encode.null (Maybe.map encodeStatus model.status) )
, ( "complete", Maybe.withDefault Encode.null (Maybe.map Encode.bool model.complete) )
]
statusDecoder : Decoder Status
statusDecoder =
Decode.string
@ -84,9 +80,8 @@ statusDecoder =
)
statusEncoder : Status -> Encode.Value
statusEncoder model =
encodeStatus : Status -> Encode.Value
encodeStatus model =
case model of
Placed ->
Encode.string "placed"
@ -96,6 +91,3 @@ statusEncoder model =
Delivered ->
Encode.string "delivered"

View File

@ -10,7 +10,7 @@
-}
module Data.Pet exposing (Pet, Status(..), decoder, encoder)
module Data.Pet exposing (Pet, Status(..), decoder, encode)
import Data.Category as Category exposing (Category)
import Data.Tag as Tag exposing (Tag)
@ -23,12 +23,12 @@ import Json.Encode as Encode
{-| A pet for sale in the pet store
-}
type alias Pet =
{ id : Maybe (Int)
, category : Maybe (Category)
{ id : Maybe Int
, category : Maybe Category
, name : String
, photoUrls : (List String)
, tags : Maybe ((List Tag))
, status : Maybe (Status)
, photoUrls : List String
, tags : Maybe (List Tag)
, status : Maybe Status
}
@ -38,7 +38,6 @@ type Status
| Sold
decoder : Decoder Pet
decoder =
Decode.succeed Pet
@ -50,21 +49,18 @@ decoder =
|> optional "status" (Decode.nullable statusDecoder) Nothing
encoder : Pet -> Encode.Value
encoder model =
encode : Pet -> Encode.Value
encode model =
Encode.object
[ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) )
, ( "category", Maybe.withDefault Encode.null (Maybe.map Category.encoder model.category) )
, ( "category", Maybe.withDefault Encode.null (Maybe.map Category.encode model.category) )
, ( "name", Encode.string model.name )
, ( "photoUrls", (Encode.list Encode.string) model.photoUrls )
, ( "tags", Maybe.withDefault Encode.null (Maybe.map (Encode.list Tag.encoder) model.tags) )
, ( "status", Maybe.withDefault Encode.null (Maybe.map statusEncoder model.status) )
, ( "photoUrls", Encode.list Encode.string model.photoUrls )
, ( "tags", Maybe.withDefault Encode.null (Maybe.map (Encode.list Tag.encode) model.tags) )
, ( "status", Maybe.withDefault Encode.null (Maybe.map encodeStatus model.status) )
]
statusDecoder : Decoder Status
statusDecoder =
Decode.string
@ -85,9 +81,8 @@ statusDecoder =
)
statusEncoder : Status -> Encode.Value
statusEncoder model =
encodeStatus : Status -> Encode.Value
encodeStatus model =
case model of
Available ->
Encode.string "available"
@ -97,6 +92,3 @@ statusEncoder model =
Sold ->
Encode.string "sold"

View File

@ -10,7 +10,7 @@
-}
module Data.Tag exposing (Tag, decoder, encoder)
module Data.Tag exposing (Tag, decoder, encode)
import Dict exposing (Dict)
import Json.Decode as Decode exposing (Decoder)
@ -21,8 +21,8 @@ import Json.Encode as Encode
{-| A tag for a pet
-}
type alias Tag =
{ id : Maybe (Int)
, name : Maybe (String)
{ id : Maybe Int
, name : Maybe String
}
@ -33,13 +33,9 @@ decoder =
|> optional "name" (Decode.nullable Decode.string) Nothing
encoder : Tag -> Encode.Value
encoder model =
encode : Tag -> Encode.Value
encode model =
Encode.object
[ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) )
, ( "name", Maybe.withDefault Encode.null (Maybe.map Encode.string model.name) )
]

View File

@ -10,7 +10,7 @@
-}
module Data.User exposing (User, decoder, encoder)
module Data.User exposing (User, decoder, encode)
import Dict exposing (Dict)
import Json.Decode as Decode exposing (Decoder)
@ -21,14 +21,14 @@ import Json.Encode as Encode
{-| A User who is purchasing from the pet store
-}
type alias User =
{ id : Maybe (Int)
, username : Maybe (String)
, firstName : Maybe (String)
, lastName : Maybe (String)
, email : Maybe (String)
, password : Maybe (String)
, phone : Maybe (String)
, userStatus : Maybe (Int)
{ id : Maybe Int
, username : Maybe String
, firstName : Maybe String
, lastName : Maybe String
, email : Maybe String
, password : Maybe String
, phone : Maybe String
, userStatus : Maybe Int
}
@ -45,9 +45,8 @@ decoder =
|> optional "userStatus" (Decode.nullable Decode.int) Nothing
encoder : User -> Encode.Value
encoder model =
encode : User -> Encode.Value
encode model =
Encode.object
[ ( "id", Maybe.withDefault Encode.null (Maybe.map Encode.int model.id) )
, ( "username", Maybe.withDefault Encode.null (Maybe.map Encode.string model.username) )
@ -57,7 +56,4 @@ encoder model =
, ( "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) )
]

View File

@ -1,4 +1,4 @@
module DateOnly exposing (DateOnly, decoder, encoder, toString)
module DateOnly exposing (DateOnly, decoder, encode, toString)
import Iso8601
import Json.Decode as Decode exposing (Decoder)
@ -17,8 +17,8 @@ decoder =
|> Decode.andThen decodeIsoString
encoder : DateOnly -> Encode.Value
encoder =
encode : DateOnly -> Encode.Value
encode =
Encode.string << toString

View File

@ -1,4 +1,4 @@
module DateTime exposing (DateTime, decoder, encoder, toString)
module DateTime exposing (DateTime, decoder, encode, toString)
import Iso8601
import Json.Decode as Decode exposing (Decoder)
@ -17,8 +17,8 @@ decoder =
|> Decode.andThen decodeIsoString
encoder : DateTime -> Encode.Value
encoder =
encode : DateTime -> Encode.Value
encode =
Encode.string << toString

View File

@ -12,8 +12,8 @@
module Request.Pet exposing (addPet, deletePet, findPetsByStatus, findPetsByTags, getPetById, updatePet, updatePetWithForm, uploadFile)
import Data.Pet as Pet exposing (Pet)
import Data.ApiResponse as ApiResponse exposing (ApiResponse)
import Data.Pet as Pet exposing (Pet)
import Dict
import Http
import Json.Decode as Decode
@ -28,18 +28,17 @@ basePath =
addPet :
{ onSend : Result Http.Error () -> msg
, body : Pet
}
-> Cmd msg
addPet params =
Http.request
{ method = "POST"
, headers = []
, url = Url.crossOrigin basePath
["pet"]
(List.filterMap identity [])
, body = Http.jsonBody <| Pet.encoder params.body
, url =
Url.crossOrigin basePath
[ "pet" ]
(List.filterMap identity [])
, body = Http.jsonBody <| Pet.encode params.body
, expect = Http.expectWhatever params.onSend
, timeout = Just 30000
, tracker = Nothing
@ -48,18 +47,17 @@ addPet params =
deletePet :
{ onSend : Result Http.Error () -> msg
, petId : Int
}
-> Cmd msg
deletePet params =
Http.request
{ method = "DELETE"
, headers = []
, url = Url.crossOrigin basePath
["pet", String.fromInt params.petId]
(List.filterMap identity [])
, url =
Url.crossOrigin basePath
[ "pet", String.fromInt params.petId ]
(List.filterMap identity [])
, body = Http.emptyBody
, expect = Http.expectWhatever params.onSend
, timeout = Just 30000
@ -71,8 +69,6 @@ deletePet params =
-}
findPetsByStatus :
{ onSend : Result Http.Error (List Pet) -> msg
, status : List String
}
-> Cmd msg
@ -80,9 +76,10 @@ findPetsByStatus params =
Http.request
{ method = "GET"
, headers = []
, url = Url.crossOrigin basePath
["pet", "findByStatus"]
(List.filterMap identity [Just (Url.string "status" <| String.join "," params.status)])
, url =
Url.crossOrigin basePath
[ "pet", "findByStatus" ]
(List.filterMap identity [ Just (Url.string "status" <| String.join "," params.status) ])
, body = Http.emptyBody
, expect = Http.expectJson params.onSend (Decode.list Pet.decoder)
, timeout = Just 30000
@ -94,8 +91,6 @@ findPetsByStatus params =
-}
findPetsByTags :
{ onSend : Result Http.Error (List Pet) -> msg
, tags : List String
}
-> Cmd msg
@ -103,9 +98,10 @@ findPetsByTags params =
Http.request
{ method = "GET"
, headers = []
, url = Url.crossOrigin basePath
["pet", "findByTags"]
(List.filterMap identity [Just (Url.string "tags" <| String.join "," params.tags)])
, url =
Url.crossOrigin basePath
[ "pet", "findByTags" ]
(List.filterMap identity [ Just (Url.string "tags" <| String.join "," params.tags) ])
, body = Http.emptyBody
, expect = Http.expectJson params.onSend (Decode.list Pet.decoder)
, timeout = Just 30000
@ -117,18 +113,17 @@ findPetsByTags params =
-}
getPetById :
{ onSend : Result Http.Error Pet -> msg
, petId : Int
}
-> Cmd msg
getPetById params =
Http.request
{ method = "GET"
, headers = []
, url = Url.crossOrigin basePath
["pet", String.fromInt params.petId]
(List.filterMap identity [])
, url =
Url.crossOrigin basePath
[ "pet", String.fromInt params.petId ]
(List.filterMap identity [])
, body = Http.emptyBody
, expect = Http.expectJson params.onSend Pet.decoder
, timeout = Just 30000
@ -139,18 +134,17 @@ getPetById params =
updatePet :
{ onSend : Result Http.Error () -> msg
, body : Pet
}
-> Cmd msg
updatePet params =
Http.request
{ method = "PUT"
, headers = []
, url = Url.crossOrigin basePath
["pet"]
(List.filterMap identity [])
, body = Http.jsonBody <| Pet.encoder params.body
, url =
Url.crossOrigin basePath
[ "pet" ]
(List.filterMap identity [])
, body = Http.jsonBody <| Pet.encode params.body
, expect = Http.expectWhatever params.onSend
, timeout = Just 30000
, tracker = Nothing
@ -159,18 +153,17 @@ updatePet params =
updatePetWithForm :
{ onSend : Result Http.Error () -> msg
, petId : Int
}
-> Cmd msg
updatePetWithForm params =
Http.request
{ method = "POST"
, headers = []
, url = Url.crossOrigin basePath
["pet", String.fromInt params.petId]
(List.filterMap identity [])
, url =
Url.crossOrigin basePath
[ "pet", String.fromInt params.petId ]
(List.filterMap identity [])
, body = Http.emptyBody
, expect = Http.expectWhatever params.onSend
, timeout = Just 30000
@ -180,18 +173,17 @@ updatePetWithForm params =
uploadFile :
{ onSend : Result Http.Error ApiResponse -> msg
, petId : Int
}
-> Cmd msg
uploadFile params =
Http.request
{ method = "POST"
, headers = []
, url = Url.crossOrigin basePath
["pet", String.fromInt params.petId, "uploadImage"]
(List.filterMap identity [])
, url =
Url.crossOrigin basePath
[ "pet", String.fromInt params.petId, "uploadImage" ]
(List.filterMap identity [])
, body = Http.emptyBody
, expect = Http.expectJson params.onSend ApiResponse.decoder
, timeout = Just 30000

View File

@ -28,18 +28,17 @@ basePath =
-}
deleteOrder :
{ onSend : Result Http.Error () -> msg
, orderId : String
}
-> Cmd msg
deleteOrder params =
Http.request
{ method = "DELETE"
, headers = []
, url = Url.crossOrigin basePath
["store", "order", params.orderId]
(List.filterMap identity [])
, url =
Url.crossOrigin basePath
[ "store", "order", params.orderId ]
(List.filterMap identity [])
, body = Http.emptyBody
, expect = Http.expectWhatever params.onSend
, timeout = Just 30000
@ -51,18 +50,16 @@ deleteOrder params =
-}
getInventory :
{ onSend : Result Http.Error (Dict.Dict String Int) -> msg
}
-> Cmd msg
getInventory params =
Http.request
{ method = "GET"
, headers = []
, url = Url.crossOrigin basePath
["store", "inventory"]
(List.filterMap identity [])
, url =
Url.crossOrigin basePath
[ "store", "inventory" ]
(List.filterMap identity [])
, body = Http.emptyBody
, expect = Http.expectJson params.onSend (Decode.dict Decode.int)
, timeout = Just 30000
@ -74,18 +71,17 @@ getInventory params =
-}
getOrderById :
{ onSend : Result Http.Error Order_ -> msg
, orderId : Int
}
-> Cmd msg
getOrderById params =
Http.request
{ method = "GET"
, headers = []
, url = Url.crossOrigin basePath
["store", "order", String.fromInt params.orderId]
(List.filterMap identity [])
, url =
Url.crossOrigin basePath
[ "store", "order", String.fromInt params.orderId ]
(List.filterMap identity [])
, body = Http.emptyBody
, expect = Http.expectJson params.onSend Order_.decoder
, timeout = Just 30000
@ -96,18 +92,17 @@ getOrderById params =
placeOrder :
{ onSend : Result Http.Error Order_ -> msg
, body : Order_
}
-> Cmd msg
placeOrder params =
Http.request
{ method = "POST"
, headers = []
, url = Url.crossOrigin basePath
["store", "order"]
(List.filterMap identity [])
, body = Http.jsonBody <| Order_.encoder params.body
, url =
Url.crossOrigin basePath
[ "store", "order" ]
(List.filterMap identity [])
, body = Http.jsonBody <| Order_.encode params.body
, expect = Http.expectJson params.onSend Order_.decoder
, timeout = Just 30000
, tracker = Nothing

View File

@ -29,18 +29,17 @@ basePath =
createUser :
{ onSend : Result Http.Error () -> msg
, body : User
}
-> Cmd msg
createUser params =
Http.request
{ method = "POST"
, headers = []
, url = Url.crossOrigin basePath
["user"]
(List.filterMap identity [])
, body = Http.jsonBody <| User.encoder params.body
, url =
Url.crossOrigin basePath
[ "user" ]
(List.filterMap identity [])
, body = Http.jsonBody <| User.encode params.body
, expect = Http.expectWhatever params.onSend
, timeout = Just 30000
, tracker = Nothing
@ -50,18 +49,17 @@ createUser params =
createUsersWithArrayInput :
{ onSend : Result Http.Error () -> msg
, body : User
}
-> Cmd msg
createUsersWithArrayInput params =
Http.request
{ method = "POST"
, headers = []
, url = Url.crossOrigin basePath
["user", "createWithArray"]
(List.filterMap identity [])
, body = Http.jsonBody <| User.encoder params.body
, url =
Url.crossOrigin basePath
[ "user", "createWithArray" ]
(List.filterMap identity [])
, body = Http.jsonBody <| User.encode params.body
, expect = Http.expectWhatever params.onSend
, timeout = Just 30000
, tracker = Nothing
@ -71,18 +69,17 @@ createUsersWithArrayInput params =
createUsersWithListInput :
{ onSend : Result Http.Error () -> msg
, body : User
}
-> Cmd msg
createUsersWithListInput params =
Http.request
{ method = "POST"
, headers = []
, url = Url.crossOrigin basePath
["user", "createWithList"]
(List.filterMap identity [])
, body = Http.jsonBody <| User.encoder params.body
, url =
Url.crossOrigin basePath
[ "user", "createWithList" ]
(List.filterMap identity [])
, body = Http.jsonBody <| User.encode params.body
, expect = Http.expectWhatever params.onSend
, timeout = Just 30000
, tracker = Nothing
@ -93,18 +90,17 @@ createUsersWithListInput params =
-}
deleteUser :
{ onSend : Result Http.Error () -> msg
, username : String
}
-> Cmd msg
deleteUser params =
Http.request
{ method = "DELETE"
, headers = []
, url = Url.crossOrigin basePath
["user", params.username]
(List.filterMap identity [])
, url =
Url.crossOrigin basePath
[ "user", params.username ]
(List.filterMap identity [])
, body = Http.emptyBody
, expect = Http.expectWhatever params.onSend
, timeout = Just 30000
@ -114,18 +110,17 @@ deleteUser params =
getUserByName :
{ onSend : Result Http.Error User -> msg
, username : String
}
-> Cmd msg
getUserByName params =
Http.request
{ method = "GET"
, headers = []
, url = Url.crossOrigin basePath
["user", params.username]
(List.filterMap identity [])
, url =
Url.crossOrigin basePath
[ "user", params.username ]
(List.filterMap identity [])
, body = Http.emptyBody
, expect = Http.expectJson params.onSend User.decoder
, timeout = Just 30000
@ -135,18 +130,18 @@ getUserByName params =
loginUser :
{ onSend : Result Http.Error String -> msg
, username : String , password : String
, username : String
, password : String
}
-> Cmd msg
loginUser params =
Http.request
{ method = "GET"
, headers = []
, url = Url.crossOrigin basePath
["user", "login"]
(List.filterMap identity [Just (Url.string "username" <| params.username), Just (Url.string "password" <| params.password)])
, url =
Url.crossOrigin basePath
[ "user", "login" ]
(List.filterMap identity [ Just (Url.string "username" <| params.username), Just (Url.string "password" <| params.password) ])
, body = Http.emptyBody
, expect = Http.expectJson params.onSend Decode.string
, timeout = Just 30000
@ -156,18 +151,16 @@ loginUser params =
logoutUser :
{ onSend : Result Http.Error () -> msg
}
-> Cmd msg
logoutUser params =
Http.request
{ method = "GET"
, headers = []
, url = Url.crossOrigin basePath
["user", "logout"]
(List.filterMap identity [])
, url =
Url.crossOrigin basePath
[ "user", "logout" ]
(List.filterMap identity [])
, body = Http.emptyBody
, expect = Http.expectWhatever params.onSend
, timeout = Just 30000
@ -181,17 +174,17 @@ updateUser :
{ onSend : Result Http.Error () -> msg
, body : User
, username : String
}
-> Cmd msg
updateUser params =
Http.request
{ method = "PUT"
, headers = []
, url = Url.crossOrigin basePath
["user", params.username]
(List.filterMap identity [])
, body = Http.jsonBody <| User.encoder params.body
, url =
Url.crossOrigin basePath
[ "user", params.username ]
(List.filterMap identity [])
, body = Http.jsonBody <| User.encode params.body
, expect = Http.expectWhatever params.onSend
, timeout = Just 30000
, tracker = Nothing