git.iko.soy/typeable/openapi3
on master help sign in
Add newtype wrappers for some HashMaps
commit0267740c823615acedc24f458547703baec04709 authorNickolay Kudasov <nickolay.kudasov@gmail.com> dateSat 7 Nov 2015, 14:42 (11 years ago) parente341090
1 file changed+19−7
src/Data/Swagger/Internal.hs+19−7
src/Data/Swagger/Internal.hs+19−7
@@ -1,16 +1,23 @@
11{-# LANGUAGE DeriveGeneric #-}
2+{-# LANGUAGE DeriveTraversable #-}
23{-# LANGUAGE GeneralizedNewtypeDeriving #-}
4+{-# LANGUAGE OverloadedStrings #-}
5+{-# LANGUAGE TemplateHaskell #-}
36module Data.Swagger.Internal where
47
58import Data.Aeson (ToJSON, FromJSON)
69import qualified Data.Aeson as JSON
10+import Data.Foldable (Foldable)
711import Data.HashMap.Strict (HashMap)
812import Data.Text (Text)
13+import Data.Traversable (Traversable)
914import Data.Hashable (Hashable)
1015import GHC.Generics (Generic)
1116import Network (HostName, PortNumber)
1217import Network.HTTP.Media (MediaType)
1318
19+import Data.Swagger.Internal.Utils
20+
1421-- | This is the root document object for the API specification.
1522data Swagger = Swagger
1623 { -- | Provides metadata about the API.
@@ -42,18 +49,18 @@ data Swagger = Swagger
4249 , swaggerPaths :: SwaggerPaths
4350
4451 -- | An object to hold data types produced and consumed by operations.
45− , swaggerDefinitions :: HashMap Text SwaggerSchema
52+ , swaggerDefinitions :: Definitions SwaggerSchema
4653
4754 -- | An object to hold parameters that can be used across operations.
4855 -- This property does not define global parameters for all operations.
49− , swaggerParameters :: HashMap Text SwaggerParameter
56+ , swaggerParameters :: Definitions SwaggerParameter
5057
5158 -- | An object to hold responses that can be used across operations.
5259 -- This property does not define global responses for all operations.
53− , swaggerResponses :: HashMap Text SwaggerResponse
60+ , swaggerResponses :: Definitions SwaggerResponse
5461
5562 -- | Security scheme definitions that can be used across the specification.
56− , swaggerSecurityDefinitions :: HashMap Text SwaggerSecurityScheme
63+ , swaggerSecurityDefinitions :: Definitions SwaggerSecurityScheme
5764
5865 -- | A declaration of which security schemes are applied for the API as a whole.
5966 -- The list of values describes alternative security schemes that can be used
@@ -386,7 +393,7 @@ data SwaggerSchema = SwaggerSchema
386393
387394 , swaggerSchemaItems :: SwaggerSchemaItems
388395 , swaggerSchemaAllOf :: [SwaggerSchema]
389− , swaggerSchemaProperties :: HashMap Text SwaggerSchema
396+ , swaggerSchemaProperties :: Definitions SwaggerSchema
390397 , swaggerSchemaAdditionalProperties :: Maybe SwaggerSchema
391398
392399 , swaggerSchemaDiscriminator :: Maybe Text
@@ -582,7 +589,7 @@ data SwaggerSecuritySchemeTypeName
582589 = SwaggerSecuritySchemeTypeBasic
583590 | SwaggerSecuritySchemeTypeApiKey
584591 | SwaggerSecuritySchemeTypeOAuth2
585− deriving (Show, Generic)
592+ deriving (Eq, Read, Show, Generic)
586593
587594instance Hashable SwaggerSecuritySchemeTypeName
588595
@@ -597,7 +604,9 @@ data SwaggerSecurityScheme = SwaggerSecurityScheme
597604-- | Lists the required security schemes to execute this operation.
598605-- The object can have multiple security schemes declared in it which are all required
599606-- (that is, there is a logical AND between the schemes).
600−type SwaggerSecurityRequirement = HashMap SwaggerSecuritySchemeTypeName Text
607+newtype SwaggerSecurityRequirement = SwaggerSecurityRequirement
608+ { getSwaggerSecurityRequirement :: HashMap SwaggerSecuritySchemeTypeName Text
609+ } deriving (Eq, Read, Show, Monoid)
601610
602611-- | Allows adding meta data to a single tag that is used by @SwaggerOperation@.
603612-- It is not mandatory to have a @SwaggerTag@ per tag used there.
@@ -625,3 +634,6 @@ data SwaggerExternalDocs = SwaggerExternalDocs
625634
626635newtype URL = URL { getUrl :: Text } deriving (Show, ToJSON, FromJSON)
627636
637+newtype Definitions v = Definitions { getDefinitions :: HashMap Text v }
638+ deriving (Eq, Read, Show, Monoid, Functor, Foldable, Traversable)
639+