packages feed

swagger-petstore 0.0.1.0 → 0.0.1.1

raw patch · 8 files changed

+228/−186 lines, 8 filesdep +microlensPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: microlens

API changes (from Hackage documentation)

- SwaggerPetstore.API: [params] :: SwaggerPetstoreRequest req contentType res -> Params
- SwaggerPetstore.API: [urlPath] :: SwaggerPetstoreRequest req contentType res -> [ByteString]
- SwaggerPetstore.Lens: _mtraversal :: Applicative f => (b -> Maybe t) -> (a -> b) -> (t -> f a) -> b -> f b
- SwaggerPetstore.Lens: apiResponseCodeT :: Traversal_' ApiResponse Int
- SwaggerPetstore.Lens: apiResponseMessageT :: Traversal_' ApiResponse Text
- SwaggerPetstore.Lens: apiResponseTypeT :: Traversal_' ApiResponse Text
- SwaggerPetstore.Lens: categoryIdT :: Traversal_' Category Integer
- SwaggerPetstore.Lens: categoryNameT :: Traversal_' Category Text
- SwaggerPetstore.Lens: orderCompleteT :: Traversal_' Order Bool
- SwaggerPetstore.Lens: orderIdT :: Traversal_' Order Integer
- SwaggerPetstore.Lens: orderPetIdT :: Traversal_' Order Integer
- SwaggerPetstore.Lens: orderQuantityT :: Traversal_' Order Int
- SwaggerPetstore.Lens: orderShipDateT :: Traversal_' Order UTCTime
- SwaggerPetstore.Lens: orderStatusT :: Traversal_' Order Text
- SwaggerPetstore.Lens: petCategoryT :: Traversal_' Pet Category
- SwaggerPetstore.Lens: petIdT :: Traversal_' Pet Integer
- SwaggerPetstore.Lens: petStatusT :: Traversal_' Pet Text
- SwaggerPetstore.Lens: petTagsT :: Traversal_' Pet [Tag]
- SwaggerPetstore.Lens: tagIdT :: Traversal_' Tag Integer
- SwaggerPetstore.Lens: tagNameT :: Traversal_' Tag Text
- SwaggerPetstore.Lens: type Traversal_' s a = Traversal_ s s a a
- SwaggerPetstore.Lens: userEmailT :: Traversal_' User Text
- SwaggerPetstore.Lens: userFirstNameT :: Traversal_' User Text
- SwaggerPetstore.Lens: userIdT :: Traversal_' User Integer
- SwaggerPetstore.Lens: userLastNameT :: Traversal_' User Text
- SwaggerPetstore.Lens: userPasswordT :: Traversal_' User Text
- SwaggerPetstore.Lens: userPhoneT :: Traversal_' User Text
- SwaggerPetstore.Lens: userUserStatusT :: Traversal_' User Int
- SwaggerPetstore.Lens: userUsernameT :: Traversal_' User Text
+ SwaggerPetstore.API: [rParams] :: SwaggerPetstoreRequest req contentType res -> Params
+ SwaggerPetstore.API: [rUrlPath] :: SwaggerPetstoreRequest req contentType res -> [ByteString]
+ SwaggerPetstore.API: paramsBodyL :: Lens_' Params ParamBody
+ SwaggerPetstore.API: paramsHeadersL :: Lens_' Params RequestHeaders
+ SwaggerPetstore.API: paramsQueryL :: Lens_' Params Query
+ SwaggerPetstore.API: rMethodL :: Lens_' (SwaggerPetstoreRequest req contentType res) Method
+ SwaggerPetstore.API: rParamsL :: Lens_' (SwaggerPetstoreRequest req contentType res) Params
+ SwaggerPetstore.API: rUrlPathL :: Lens_' (SwaggerPetstoreRequest req contentType res) [ByteString]
+ SwaggerPetstore.Lens: apiResponseCodeL :: Lens_' ApiResponse (Maybe Int)
+ SwaggerPetstore.Lens: apiResponseMessageL :: Lens_' ApiResponse (Maybe Text)
+ SwaggerPetstore.Lens: apiResponseTypeL :: Lens_' ApiResponse (Maybe Text)
+ SwaggerPetstore.Lens: categoryIdL :: Lens_' Category (Maybe Integer)
+ SwaggerPetstore.Lens: categoryNameL :: Lens_' Category (Maybe Text)
+ SwaggerPetstore.Lens: orderCompleteL :: Lens_' Order (Maybe Bool)
+ SwaggerPetstore.Lens: orderIdL :: Lens_' Order (Maybe Integer)
+ SwaggerPetstore.Lens: orderPetIdL :: Lens_' Order (Maybe Integer)
+ SwaggerPetstore.Lens: orderQuantityL :: Lens_' Order (Maybe Int)
+ SwaggerPetstore.Lens: orderShipDateL :: Lens_' Order (Maybe UTCTime)
+ SwaggerPetstore.Lens: orderStatusL :: Lens_' Order (Maybe Text)
+ SwaggerPetstore.Lens: petCategoryL :: Lens_' Pet (Maybe Category)
+ SwaggerPetstore.Lens: petIdL :: Lens_' Pet (Maybe Integer)
+ SwaggerPetstore.Lens: petStatusL :: Lens_' Pet (Maybe Text)
+ SwaggerPetstore.Lens: petTagsL :: Lens_' Pet (Maybe [Tag])
+ SwaggerPetstore.Lens: tagIdL :: Lens_' Tag (Maybe Integer)
+ SwaggerPetstore.Lens: tagNameL :: Lens_' Tag (Maybe Text)
+ SwaggerPetstore.Lens: userEmailL :: Lens_' User (Maybe Text)
+ SwaggerPetstore.Lens: userFirstNameL :: Lens_' User (Maybe Text)
+ SwaggerPetstore.Lens: userIdL :: Lens_' User (Maybe Integer)
+ SwaggerPetstore.Lens: userLastNameL :: Lens_' User (Maybe Text)
+ SwaggerPetstore.Lens: userPasswordL :: Lens_' User (Maybe Text)
+ SwaggerPetstore.Lens: userPhoneL :: Lens_' User (Maybe Text)
+ SwaggerPetstore.Lens: userUserStatusL :: Lens_' User (Maybe Int)
+ SwaggerPetstore.Lens: userUsernameL :: Lens_' User (Maybe Text)
- SwaggerPetstore.Lens: petNameL :: Lens_' Pet Text
+ SwaggerPetstore.Lens: petNameL :: Lens_' Pet (Text)
- SwaggerPetstore.Lens: petPhotoUrlsL :: Lens_' Pet [Text]
+ SwaggerPetstore.Lens: petPhotoUrlsL :: Lens_' Pet ([Text])
- SwaggerPetstore.Model: ApiResponse :: Maybe Int -> Maybe Text -> Maybe Text -> ApiResponse
+ SwaggerPetstore.Model: ApiResponse :: !(Maybe Int) -> !(Maybe Text) -> !(Maybe Text) -> ApiResponse
- SwaggerPetstore.Model: Category :: Maybe Integer -> Maybe Text -> Category
+ SwaggerPetstore.Model: Category :: !(Maybe Integer) -> !(Maybe Text) -> Category
- SwaggerPetstore.Model: Order :: Maybe Integer -> Maybe Integer -> Maybe Int -> Maybe UTCTime -> Maybe Text -> Maybe Bool -> Order
+ SwaggerPetstore.Model: Order :: !(Maybe Integer) -> !(Maybe Integer) -> !(Maybe Int) -> !(Maybe UTCTime) -> !(Maybe Text) -> !(Maybe Bool) -> Order
- SwaggerPetstore.Model: Pet :: Maybe Integer -> Maybe Category -> Text -> [Text] -> Maybe [Tag] -> Maybe Text -> Pet
+ SwaggerPetstore.Model: Pet :: !(Maybe Integer) -> !(Maybe Category) -> !(Text) -> !([Text]) -> !(Maybe [Tag]) -> !(Maybe Text) -> Pet
- SwaggerPetstore.Model: Tag :: Maybe Integer -> Maybe Text -> Tag
+ SwaggerPetstore.Model: Tag :: !(Maybe Integer) -> !(Maybe Text) -> Tag
- SwaggerPetstore.Model: User :: Maybe Integer -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Int -> User
+ SwaggerPetstore.Model: User :: !(Maybe Integer) -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe Int) -> User
- SwaggerPetstore.Model: [apiResponseCode] :: ApiResponse -> Maybe Int
+ SwaggerPetstore.Model: [apiResponseCode] :: ApiResponse -> !(Maybe Int)
- SwaggerPetstore.Model: [apiResponseMessage] :: ApiResponse -> Maybe Text
+ SwaggerPetstore.Model: [apiResponseMessage] :: ApiResponse -> !(Maybe Text)
- SwaggerPetstore.Model: [apiResponseType] :: ApiResponse -> Maybe Text
+ SwaggerPetstore.Model: [apiResponseType] :: ApiResponse -> !(Maybe Text)
- SwaggerPetstore.Model: [categoryId] :: Category -> Maybe Integer
+ SwaggerPetstore.Model: [categoryId] :: Category -> !(Maybe Integer)
- SwaggerPetstore.Model: [categoryName] :: Category -> Maybe Text
+ SwaggerPetstore.Model: [categoryName] :: Category -> !(Maybe Text)
- SwaggerPetstore.Model: [orderComplete] :: Order -> Maybe Bool
+ SwaggerPetstore.Model: [orderComplete] :: Order -> !(Maybe Bool)
- SwaggerPetstore.Model: [orderId] :: Order -> Maybe Integer
+ SwaggerPetstore.Model: [orderId] :: Order -> !(Maybe Integer)
- SwaggerPetstore.Model: [orderPetId] :: Order -> Maybe Integer
+ SwaggerPetstore.Model: [orderPetId] :: Order -> !(Maybe Integer)
- SwaggerPetstore.Model: [orderQuantity] :: Order -> Maybe Int
+ SwaggerPetstore.Model: [orderQuantity] :: Order -> !(Maybe Int)
- SwaggerPetstore.Model: [orderShipDate] :: Order -> Maybe UTCTime
+ SwaggerPetstore.Model: [orderShipDate] :: Order -> !(Maybe UTCTime)
- SwaggerPetstore.Model: [orderStatus] :: Order -> Maybe Text
+ SwaggerPetstore.Model: [orderStatus] :: Order -> !(Maybe Text)
- SwaggerPetstore.Model: [petCategory] :: Pet -> Maybe Category
+ SwaggerPetstore.Model: [petCategory] :: Pet -> !(Maybe Category)
- SwaggerPetstore.Model: [petId] :: Pet -> Maybe Integer
+ SwaggerPetstore.Model: [petId] :: Pet -> !(Maybe Integer)
- SwaggerPetstore.Model: [petName] :: Pet -> Text
+ SwaggerPetstore.Model: [petName] :: Pet -> !(Text)
- SwaggerPetstore.Model: [petPhotoUrls] :: Pet -> [Text]
+ SwaggerPetstore.Model: [petPhotoUrls] :: Pet -> !([Text])
- SwaggerPetstore.Model: [petStatus] :: Pet -> Maybe Text
+ SwaggerPetstore.Model: [petStatus] :: Pet -> !(Maybe Text)
- SwaggerPetstore.Model: [petTags] :: Pet -> Maybe [Tag]
+ SwaggerPetstore.Model: [petTags] :: Pet -> !(Maybe [Tag])
- SwaggerPetstore.Model: [tagId] :: Tag -> Maybe Integer
+ SwaggerPetstore.Model: [tagId] :: Tag -> !(Maybe Integer)
- SwaggerPetstore.Model: [tagName] :: Tag -> Maybe Text
+ SwaggerPetstore.Model: [tagName] :: Tag -> !(Maybe Text)
- SwaggerPetstore.Model: [userEmail] :: User -> Maybe Text
+ SwaggerPetstore.Model: [userEmail] :: User -> !(Maybe Text)
- SwaggerPetstore.Model: [userFirstName] :: User -> Maybe Text
+ SwaggerPetstore.Model: [userFirstName] :: User -> !(Maybe Text)
- SwaggerPetstore.Model: [userId] :: User -> Maybe Integer
+ SwaggerPetstore.Model: [userId] :: User -> !(Maybe Integer)
- SwaggerPetstore.Model: [userLastName] :: User -> Maybe Text
+ SwaggerPetstore.Model: [userLastName] :: User -> !(Maybe Text)
- SwaggerPetstore.Model: [userPassword] :: User -> Maybe Text
+ SwaggerPetstore.Model: [userPassword] :: User -> !(Maybe Text)
- SwaggerPetstore.Model: [userPhone] :: User -> Maybe Text
+ SwaggerPetstore.Model: [userPhone] :: User -> !(Maybe Text)
- SwaggerPetstore.Model: [userUserStatus] :: User -> Maybe Int
+ SwaggerPetstore.Model: [userUserStatus] :: User -> !(Maybe Int)
- SwaggerPetstore.Model: [userUsername] :: User -> Maybe Text
+ SwaggerPetstore.Model: [userUsername] :: User -> !(Maybe Text)

