2{-# LANGUAGE FlexibleContexts #-}
3{-# LANGUAGE FlexibleInstances #-}
4{-# LANGUAGE FunctionalDependencies #-}
6{-# LANGUAGE MultiParamTypeClasses #-}
7{-# LANGUAGE RankNTypes #-}
8{-# LANGUAGE TemplateHaskell #-}
9{-# LANGUAGE TypeFamilies #-}
10{-# LANGUAGE DataKinds #-}
11{-# LANGUAGE UndecidableInstances #-}
12{-# OPTIONS_GHC -fno-warn-orphans #-}
13#include "overlapping-compat.h"
15-- Module: Data.Swagger.Lens
16-- Maintainer: Nickolay Kudasov <nickolay@getshoptv.com>
17-- Stability: experimental
19-- Lenses and prisms for Swagger.
20module Data.Swagger.Lens where
23import Data.Aeson (Value)
24import Data.Scientific (Scientific)
25import Data.Swagger.Internal
26import Data.Swagger.Internal.Utils
27import Data.Text (Text)
36makeLensesWith swaggerFieldRules ''PathItem
40makeLensesWith swaggerFieldRules ''ParamOtherSchema
43makeFields ''NamedSchema
44makeLensesWith swaggerFieldRules ''ParamSchema
46makeLensesWith swaggerFieldRules ''Responses
48makeLensesWith swaggerFieldRules ''SecurityScheme
49makeFields ''ApiKeyParams
50makeFields ''OAuth2Params
51makeFields ''ExternalDocs
54-- ** 'ParamAnySchema' prisms
55makePrisms ''ParamAnySchema
56-- ** 'SecuritySchemeType' prisms
57makePrisms ''SecuritySchemeType
58-- ** 'Referenced' prisms
59makePrisms ''Referenced
61-- ** 'SwaggerItems' prisms
63_SwaggerItemsArray :: Review (SwaggerItems 'SwaggerKindSchema) [Referenced Schema]
65 = unto (\x -> SwaggerItemsArray x)
67 SwaggerItemsPrimitive c p -> Left (SwaggerItemsPrimitive c p)
68 SwaggerItemsObject o -> Left (SwaggerItemsObject o)
69 SwaggerItemsArray a -> Right a
72_SwaggerItemsObject :: Review (SwaggerItems 'SwaggerKindSchema) (Referenced Schema)
74 = unto (\x -> SwaggerItemsObject x)
76 SwaggerItemsPrimitive c p -> Left (SwaggerItemsPrimitive c p)
77 SwaggerItemsObject o -> Right o
78 SwaggerItemsArray a -> Left (SwaggerItemsArray a)
81_SwaggerItemsPrimitive :: forall t p f. (Profunctor p, Bifunctor p, Functor f) => Optic' p f (SwaggerItems t) (Maybe (CollectionFormat t), ParamSchema t)
82_SwaggerItemsPrimitive = unto (\(c, p) -> SwaggerItemsPrimitive c p)
84-- =============================================================
85-- More helpful instances for easier access to schema properties
87type instance Index Responses = HttpStatusCode
88type instance Index Operation = HttpStatusCode
90type instance IxValue Responses = Referenced Response
91type instance IxValue Operation = Referenced Response
93instance Ixed Responses where ix n = responses . ix n
94instance At Responses where at n = responses . at n
96instance Ixed Operation where ix n = responses . ix n
97instance At Operation where at n = responses . at n
99instance HasParamSchema NamedSchema (ParamSchema 'SwaggerKindSchema) where paramSchema = schema.paramSchema
102instance HasType Header (SwaggerType ('SwaggerKindNormal Header)) where type_ = paramSchema.type_
103instance HasType Schema (SwaggerType 'SwaggerKindSchema) where type_ = paramSchema.type_
104instance HasType NamedSchema (SwaggerType 'SwaggerKindSchema) where type_ = paramSchema.type_
105instance HasType ParamOtherSchema (SwaggerType 'SwaggerKindParamOtherSchema) where type_ = paramSchema.type_
107-- HasDefault instances
108instance HasDefault Header (Maybe Value) where default_ = paramSchema.default_
109instance HasDefault Schema (Maybe Value) where default_ = paramSchema.default_
110instance HasDefault ParamOtherSchema (Maybe Value) where default_ = paramSchema.default_
112-- OVERLAPPABLE instances
115#if __GLASGOW_HASKELL__ >= 710
118 HasParamSchema s (ParamSchema t)
119 => HasFormat s (Maybe Format) where
120 format = paramSchema.format
123#if __GLASGOW_HASKELL__ >= 710
126 HasParamSchema s (ParamSchema t)
127 => HasItems s (Maybe (SwaggerItems t)) where
128 items = paramSchema.items
131#if __GLASGOW_HASKELL__ >= 710
134 HasParamSchema s (ParamSchema t)
135 => HasMaximum s (Maybe Scientific) where
136 maximum_ = paramSchema.maximum_
138instance OVERLAPPABLE_ HasParamSchema s (ParamSchema t)
139 => HasExclusiveMaximum s (Maybe Bool) where
140 exclusiveMaximum = paramSchema.exclusiveMaximum
142instance OVERLAPPABLE_ HasParamSchema s (ParamSchema t)
143 => HasMinimum s (Maybe Scientific) where
144 minimum_ = paramSchema.minimum_
146instance OVERLAPPABLE_ HasParamSchema s (ParamSchema t)
147 => HasExclusiveMinimum s (Maybe Bool) where
148 exclusiveMinimum = paramSchema.exclusiveMinimum
150instance OVERLAPPABLE_ HasParamSchema s (ParamSchema t)
151 => HasMaxLength s (Maybe Integer) where
152 maxLength = paramSchema.maxLength
154instance OVERLAPPABLE_ HasParamSchema s (ParamSchema t)
155 => HasMinLength s (Maybe Integer) where
156 minLength = paramSchema.minLength
158instance OVERLAPPABLE_ HasParamSchema s (ParamSchema t)
159 => HasPattern s (Maybe Text) where
160 pattern = paramSchema.pattern
162instance OVERLAPPABLE_ HasParamSchema s (ParamSchema t)
163 => HasMaxItems s (Maybe Integer) where
164 maxItems = paramSchema.maxItems
166instance OVERLAPPABLE_ HasParamSchema s (ParamSchema t)
167 => HasMinItems s (Maybe Integer) where
168 minItems = paramSchema.minItems
170instance OVERLAPPABLE_ HasParamSchema s (ParamSchema t)
171 => HasUniqueItems s (Maybe Bool) where
172 uniqueItems = paramSchema.uniqueItems
174instance OVERLAPPABLE_ HasParamSchema s (ParamSchema t)
175 => HasEnum s (Maybe [Value]) where
176 enum_ = paramSchema.enum_
178instance OVERLAPPABLE_ HasParamSchema s (ParamSchema t)
179 => HasMultipleOf s (Maybe Scientific) where
180 multipleOf = paramSchema.multipleOf
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list