packages feed

swagger2 2.1 → 2.1.1

raw patch · 4 files changed

+23/−9 lines, 4 files

Files

CHANGELOG.md view
@@ -1,3 +1,9 @@+2.1.1+---++* Minor changes:+  * Proper `Schema` examples for `Char`, `Day`, `LocalTime`, `ZonedTime` and `UTCTime`.+ 2.1 --- 
src/Data/Swagger/Internal/Schema.hs view
@@ -58,6 +58,7 @@ import Data.Swagger.Internal import Data.Swagger.Internal.ParamSchema (ToParamSchema(..)) import Data.Swagger.Lens hiding (name, schema)+import qualified Data.Swagger.Lens as Swagger import Data.Swagger.SchemaOptions  #ifdef __DOCTEST__@@ -144,7 +145,7 @@ -- >>> toNamedSchema (Proxy :: Proxy Day) ^. name -- Just "Day" -- >>> encode (toNamedSchema (Proxy :: Proxy Day) ^. schema)--- "{\"format\":\"date\",\"type\":\"string\"}"+-- "{\"example\":\"2016-07-22\",\"format\":\"date\",\"type\":\"string\"}" toNamedSchema :: ToSchema a => proxy a -> NamedSchema toNamedSchema = undeclare . declareNamedSchema @@ -244,7 +245,7 @@ -- | Convert a type into a schema without references. -- -- >>> encode $ toInlinedSchema (Proxy :: Proxy [Day])--- "{\"items\":{\"format\":\"date\",\"type\":\"string\"},\"type\":\"array\"}"+-- "{\"items\":{\"example\":\"2016-07-22\",\"format\":\"date\",\"type\":\"string\"},\"type\":\"array\"}" -- -- __WARNING:__ @'toInlinedSchema'@ will produce infinite schema -- when inlining recursive schemas.@@ -416,7 +417,10 @@ instance ToSchema Word32  where declareNamedSchema = plain . paramSchemaToSchema instance ToSchema Word64  where declareNamedSchema = plain . paramSchemaToSchema -instance ToSchema Char        where declareNamedSchema = plain . paramSchemaToSchema+instance ToSchema Char where+  declareNamedSchema proxy = plain (paramSchemaToSchema proxy)+    & mapped.Swagger.schema.example ?~ toJSON '?'+ instance ToSchema Scientific  where declareNamedSchema = plain . paramSchemaToSchema instance ToSchema Double      where declareNamedSchema = plain . paramSchemaToSchema instance ToSchema Float       where declareNamedSchema = plain . paramSchemaToSchema@@ -443,17 +447,20 @@  -- | Format @"date"@ corresponds to @yyyy-mm-dd@ format. instance ToSchema Day where-  declareNamedSchema _ = pure $ named "Day" (timeSchema "date")+  declareNamedSchema _ = pure $ named "Day" $ timeSchema "date"+    & example ?~ toJSON (fromGregorian 2016 7 22)  -- | -- >>> toSchema (Proxy :: Proxy LocalTime) ^. format -- Just "yyyy-mm-ddThh:MM:ss" instance ToSchema LocalTime where-  declareNamedSchema _ = pure $ named "LocalTime" (timeSchema "yyyy-mm-ddThh:MM:ss")+  declareNamedSchema _ = pure $ named "LocalTime" $ timeSchema "yyyy-mm-ddThh:MM:ss"+    & example ?~ toJSON (LocalTime (fromGregorian 2016 7 22) (TimeOfDay 7 40 0))  -- | Format @"date"@ corresponds to @yyyy-mm-ddThh:MM:ss(Z|+hh:MM)@ format. instance ToSchema ZonedTime where   declareNamedSchema _ = pure $ named "ZonedTime" $ timeSchema "date-time"+    & example ?~ toJSON (ZonedTime (LocalTime (fromGregorian 2016 7 22) (TimeOfDay 7 40 0)) (hoursToTimeZone 3))  instance ToSchema NominalDiffTime where   declareNamedSchema _ = declareNamedSchema (Proxy :: Proxy Integer)@@ -462,7 +469,8 @@ -- >>> toSchema (Proxy :: Proxy UTCTime) ^. format -- Just "yyyy-mm-ddThh:MM:ssZ" instance ToSchema UTCTime where-  declareNamedSchema _ = pure $ named "UTCTime" (timeSchema "yyyy-mm-ddThh:MM:ssZ")+  declareNamedSchema _ = pure $ named "UTCTime" $ timeSchema "yyyy-mm-ddThh:MM:ssZ"+    & example ?~ toJSON (UTCTime (fromGregorian 2016 7 22) 0)  instance ToSchema T.Text where declareNamedSchema = plain . paramSchemaToSchema instance ToSchema TL.Text where declareNamedSchema = plain . paramSchemaToSchema
src/Data/Swagger/Operation.hs view
@@ -120,7 +120,7 @@ -- necessary schema definitions. -- -- >>> encode $ runDeclare (declareResponse (Proxy :: Proxy Day)) mempty--- "[{\"Day\":{\"format\":\"date\",\"type\":\"string\"}},{\"description\":\"\",\"schema\":{\"$ref\":\"#/definitions/Day\"}}]"+-- "[{\"Day\":{\"example\":\"2016-07-22\",\"format\":\"date\",\"type\":\"string\"}},{\"description\":\"\",\"schema\":{\"$ref\":\"#/definitions/Day\"}}]" declareResponse :: ToSchema a => proxy a -> Declare (Definitions Schema) Response declareResponse proxy = do   s <- declareSchemaRef proxy@@ -140,7 +140,7 @@ -- >>> let api = (mempty :: Swagger) & paths .~ [("/user", mempty & get ?~ mempty)] -- >>> let res = declareResponse (Proxy :: Proxy Day) -- >>> encode $ api & setResponse 200 res--- "{\"swagger\":\"2.0\",\"info\":{\"version\":\"\",\"title\":\"\"},\"paths\":{\"/user\":{\"get\":{\"responses\":{\"200\":{\"schema\":{\"$ref\":\"#/definitions/Day\"},\"description\":\"\"}}}}},\"definitions\":{\"Day\":{\"format\":\"date\",\"type\":\"string\"}}}"+-- "{\"swagger\":\"2.0\",\"info\":{\"version\":\"\",\"title\":\"\"},\"paths\":{\"/user\":{\"get\":{\"responses\":{\"200\":{\"schema\":{\"$ref\":\"#/definitions/Day\"},\"description\":\"\"}}}}},\"definitions\":{\"Day\":{\"example\":\"2016-07-22\",\"format\":\"date\",\"type\":\"string\"}}}" -- -- See also @'setResponseWith'@. setResponse :: HttpStatusCode -> Declare (Definitions Schema) Response -> Swagger -> Swagger
swagger2.cabal view
@@ -1,5 +1,5 @@ name:                swagger2-version:             2.1+version:             2.1.1 synopsis:            Swagger 2.0 data model description:         Please see README.md homepage:            https://github.com/GetShopTV/swagger2