Files

README.md view
@@ -50,48 +50,59 @@          - use `setHeader` to add any required headers to requests +* Model Inheritance+ * Default Parameter Values  * Enum Parameters + This is beta software; other cases may not be supported. -### Codegen "config option" parameters+### Codegen "additional properties" parameters  These options allow some customization of the code generation process. -**haskell-http-client specific options:**+**haskell-http-client additional properties:** -| OPTION                          | DESCRIPTION                                                                                                                   | DEFAULT  | ACTUAL                              |-| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------------------------- |+| OPTION                          | DESCRIPTION                                                                                                                   | DEFAULT  | ACTUAL                                |+| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------- | | allowFromJsonNulls              | allow JSON Null during model decoding from JSON                                                                               | true     | true              | | allowToJsonNulls                | allow emitting JSON Null during model encoding to JSON                                                                        | false    | false                |-| dateFormat                      | format string used to parse/render a date                                                                                     | %Y-%m-%d |                       |+| dateFormat                      | format string used to parse/render a date                                                                                     | %Y-%m-%d | %Y-%m-%d                      | | dateTimeFormat                  | format string used to parse/render a datetime. (Defaults to [formatISO8601Millis][1] when not provided)                       |          |                   | | generateFormUrlEncodedInstances | Generate FromForm/ToForm instances for models used by x-www-form-urlencoded operations (model fields must be primitive types) | true     | true | | generateLenses                  | Generate Lens optics for Models                                                                                               | true     | true                  | | generateModelConstructors       | Generate smart constructors (only supply required fields) for models                                                          | true     | true       | | modelDeriving                   | Additional classes to include in the deriving() clause of Models                                                              |          |                    |+| strictFields                    | Add strictness annotations to all model fields                                                                                | true     | true                  |  [1]: https://www.stackage.org/haddock/lts-9.0/iso8601-time-0.1.4/Data-Time-ISO8601.html#v:formatISO8601Millis +An example setting _strictFields_ and _dateTimeFormat_:++```+java -jar swagger-codegen-cli.jar generate -i petstore.yaml -l haskell-http-client -o output/haskell-http-client -DstrictFields=true -DdateTimeFormat="%Y-%m-%dT%H:%M:%S%Q%z"+```+ View the full list of Codegen "config option" parameters with the command:  ```-java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar config-help -l haskell-http-client+java -jar swagger-codegen-cli.jar config-help -l haskell-http-client ``` + ### Example SwaggerPetstore Haddock documentation   An example of the generated haddock documentation targeting the server http://petstore.swagger.io/ (SwaggerPetstore) can be found [here][2] -[2]: https://jonschoning.github.io/swaggerpetstore-haskell-http-client/+[2]: https://hackage.haskell.org/package/swagger-petstore  ### Example SwaggerPetstore App  An example application using the auto-generated haskell-http-client bindings for the server http://petstore.swagger.io/ can be found [here][3] -[3]: https://github.com/jonschoning/swagger-codegen/tree/haskell-http-client/samples/client/petstore/haskell-http-client/example-app+[3]: https://github.com/swagger-api/swagger-codegen/tree/c7d145a4ba3c0627e04ece9eb97e354ac91be821/samples/client/petstore/haskell-http-client/example-app  ### Usage Notes @@ -103,22 +114,23 @@ | SwaggerPetstore.API       | construct requetss                                  | | SwaggerPetstore.Model     | describes models                                    | | SwaggerPetstore.MimeTypes | encoding/decoding MIME types (content-types/accept) |-| SwaggerPetstore.Lens      | lenses & traversals for model fields                |+| SwaggerPetstore.Lens      | lenses for model fields                             |  This library adds type safety around what swagger specifies as Produces and Consumes for each Operation (e.g. the list of MIME types an Operation can Produce (using 'accept' headers) and Consume (using 'content-type' headers).  For example, if there is an Operation named _addFoo_, there will be a-data type generated named _AddFoo_ (note the capitalization) which-describes additional constraints and actions on the _addFoo_-operation, which can be viewed in GHCi or via the Haddocks.+data type generated named _AddFoo_ (note the capitalization), which+describes additional constraints and actions on the _addFoo_ operation+via its typeclass instances. These typeclass instances can be viewed+in GHCi or via the Haddocks.  * requried parameters are included as function arguments to _addFoo_ * optional non-body parameters are included by using  `applyOptionalParam` * optional body parameters are set by using  `setBodyParam` -Example for pretend _addFoo_ operation: +Example code generated for pretend _addFoo_ operation:   ```haskell data AddFoo 	
lib/SwaggerPetstore/API.hs view
@@ -11,13 +11,15 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE InstanceSigs #-}-{-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-unused-imports #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}  module SwaggerPetstore.API where   import SwaggerPetstore.Model as M import SwaggerPetstore.MimeTypes+import SwaggerPetstore.Lens  import qualified Data.Aeson as A import Data.Aeson (Value)@@ -52,6 +54,8 @@ import qualified GHC.Base as P (Alternative) import qualified Control.Arrow as P (left) +import qualified Lens.Micro as L+ import Data.Monoid ((<>)) import Data.Function ((&)) import Data.Set (Set)@@ -676,11 +680,26 @@ -- | Represents a request. The "req" type variable is the request type. The "res" type variable is the response type. data SwaggerPetstoreRequest req contentType res = SwaggerPetstoreRequest   { rMethod  :: NH.Method   -- ^ Method of SwaggerPetstoreRequest-  , urlPath :: [BCL.ByteString] -- ^ Endpoint of SwaggerPetstoreRequest-  , params   :: Params -- ^ params of SwaggerPetstoreRequest+  , rUrlPath :: [BCL.ByteString] -- ^ Endpoint of SwaggerPetstoreRequest+  , rParams   :: Params -- ^ params of SwaggerPetstoreRequest   }   deriving (P.Show) +-- | 'rMethod' Lens+rMethodL :: Lens_' (SwaggerPetstoreRequest req contentType res) NH.Method+rMethodL f SwaggerPetstoreRequest{..} = (\rMethod -> SwaggerPetstoreRequest { rMethod, ..} ) <$> f rMethod+{-# INLINE rMethodL #-}++-- | 'rUrlPath' Lens+rUrlPathL :: Lens_' (SwaggerPetstoreRequest req contentType res) [BCL.ByteString]+rUrlPathL f SwaggerPetstoreRequest{..} = (\rUrlPath -> SwaggerPetstoreRequest { rUrlPath, ..} ) <$> f rUrlPath+{-# INLINE rUrlPathL #-}++-- | 'rParams' Lens+rParamsL :: Lens_' (SwaggerPetstoreRequest req contentType res) Params+rParamsL f SwaggerPetstoreRequest{..} = (\rParams -> SwaggerPetstoreRequest { rParams, ..} ) <$> f rParams+{-# INLINE rParamsL #-}+ -- | Request Params data Params = Params   { paramsQuery :: NH.Query@@ -689,6 +708,21 @@   }   deriving (P.Show) +-- | 'paramsQuery' Lens+paramsQueryL :: Lens_' Params NH.Query+paramsQueryL f Params{..} = (\paramsQuery -> Params { paramsQuery, ..} ) <$> f paramsQuery+{-# INLINE paramsQueryL #-}++-- | 'paramsHeaders' Lens+paramsHeadersL :: Lens_' Params NH.RequestHeaders+paramsHeadersL f Params{..} = (\paramsHeaders -> Params { paramsHeaders, ..} ) <$> f paramsHeaders+{-# INLINE paramsHeadersL #-}++-- | 'paramsBody' Lens+paramsBodyL :: Lens_' Params ParamBody+paramsBodyL f Params{..} = (\paramsBody -> Params { paramsBody, ..} ) <$> f paramsBody+{-# INLINE paramsBodyL #-}+ -- | Request Body data ParamBody   = ParamBodyNone@@ -709,15 +743,18 @@ _mkParams = Params [] [] ParamBodyNone  setHeader :: SwaggerPetstoreRequest req contentType res -> [NH.Header] -> SwaggerPetstoreRequest req contentType res-setHeader req header = -    let _params = params (req `removeHeader` P.fmap P.fst header)-    in req { params = _params { paramsHeaders = header P.++ paramsHeaders _params } }+setHeader req header =+  req `removeHeader` P.fmap P.fst header &+  L.over (rParamsL . paramsHeadersL) (header P.++)  removeHeader :: SwaggerPetstoreRequest req contentType res -> [NH.HeaderName] -> SwaggerPetstoreRequest req contentType res-removeHeader req header = -    let _params = params req-    in req { params = _params { paramsHeaders = [h | h <- paramsHeaders _params, cifst h `P.notElem` P.fmap CI.mk header] } }-  where cifst = CI.mk . P.fst+removeHeader req header =+  req &+  L.over+    (rParamsL . paramsHeadersL)+    (P.filter (\h -> cifst h `P.notElem` P.fmap CI.mk header))+  where+    cifst = CI.mk . P.fst   _setContentTypeHeader :: forall req contentType res. MimeType contentType => SwaggerPetstoreRequest req contentType res -> SwaggerPetstoreRequest req contentType res@@ -734,35 +771,34 @@  _setQuery :: SwaggerPetstoreRequest req contentType res -> [NH.QueryItem] -> SwaggerPetstoreRequest req contentType res _setQuery req query = -    let _params = params req -    in req { params = _params { paramsQuery = query P.++ [q | q <- paramsQuery _params, cifst q `P.notElem` P.fmap cifst query] } }-  where cifst = CI.mk . P.fst+  req &+  L.over+    (rParamsL . paramsQueryL)+    ((query P.++) . P.filter (\q -> cifst q `P.notElem` P.fmap cifst query))+  where+    cifst = CI.mk . P.fst  _addForm :: SwaggerPetstoreRequest req contentType res -> WH.Form -> SwaggerPetstoreRequest req contentType res _addForm req newform = -    let _params = params req-        form = case paramsBody _params of+    let form = case paramsBody (rParams req) of             ParamBodyFormUrlEncoded _form -> _form             _ -> mempty-    in req { params = _params { paramsBody = ParamBodyFormUrlEncoded (newform <> form) } }+    in req & L.set (rParamsL . paramsBodyL) (ParamBodyFormUrlEncoded (newform <> form))  _addMultiFormPart :: SwaggerPetstoreRequest req contentType res -> NH.Part -> SwaggerPetstoreRequest req contentType res _addMultiFormPart req newpart = -    let _params = params req-        parts = case paramsBody _params of+    let parts = case paramsBody (rParams req) of             ParamBodyMultipartFormData _parts -> _parts             _ -> []-    in req { params = _params { paramsBody = ParamBodyMultipartFormData (newpart : parts) } }+    in req & L.set (rParamsL . paramsBodyL) (ParamBodyMultipartFormData (newpart : parts))  _setBodyBS :: SwaggerPetstoreRequest req contentType res -> B.ByteString -> SwaggerPetstoreRequest req contentType res _setBodyBS req body = -    let _params = params req-    in req { params = _params { paramsBody = ParamBodyB body } }+    req & L.set (rParamsL . paramsBodyL) (ParamBodyB body)  _setBodyLBS :: SwaggerPetstoreRequest req contentType res -> BL.ByteString -> SwaggerPetstoreRequest req contentType res _setBodyLBS req body = -    let _params = params req-    in req { params = _params { paramsBody = ParamBodyBL body } }+    req & L.set (rParamsL . paramsBodyL) (ParamBodyBL body)   -- ** Params Utils
lib/SwaggerPetstore/Client.hs view
@@ -225,15 +225,15 @@   -> accept -- ^ "accept" 'MimeType'   -> IO (InitRequest req contentType res accept) -- ^ initialized request _toInitRequest config req0 accept = do-  parsedReq <- NH.parseRequest $ BCL.unpack $ BCL.append (configHost config) (BCL.concat (urlPath req0))+  parsedReq <- NH.parseRequest $ BCL.unpack $ BCL.append (configHost config) (BCL.concat (rUrlPath req0))   let req1 = _setAcceptHeader req0 accept & _setContentTypeHeader-      reqHeaders = ("User-Agent", WH.toHeader (configUserAgent config)) : paramsHeaders (params req1)-      reqQuery = NH.renderQuery True (paramsQuery (params req1))+      reqHeaders = ("User-Agent", WH.toHeader (configUserAgent config)) : paramsHeaders (rParams req1)+      reqQuery = NH.renderQuery True (paramsQuery (rParams req1))       pReq = parsedReq { NH.method = (rMethod req1)                        , NH.requestHeaders = reqHeaders                        , NH.queryString = reqQuery                        }-  outReq <- case paramsBody (params req1) of+  outReq <- case paramsBody (rParams req1) of     ParamBodyNone -> pure (pReq { NH.requestBody = mempty })     ParamBodyB bs -> pure (pReq { NH.requestBody = NH.RequestBodyBS bs })     ParamBodyBL bl -> pure (pReq { NH.requestBody = NH.RequestBodyLBS bl })
lib/SwaggerPetstore/Lens.hs view
@@ -29,174 +29,165 @@  -- * Type Aliases -type Traversal_' s a = Traversal_ s s a a-type Traversal_ s t a b = forall (f :: * -> *). Applicative f => (a -> f b) -> s -> f t type Lens_' s a = Lens_ s s a a type Lens_ s t a b = forall (f :: * -> *). Functor f => (a -> f b) -> s -> f t   -- * ApiResponse --- | 'apiResponseCode' Traversal-apiResponseCodeT :: Traversal_' ApiResponse Int-apiResponseCodeT f s = _mtraversal apiResponseCode (\b -> s { apiResponseCode = Just b}) f s-{-# INLINE apiResponseCodeT #-}+-- | 'apiResponseCode' Lens+apiResponseCodeL :: Lens_' ApiResponse (Maybe Int)+apiResponseCodeL f ApiResponse{..} = (\apiResponseCode -> ApiResponse { apiResponseCode, ..} ) <$> f apiResponseCode+{-# INLINE apiResponseCodeL #-} --- | 'apiResponseType' Traversal-apiResponseTypeT :: Traversal_' ApiResponse Text-apiResponseTypeT f s = _mtraversal apiResponseType (\b -> s { apiResponseType = Just b}) f s-{-# INLINE apiResponseTypeT #-}+-- | 'apiResponseType' Lens+apiResponseTypeL :: Lens_' ApiResponse (Maybe Text)+apiResponseTypeL f ApiResponse{..} = (\apiResponseType -> ApiResponse { apiResponseType, ..} ) <$> f apiResponseType+{-# INLINE apiResponseTypeL #-} --- | 'apiResponseMessage' Traversal-apiResponseMessageT :: Traversal_' ApiResponse Text-apiResponseMessageT f s = _mtraversal apiResponseMessage (\b -> s { apiResponseMessage = Just b}) f s-{-# INLINE apiResponseMessageT #-}+-- | 'apiResponseMessage' Lens+apiResponseMessageL :: Lens_' ApiResponse (Maybe Text)+apiResponseMessageL f ApiResponse{..} = (\apiResponseMessage -> ApiResponse { apiResponseMessage, ..} ) <$> f apiResponseMessage+{-# INLINE apiResponseMessageL #-}    -- * Category --- | 'categoryId' Traversal-categoryIdT :: Traversal_' Category Integer-categoryIdT f s = _mtraversal categoryId (\b -> s { categoryId = Just b}) f s-{-# INLINE categoryIdT #-}+-- | 'categoryId' Lens+categoryIdL :: Lens_' Category (Maybe Integer)+categoryIdL f Category{..} = (\categoryId -> Category { categoryId, ..} ) <$> f categoryId+{-# INLINE categoryIdL #-} --- | 'categoryName' Traversal-categoryNameT :: Traversal_' Category Text-categoryNameT f s = _mtraversal categoryName (\b -> s { categoryName = Just b}) f s-{-# INLINE categoryNameT #-}+-- | 'categoryName' Lens+categoryNameL :: Lens_' Category (Maybe Text)+categoryNameL f Category{..} = (\categoryName -> Category { categoryName, ..} ) <$> f categoryName+{-# INLINE categoryNameL #-}    -- * Order --- | 'orderId' Traversal-orderIdT :: Traversal_' Order Integer-orderIdT f s = _mtraversal orderId (\b -> s { orderId = Just b}) f s-{-# INLINE orderIdT #-}+-- | 'orderId' Lens+orderIdL :: Lens_' Order (Maybe Integer)+orderIdL f Order{..} = (\orderId -> Order { orderId, ..} ) <$> f orderId+{-# INLINE orderIdL #-} --- | 'orderPetId' Traversal-orderPetIdT :: Traversal_' Order Integer-orderPetIdT f s = _mtraversal orderPetId (\b -> s { orderPetId = Just b}) f s-{-# INLINE orderPetIdT #-}+-- | 'orderPetId' Lens+orderPetIdL :: Lens_' Order (Maybe Integer)+orderPetIdL f Order{..} = (\orderPetId -> Order { orderPetId, ..} ) <$> f orderPetId+{-# INLINE orderPetIdL #-} --- | 'orderQuantity' Traversal-orderQuantityT :: Traversal_' Order Int-orderQuantityT f s = _mtraversal orderQuantity (\b -> s { orderQuantity = Just b}) f s-{-# INLINE orderQuantityT #-}+-- | 'orderQuantity' Lens+orderQuantityL :: Lens_' Order (Maybe Int)+orderQuantityL f Order{..} = (\orderQuantity -> Order { orderQuantity, ..} ) <$> f orderQuantity+{-# INLINE orderQuantityL #-} --- | 'orderShipDate' Traversal-orderShipDateT :: Traversal_' Order UTCTime-orderShipDateT f s = _mtraversal orderShipDate (\b -> s { orderShipDate = Just b}) f s-{-# INLINE orderShipDateT #-}+-- | 'orderShipDate' Lens+orderShipDateL :: Lens_' Order (Maybe UTCTime)+orderShipDateL f Order{..} = (\orderShipDate -> Order { orderShipDate, ..} ) <$> f orderShipDate+{-# INLINE orderShipDateL #-} --- | 'orderStatus' Traversal-orderStatusT :: Traversal_' Order Text-orderStatusT f s = _mtraversal orderStatus (\b -> s { orderStatus = Just b}) f s-{-# INLINE orderStatusT #-}+-- | 'orderStatus' Lens+orderStatusL :: Lens_' Order (Maybe Text)+orderStatusL f Order{..} = (\orderStatus -> Order { orderStatus, ..} ) <$> f orderStatus+{-# INLINE orderStatusL #-} --- | 'orderComplete' Traversal-orderCompleteT :: Traversal_' Order Bool-orderCompleteT f s = _mtraversal orderComplete (\b -> s { orderComplete = Just b}) f s-{-# INLINE orderCompleteT #-}+-- | 'orderComplete' Lens+orderCompleteL :: Lens_' Order (Maybe Bool)+orderCompleteL f Order{..} = (\orderComplete -> Order { orderComplete, ..} ) <$> f orderComplete+{-# INLINE orderCompleteL #-}    -- * Pet --- | 'petId' Traversal-petIdT :: Traversal_' Pet Integer-petIdT f s = _mtraversal petId (\b -> s { petId = Just b}) f s-{-# INLINE petIdT #-}+-- | 'petId' Lens+petIdL :: Lens_' Pet (Maybe Integer)+petIdL f Pet{..} = (\petId -> Pet { petId, ..} ) <$> f petId+{-# INLINE petIdL #-} --- | 'petCategory' Traversal-petCategoryT :: Traversal_' Pet Category-petCategoryT f s = _mtraversal petCategory (\b -> s { petCategory = Just b}) f s-{-# INLINE petCategoryT #-}+-- | 'petCategory' Lens+petCategoryL :: Lens_' Pet (Maybe Category)+petCategoryL f Pet{..} = (\petCategory -> Pet { petCategory, ..} ) <$> f petCategory+{-# INLINE petCategoryL #-}  -- | 'petName' Lens-petNameL :: Lens_' Pet Text+petNameL :: Lens_' Pet (Text) petNameL f Pet{..} = (\petName -> Pet { petName, ..} ) <$> f petName {-# INLINE petNameL #-}  -- | 'petPhotoUrls' Lens-petPhotoUrlsL :: Lens_' Pet [Text]+petPhotoUrlsL :: Lens_' Pet ([Text]) petPhotoUrlsL f Pet{..} = (\petPhotoUrls -> Pet { petPhotoUrls, ..} ) <$> f petPhotoUrls {-# INLINE petPhotoUrlsL #-} --- | 'petTags' Traversal-petTagsT :: Traversal_' Pet [Tag]-petTagsT f s = _mtraversal petTags (\b -> s { petTags = Just b}) f s-{-# INLINE petTagsT #-}+-- | 'petTags' Lens+petTagsL :: Lens_' Pet (Maybe [Tag])+petTagsL f Pet{..} = (\petTags -> Pet { petTags, ..} ) <$> f petTags+{-# INLINE petTagsL #-} --- | 'petStatus' Traversal-petStatusT :: Traversal_' Pet Text-petStatusT f s = _mtraversal petStatus (\b -> s { petStatus = Just b}) f s-{-# INLINE petStatusT #-}+-- | 'petStatus' Lens+petStatusL :: Lens_' Pet (Maybe Text)+petStatusL f Pet{..} = (\petStatus -> Pet { petStatus, ..} ) <$> f petStatus+{-# INLINE petStatusL #-}    -- * Tag --- | 'tagId' Traversal-tagIdT :: Traversal_' Tag Integer-tagIdT f s = _mtraversal tagId (\b -> s { tagId = Just b}) f s-{-# INLINE tagIdT #-}+-- | 'tagId' Lens+tagIdL :: Lens_' Tag (Maybe Integer)+tagIdL f Tag{..} = (\tagId -> Tag { tagId, ..} ) <$> f tagId+{-# INLINE tagIdL #-} --- | 'tagName' Traversal-tagNameT :: Traversal_' Tag Text-tagNameT f s = _mtraversal tagName (\b -> s { tagName = Just b}) f s-{-# INLINE tagNameT #-}+-- | 'tagName' Lens+tagNameL :: Lens_' Tag (Maybe Text)+tagNameL f Tag{..} = (\tagName -> Tag { tagName, ..} ) <$> f tagName+{-# INLINE tagNameL #-}    -- * User --- | 'userId' Traversal-userIdT :: Traversal_' User Integer-userIdT f s = _mtraversal userId (\b -> s { userId = Just b}) f s-{-# INLINE userIdT #-}---- | 'userUsername' Traversal-userUsernameT :: Traversal_' User Text-userUsernameT f s = _mtraversal userUsername (\b -> s { userUsername = Just b}) f s-{-# INLINE userUsernameT #-}---- | 'userFirstName' Traversal-userFirstNameT :: Traversal_' User Text-userFirstNameT f s = _mtraversal userFirstName (\b -> s { userFirstName = Just b}) f s-{-# INLINE userFirstNameT #-}+-- | 'userId' Lens+userIdL :: Lens_' User (Maybe Integer)+userIdL f User{..} = (\userId -> User { userId, ..} ) <$> f userId+{-# INLINE userIdL #-} --- | 'userLastName' Traversal-userLastNameT :: Traversal_' User Text-userLastNameT f s = _mtraversal userLastName (\b -> s { userLastName = Just b}) f s-{-# INLINE userLastNameT #-}+-- | 'userUsername' Lens+userUsernameL :: Lens_' User (Maybe Text)+userUsernameL f User{..} = (\userUsername -> User { userUsername, ..} ) <$> f userUsername+{-# INLINE userUsernameL #-} --- | 'userEmail' Traversal-userEmailT :: Traversal_' User Text-userEmailT f s = _mtraversal userEmail (\b -> s { userEmail = Just b}) f s-{-# INLINE userEmailT #-}+-- | 'userFirstName' Lens+userFirstNameL :: Lens_' User (Maybe Text)+userFirstNameL f User{..} = (\userFirstName -> User { userFirstName, ..} ) <$> f userFirstName+{-# INLINE userFirstNameL #-} --- | 'userPassword' Traversal-userPasswordT :: Traversal_' User Text-userPasswordT f s = _mtraversal userPassword (\b -> s { userPassword = Just b}) f s-{-# INLINE userPasswordT #-}+-- | 'userLastName' Lens+userLastNameL :: Lens_' User (Maybe Text)+userLastNameL f User{..} = (\userLastName -> User { userLastName, ..} ) <$> f userLastName+{-# INLINE userLastNameL #-} --- | 'userPhone' Traversal-userPhoneT :: Traversal_' User Text-userPhoneT f s = _mtraversal userPhone (\b -> s { userPhone = Just b}) f s-{-# INLINE userPhoneT #-}+-- | 'userEmail' Lens+userEmailL :: Lens_' User (Maybe Text)+userEmailL f User{..} = (\userEmail -> User { userEmail, ..} ) <$> f userEmail+{-# INLINE userEmailL #-} --- | 'userUserStatus' Traversal-userUserStatusT :: Traversal_' User Int-userUserStatusT f s = _mtraversal userUserStatus (\b -> s { userUserStatus = Just b}) f s-{-# INLINE userUserStatusT #-}+-- | 'userPassword' Lens+userPasswordL :: Lens_' User (Maybe Text)+userPasswordL f User{..} = (\userPassword -> User { userPassword, ..} ) <$> f userPassword+{-# INLINE userPasswordL #-} +-- | 'userPhone' Lens+userPhoneL :: Lens_' User (Maybe Text)+userPhoneL f User{..} = (\userPhone -> User { userPhone, ..} ) <$> f userPhone+{-# INLINE userPhoneL #-} +-- | 'userUserStatus' Lens+userUserStatusL :: Lens_' User (Maybe Int)+userUserStatusL f User{..} = (\userUserStatus -> User { userUserStatus, ..} ) <$> f userUserStatus+{-# INLINE userUserStatusL #-}  --- * Helpers--_mtraversal :: Applicative f => (b -> Maybe t) -> (a -> b) -> (t -> f a) -> b -> f b-_mtraversal x fsb f s = maybe (pure s) (\a -> fsb <$> f a) (x s)-{-# INLINE _mtraversal #-}
lib/SwaggerPetstore/Model.hs view
@@ -2,7 +2,6 @@ Module : SwaggerPetstore.Model -} -{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveGeneric #-}@@ -53,9 +52,9 @@ --  -- Describes the result of uploading an image resource data ApiResponse = ApiResponse-  { apiResponseCode :: Maybe Int -- ^ "code"-  , apiResponseType :: Maybe Text -- ^ "type"-  , apiResponseMessage :: Maybe Text -- ^ "message"+  { apiResponseCode :: !(Maybe Int) -- ^ "code"+  , apiResponseType :: !(Maybe Text) -- ^ "type"+  , apiResponseMessage :: !(Maybe Text) -- ^ "message"   } deriving (P.Show,P.Eq,P.Typeable)  instance A.FromJSON ApiResponse where@@ -92,8 +91,8 @@ --  -- A category for a pet data Category = Category-  { categoryId :: Maybe Integer -- ^ "id"-  , categoryName :: Maybe Text -- ^ "name"+  { categoryId :: !(Maybe Integer) -- ^ "id"+  , categoryName :: !(Maybe Text) -- ^ "name"   } deriving (P.Show,P.Eq,P.Typeable)  instance A.FromJSON Category where@@ -127,12 +126,12 @@ --  -- An order for a pets from the pet store data Order = Order-  { orderId :: Maybe Integer -- ^ "id"-  , orderPetId :: Maybe Integer -- ^ "petId"-  , orderQuantity :: Maybe Int -- ^ "quantity"-  , orderShipDate :: Maybe UTCTime -- ^ "shipDate"-  , orderStatus :: Maybe Text -- ^ "status" - Order Status-  , orderComplete :: Maybe Bool -- ^ "complete"+  { orderId :: !(Maybe Integer) -- ^ "id"+  , orderPetId :: !(Maybe Integer) -- ^ "petId"+  , orderQuantity :: !(Maybe Int) -- ^ "quantity"+  , orderShipDate :: !(Maybe UTCTime) -- ^ "shipDate"+  , orderStatus :: !(Maybe Text) -- ^ "status" - Order Status+  , orderComplete :: !(Maybe Bool) -- ^ "complete"   } deriving (P.Show,P.Eq,P.Typeable)  instance A.FromJSON Order where@@ -178,12 +177,12 @@ --  -- A pet for sale in the pet store data Pet = Pet-  { petId :: Maybe Integer -- ^ "id"-  , petCategory :: Maybe Category -- ^ "category"-  , petName :: Text -- ^ /Required/ "name"-  , petPhotoUrls :: [Text] -- ^ /Required/ "photoUrls"-  , petTags :: Maybe [Tag] -- ^ "tags"-  , petStatus :: Maybe Text -- ^ "status" - pet status in the store+  { petId :: !(Maybe Integer) -- ^ "id"+  , petCategory :: !(Maybe Category) -- ^ "category"+  , petName :: !(Text) -- ^ /Required/ "name"+  , petPhotoUrls :: !([Text]) -- ^ /Required/ "photoUrls"+  , petTags :: !(Maybe [Tag]) -- ^ "tags"+  , petStatus :: !(Maybe Text) -- ^ "status" - pet status in the store   } deriving (P.Show,P.Eq,P.Typeable)  instance A.FromJSON Pet where@@ -231,8 +230,8 @@ --  -- A tag for a pet data Tag = Tag-  { tagId :: Maybe Integer -- ^ "id"-  , tagName :: Maybe Text -- ^ "name"+  { tagId :: !(Maybe Integer) -- ^ "id"+  , tagName :: !(Maybe Text) -- ^ "name"   } deriving (P.Show,P.Eq,P.Typeable)  instance A.FromJSON Tag where@@ -266,14 +265,14 @@ --  -- A User who is purchasing from the pet store data User = User-  { userId :: Maybe Integer -- ^ "id"-  , userUsername :: Maybe Text -- ^ "username"-  , userFirstName :: Maybe Text -- ^ "firstName"-  , userLastName :: Maybe Text -- ^ "lastName"-  , userEmail :: Maybe Text -- ^ "email"-  , userPassword :: Maybe Text -- ^ "password"-  , userPhone :: Maybe Text -- ^ "phone"-  , userUserStatus :: Maybe Int -- ^ "userStatus" - User Status+  { userId :: !(Maybe Integer) -- ^ "id"+  , userUsername :: !(Maybe Text) -- ^ "username"+  , userFirstName :: !(Maybe Text) -- ^ "firstName"+  , userLastName :: !(Maybe Text) -- ^ "lastName"+  , userEmail :: !(Maybe Text) -- ^ "email"+  , userPassword :: !(Maybe Text) -- ^ "password"+  , userPhone :: !(Maybe Text) -- ^ "phone"+  , userUserStatus :: !(Maybe Int) -- ^ "userStatus" - User Status   } deriving (P.Show,P.Eq,P.Typeable)  instance A.FromJSON User where@@ -365,14 +364,14 @@  -- * Date Formatting --- | @TI.parseTimeM True TI.defaultTimeLocale ""@+-- | @TI.parseTimeM True TI.defaultTimeLocale "%Y-%m-%d"@ _readDate :: (TI.ParseTime t, Monad m) => String -> m t _readDate =-  TI.parseTimeM True TI.defaultTimeLocale ""+  TI.parseTimeM True TI.defaultTimeLocale "%Y-%m-%d" {-# INLINE _readDate #-} --- | @TI.formatTime TI.defaultTimeLocale ""@+-- | @TI.formatTime TI.defaultTimeLocale "%Y-%m-%d"@ _showDate :: TI.FormatTime t => t -> String _showDate =-  TI.formatTime TI.defaultTimeLocale ""+  TI.formatTime TI.defaultTimeLocale "%Y-%m-%d" {-# INLINE _showDate #-}
swagger-petstore.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack  name:           swagger-petstore-version:        0.0.1.0+version:        0.0.1.1 synopsis:       Auto-generated swagger-petstore API Client description:    .                 Client library for calling the swagger-petstore API based on http-client.@@ -33,7 +33,7 @@ library   hs-source-dirs:       lib-  ghc-options: -Wall+  ghc-options: -Wall -funbox-strict-fields   build-depends:       base >=4.7 && <5.0     , transformers >=0.4.0.0@@ -57,6 +57,7 @@     , monad-logger >=0.3 && <0.4     , safe-exceptions <0.2     , case-insensitive+    , microlens >= 0.4.3 && <0.5   exposed-modules:       SwaggerPetstore       SwaggerPetstore.API@@ -73,7 +74,7 @@   main-is: Test.hs   hs-source-dirs:       tests-  ghc-options: -fno-warn-orphans+  ghc-options: -Wall -fno-warn-orphans   build-depends:       base >=4.7 && <5.0     , transformers >=0.4.0.0
tests/Instances.hs view
@@ -1,3 +1,5 @@+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+ module Instances where  import Data.Text (Text, pack)
tests/PropMime.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ConstraintKinds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}  module PropMime where