Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
haskell-gargantext
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
154
Issues
154
List
Board
Labels
Milestones
Merge Requests
7
Merge Requests
7
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gargantext
haskell-gargantext
Commits
07b7a6b7
Commit
07b7a6b7
authored
5 months ago
by
Alfredo Di Napoli
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Accumulate declarations in OpenAPI.ToSchema compat shim
parent
dd7cc219
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
204 additions
and
72 deletions
+204
-72
OpenAPI.hs
src/Gargantext/Orphans/OpenAPI.hs
+204
-72
No files found.
src/Gargantext/Orphans/OpenAPI.hs
View file @
07b7a6b7
...
@@ -3,16 +3,20 @@
...
@@ -3,16 +3,20 @@
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE LambdaCase #-}
module
Gargantext.Orphans.OpenAPI
where
module
Gargantext.Orphans.OpenAPI
where
import
Control.Lens
import
Control.Lens
import
Data.Typeable
import
Data.HashMap.Strict.InsOrd
qualified
as
HM
import
Data.HashMap.Strict.InsOrd
qualified
as
HM
import
Data.OpenApi
as
OpenAPI
hiding
(
Header
,
Server
)
import
Data.OpenApi
as
OpenAPI
hiding
(
Header
,
Server
)
import
Data.OpenApi.Declare
import
Data.Swagger.Internal
qualified
as
Swagger
import
Data.Swagger
qualified
as
Swagger
import
Data.Swagger
qualified
as
Swagger
import
Data.Swagger.Internal.Schema
qualified
as
Swagger
import
Data.Text
qualified
as
T
import
Data.Text
qualified
as
T
import
Data.Typeable
import
Prelude
import
Prelude
import
qualified
Data.Swagger.Declare
as
SwaggerDeclare
import
Servant.API
import
Servant.API
import
Servant.Auth
import
Servant.Auth
import
Servant.OpenApi
import
Servant.OpenApi
...
@@ -72,13 +76,141 @@ addSecurityRequirement securityRequirement =
...
@@ -72,13 +76,141 @@ addSecurityRequirement securityRequirement =
.
security
.
security
%~
((
SecurityRequirement
$
HM
.
singleton
securityRequirement
[]
)
:
)
%~
((
SecurityRequirement
$
HM
.
singleton
securityRequirement
[]
)
:
)
fromParamSchema
::
Swagger
.
ParamSchema
t
->
Schema
-- Working with the compat shim a bit more pleasant
class
SwaggerConvertible
a
b
where
swagConv
::
Iso'
a
b
--
-- Instances
--
instance
SwaggerConvertible
OpenAPI
.
Discriminator
T
.
Text
where
swagConv
=
iso
OpenAPI
.
_discriminatorPropertyName
convertDiscriminator
where
convertDiscriminator
::
T
.
Text
->
OpenAPI
.
Discriminator
convertDiscriminator
t
=
OpenAPI
.
Discriminator
t
mempty
instance
SwaggerConvertible
OpenAPI
.
OpenApiType
(
Swagger
.
SwaggerType
'S
w
agger
.
SwaggerKindSchema
)
where
swagConv
=
iso
fromOpenAPI
toOpenAPI
where
toOpenAPI
::
Swagger
.
SwaggerType
t
->
OpenAPI
.
OpenApiType
toOpenAPI
Swagger
.
SwaggerString
=
OpenAPI
.
OpenApiString
toOpenAPI
Swagger
.
SwaggerNumber
=
OpenAPI
.
OpenApiNumber
toOpenAPI
Swagger
.
SwaggerInteger
=
OpenAPI
.
OpenApiInteger
toOpenAPI
Swagger
.
SwaggerBoolean
=
OpenAPI
.
OpenApiBoolean
toOpenAPI
Swagger
.
SwaggerArray
=
OpenAPI
.
OpenApiArray
toOpenAPI
Swagger
.
SwaggerFile
=
OpenAPI
.
OpenApiString
-- OpenAPI lacks file type, fallback to string
toOpenAPI
Swagger
.
SwaggerNull
=
OpenAPI
.
OpenApiNull
toOpenAPI
Swagger
.
SwaggerObject
=
OpenAPI
.
OpenApiObject
fromOpenAPI
OpenAPI
.
OpenApiString
=
Swagger
.
SwaggerString
fromOpenAPI
OpenAPI
.
OpenApiNumber
=
Swagger
.
SwaggerNumber
fromOpenAPI
OpenAPI
.
OpenApiInteger
=
Swagger
.
SwaggerInteger
fromOpenAPI
OpenAPI
.
OpenApiBoolean
=
Swagger
.
SwaggerBoolean
fromOpenAPI
OpenAPI
.
OpenApiArray
=
Swagger
.
SwaggerArray
fromOpenAPI
OpenAPI
.
OpenApiNull
=
Swagger
.
SwaggerNull
fromOpenAPI
OpenAPI
.
OpenApiObject
=
Swagger
.
SwaggerObject
instance
SwaggerConvertible
OpenAPI
.
Xml
(
Swagger
.
Xml
)
where
swagConv
=
iso
fromOpenAPI
toOpenAPI
where
fromOpenAPI
::
Xml
->
Swagger
.
Xml
fromOpenAPI
OpenAPI
.
Xml
{
OpenAPI
.
_xmlName
=
xname
,
OpenAPI
.
_xmlNamespace
=
xnamespace
,
OpenAPI
.
_xmlPrefix
=
xprefix
,
OpenAPI
.
_xmlAttribute
=
xattribute
,
OpenAPI
.
_xmlWrapped
=
xwrapped
}
=
Swagger
.
Xml
{
Swagger
.
_xmlName
=
xname
,
Swagger
.
_xmlNamespace
=
xnamespace
,
Swagger
.
_xmlPrefix
=
xprefix
,
Swagger
.
_xmlAttribute
=
xattribute
,
Swagger
.
_xmlWrapped
=
xwrapped
}
toOpenAPI
::
Swagger
.
Xml
->
Xml
toOpenAPI
Swagger
.
Xml
{
Swagger
.
_xmlName
=
xname
,
Swagger
.
_xmlNamespace
=
xnamespace
,
Swagger
.
_xmlPrefix
=
xprefix
,
Swagger
.
_xmlAttribute
=
xattribute
,
Swagger
.
_xmlWrapped
=
xwrapped
}
=
OpenAPI
.
Xml
{
OpenAPI
.
_xmlName
=
xname
,
OpenAPI
.
_xmlNamespace
=
xnamespace
,
OpenAPI
.
_xmlPrefix
=
xprefix
,
OpenAPI
.
_xmlAttribute
=
xattribute
,
OpenAPI
.
_xmlWrapped
=
xwrapped
}
instance
SwaggerConvertible
OpenAPI
.
URL
(
Swagger
.
URL
)
where
swagConv
=
iso
fromOpenAPI
toOpenAPI
where
fromOpenAPI
::
URL
->
Swagger
.
URL
fromOpenAPI
(
URL
u
)
=
Swagger
.
URL
u
toOpenAPI
::
Swagger
.
URL
->
URL
toOpenAPI
=
OpenAPI
.
URL
.
Swagger
.
getUrl
instance
SwaggerConvertible
ExternalDocs
Swagger
.
ExternalDocs
where
swagConv
=
iso
fromOpenAPI
toOpenAPI
where
toOpenAPI
::
Swagger
.
ExternalDocs
->
ExternalDocs
toOpenAPI
Swagger
.
ExternalDocs
{
Swagger
.
_externalDocsDescription
=
desc
,
Swagger
.
_externalDocsUrl
=
docurl
}
=
OpenAPI
.
ExternalDocs
{
OpenAPI
.
_externalDocsDescription
=
desc
,
OpenAPI
.
_externalDocsUrl
=
view
(
from
swagConv
)
$
docurl
}
fromOpenAPI
::
ExternalDocs
->
Swagger
.
ExternalDocs
fromOpenAPI
OpenAPI
.
ExternalDocs
{
OpenAPI
.
_externalDocsDescription
=
desc
,
OpenAPI
.
_externalDocsUrl
=
docurl
}
=
Swagger
.
ExternalDocs
{
Swagger
.
_externalDocsDescription
=
desc
,
Swagger
.
_externalDocsUrl
=
view
swagConv
docurl
}
instance
SwaggerConvertible
a
b
=>
SwaggerConvertible
(
Referenced
a
)
(
Swagger
.
Referenced
b
)
where
swagConv
=
iso
fromOpenAPI
toOpenAPI
where
fromOpenAPI
::
Referenced
a
->
Swagger
.
Referenced
b
fromOpenAPI
(
OpenAPI
.
Ref
(
OpenAPI
.
Reference
ref
))
=
Swagger
.
Ref
(
Swagger
.
Reference
ref
)
fromOpenAPI
(
OpenAPI
.
Inline
s
)
=
Swagger
.
Inline
(
view
swagConv
s
)
toOpenAPI
::
Swagger
.
Referenced
b
->
OpenAPI
.
Referenced
a
toOpenAPI
(
Swagger
.
Ref
ref
)
=
OpenAPI
.
Ref
$
OpenAPI
.
Reference
(
Swagger
.
getReference
ref
)
toOpenAPI
(
Swagger
.
Inline
s
)
=
OpenAPI
.
Inline
$
view
(
from
swagConv
)
s
instance
SwaggerConvertible
Schema
Swagger
.
Schema
where
swagConv
=
iso
toSwaggerSchema
fromSwaggerSchema
instance
SwaggerConvertible
AdditionalProperties
Swagger
.
AdditionalProperties
where
swagConv
=
iso
fromOpenAPI
toOpenAPI
where
fromOpenAPI
::
AdditionalProperties
->
Swagger
.
AdditionalProperties
fromOpenAPI
(
OpenAPI
.
AdditionalPropertiesAllowed
allowed
)
=
Swagger
.
AdditionalPropertiesAllowed
allowed
fromOpenAPI
(
OpenAPI
.
AdditionalPropertiesSchema
ref
)
=
Swagger
.
AdditionalPropertiesSchema
(
view
swagConv
ref
)
toOpenAPI
::
Swagger
.
AdditionalProperties
->
AdditionalProperties
toOpenAPI
(
Swagger
.
AdditionalPropertiesAllowed
allowed
)
=
OpenAPI
.
AdditionalPropertiesAllowed
allowed
toOpenAPI
(
Swagger
.
AdditionalPropertiesSchema
ref
)
=
OpenAPI
.
AdditionalPropertiesSchema
(
view
(
from
swagConv
)
ref
)
--
-- Putting everything together
--
fromParamSchema
::
Swagger
.
ParamSchema
'S
w
agger
.
SwaggerKindSchema
->
Schema
fromParamSchema
ps
=
OpenAPI
.
Schema
fromParamSchema
ps
=
OpenAPI
.
Schema
{
OpenAPI
.
_schemaTitle
=
Nothing
{
OpenAPI
.
_schemaTitle
=
Nothing
,
OpenAPI
.
_schemaDescription
=
Nothing
,
OpenAPI
.
_schemaDescription
=
Nothing
,
OpenAPI
.
_schemaDefault
=
view
Swagger
.
default_
ps
,
OpenAPI
.
_schemaDefault
=
view
Swagger
.
default_
ps
,
OpenAPI
.
_schemaExample
=
Nothing
,
OpenAPI
.
_schemaExample
=
Nothing
,
OpenAPI
.
_schemaType
=
convertType
<$>
view
Swagger
.
type_
ps
,
OpenAPI
.
_schemaType
=
view
(
from
swagConv
)
<$>
view
Swagger
.
type_
ps
,
OpenAPI
.
_schemaFormat
=
view
Swagger
.
format
ps
,
OpenAPI
.
_schemaFormat
=
view
Swagger
.
format
ps
,
OpenAPI
.
_schemaNullable
=
Nothing
,
OpenAPI
.
_schemaNullable
=
Nothing
,
OpenAPI
.
_schemaEnum
=
view
Swagger
.
enum_
ps
,
OpenAPI
.
_schemaEnum
=
view
Swagger
.
enum_
ps
...
@@ -111,61 +243,19 @@ fromParamSchema ps = OpenAPI.Schema
...
@@ -111,61 +243,19 @@ fromParamSchema ps = OpenAPI.Schema
,
OpenAPI
.
_schemaMultipleOf
=
view
Swagger
.
multipleOf
ps
,
OpenAPI
.
_schemaMultipleOf
=
view
Swagger
.
multipleOf
ps
}
}
convertType
::
Swagger
.
SwaggerType
t
->
OpenAPI
.
OpenApiType
convertType
Swagger
.
SwaggerString
=
OpenAPI
.
OpenApiString
convertItems
::
Swagger
.
SwaggerItems
'S
w
agger
.
SwaggerKindSchema
->
OpenAPI
.
OpenApiItems
convertType
Swagger
.
SwaggerNumber
=
OpenAPI
.
OpenApiNumber
convertType
Swagger
.
SwaggerInteger
=
OpenAPI
.
OpenApiInteger
convertType
Swagger
.
SwaggerBoolean
=
OpenAPI
.
OpenApiBoolean
convertType
Swagger
.
SwaggerArray
=
OpenAPI
.
OpenApiArray
convertType
Swagger
.
SwaggerFile
=
OpenAPI
.
OpenApiString
-- OpenAPI lacks file type, fallback to string
convertType
Swagger
.
SwaggerNull
=
OpenAPI
.
OpenApiNull
convertType
Swagger
.
SwaggerObject
=
OpenAPI
.
OpenApiObject
convertItems
::
Swagger
.
SwaggerItems
t
->
OpenAPI
.
OpenApiItems
convertItems
(
Swagger
.
SwaggerItemsPrimitive
_collectionFormat
paramSchema
)
=
convertItems
(
Swagger
.
SwaggerItemsPrimitive
_collectionFormat
paramSchema
)
=
OpenAPI
.
OpenApiItemsObject
$
OpenAPI
.
Inline
$
fromParamSchema
paramSchema
OpenAPI
.
OpenApiItemsObject
$
OpenAPI
.
Inline
$
fromParamSchema
paramSchema
convertItems
(
Swagger
.
SwaggerItemsObject
referencedSchema
)
=
convertItems
(
Swagger
.
SwaggerItemsObject
referencedSchema
)
=
OpenAPI
.
OpenApiItemsObject
$
convertRef
referencedSchema
OpenAPI
.
OpenApiItemsObject
$
view
(
from
swagConv
)
$
referencedSchema
convertItems
(
Swagger
.
SwaggerItemsArray
referencedSchemas
)
=
convertItems
(
Swagger
.
SwaggerItemsArray
referencedSchemas
)
=
OpenAPI
.
OpenApiItemsArray
$
map
convertRef
referencedSchemas
OpenAPI
.
OpenApiItemsArray
$
map
(
view
(
from
swagConv
))
$
referencedSchemas
convertRef
::
Swagger
.
Referenced
Swagger
.
Schema
->
OpenAPI
.
Referenced
OpenAPI
.
Schema
convertRef
(
Swagger
.
Ref
ref
)
=
OpenAPI
.
Ref
$
OpenAPI
.
Reference
(
Swagger
.
getReference
ref
)
convertRef
(
Swagger
.
Inline
s
)
=
OpenAPI
.
Inline
$
fromSwaggerSchema
s
convertAdditionalProps
::
Swagger
.
AdditionalProperties
->
OpenAPI
.
AdditionalProperties
convertAdditionalProps
(
Swagger
.
AdditionalPropertiesAllowed
allowed
)
=
OpenAPI
.
AdditionalPropertiesAllowed
allowed
convertAdditionalProps
(
Swagger
.
AdditionalPropertiesSchema
ref
)
=
OpenAPI
.
AdditionalPropertiesSchema
(
convertRef
ref
)
convertDocs
::
Swagger
.
ExternalDocs
->
OpenAPI
.
ExternalDocs
convertDocs
Swagger
.
ExternalDocs
{
Swagger
.
_externalDocsDescription
=
desc
,
Swagger
.
_externalDocsUrl
=
docurl
}
=
OpenAPI
.
ExternalDocs
{
OpenAPI
.
_externalDocsDescription
=
desc
,
OpenAPI
.
_externalDocsUrl
=
convertURL
docurl
}
convertURL
::
Swagger
.
URL
->
OpenAPI
.
URL
convertURL
=
OpenAPI
.
URL
.
Swagger
.
getUrl
convertXml
::
Swagger
.
Xml
->
OpenAPI
.
Xml
convertXml
Swagger
.
Xml
{
Swagger
.
_xmlName
=
xname
,
Swagger
.
_xmlNamespace
=
xnamespace
,
Swagger
.
_xmlPrefix
=
xprefix
,
Swagger
.
_xmlAttribute
=
xattribute
,
Swagger
.
_xmlWrapped
=
xwrapped
}
=
OpenAPI
.
Xml
{
OpenAPI
.
_xmlName
=
xname
,
OpenAPI
.
_xmlNamespace
=
xnamespace
,
OpenAPI
.
_xmlPrefix
=
xprefix
,
OpenAPI
.
_xmlAttribute
=
xattribute
,
OpenAPI
.
_xmlWrapped
=
xwrapped
}
convertDiscriminator
::
T
.
Text
->
OpenAPI
.
Discriminator
convertItems'
::
OpenApiItems
->
Swagger
.
SwaggerItems
'S
w
agger
.
SwaggerKindSchema
convertDiscriminator
t
=
OpenAPI
.
Discriminator
t
mempty
convertItems'
=
\
case
OpenAPI
.
OpenApiItemsObject
s
->
Swagger
.
SwaggerItemsObject
(
view
swagConv
s
)
OpenAPI
.
OpenApiItemsArray
xs
->
Swagger
.
SwaggerItemsArray
$
map
(
view
swagConv
)
xs
fromSwaggerSchema
::
Swagger
.
Schema
->
OpenAPI
.
Schema
fromSwaggerSchema
::
Swagger
.
Schema
->
OpenAPI
.
Schema
fromSwaggerSchema
swaggerSchema
=
OpenAPI
.
Schema
fromSwaggerSchema
swaggerSchema
=
OpenAPI
.
Schema
...
@@ -173,39 +263,74 @@ fromSwaggerSchema swaggerSchema = OpenAPI.Schema
...
@@ -173,39 +263,74 @@ fromSwaggerSchema swaggerSchema = OpenAPI.Schema
,
OpenAPI
.
_schemaDescription
=
view
Swagger
.
description
swaggerSchema
,
OpenAPI
.
_schemaDescription
=
view
Swagger
.
description
swaggerSchema
,
OpenAPI
.
_schemaDefault
=
view
Swagger
.
default_
swaggerSchema
,
OpenAPI
.
_schemaDefault
=
view
Swagger
.
default_
swaggerSchema
,
OpenAPI
.
_schemaExample
=
view
Swagger
.
example
swaggerSchema
,
OpenAPI
.
_schemaExample
=
view
Swagger
.
example
swaggerSchema
,
OpenAPI
.
_schemaType
=
convertType
<$>
view
Swagger
.
type_
swaggerSchema
,
OpenAPI
.
_schemaType
=
view
(
from
swagConv
)
<$>
view
Swagger
.
type_
swaggerSchema
,
OpenAPI
.
_schemaFormat
=
view
Swagger
.
format
swaggerSchema
,
OpenAPI
.
_schemaFormat
=
view
Swagger
.
format
swaggerSchema
,
OpenAPI
.
_schemaNullable
=
Nothing
,
OpenAPI
.
_schemaNullable
=
Nothing
,
OpenAPI
.
_schemaEnum
=
view
Swagger
.
enum_
swaggerSchema
,
OpenAPI
.
_schemaEnum
=
view
Swagger
.
enum_
swaggerSchema
,
OpenAPI
.
_schemaMaximum
=
view
Swagger
.
maximum_
swaggerSchema
,
OpenAPI
.
_schemaMaximum
=
view
Swagger
.
maximum_
swaggerSchema
,
OpenAPI
.
_schemaExclusiveMaximum
=
Nothing
,
OpenAPI
.
_schemaExclusiveMaximum
=
swaggerSchema
^.
Swagger
.
paramSchema
.
Swagger
.
exclusiveMaximum
,
OpenAPI
.
_schemaMinimum
=
view
Swagger
.
minimum_
swaggerSchema
,
OpenAPI
.
_schemaMinimum
=
view
Swagger
.
minimum_
swaggerSchema
,
OpenAPI
.
_schemaExclusiveMinimum
=
Nothing
,
OpenAPI
.
_schemaExclusiveMinimum
=
swaggerSchema
^.
Swagger
.
paramSchema
.
Swagger
.
exclusiveMinimum
,
OpenAPI
.
_schemaMaxLength
=
Nothing
,
OpenAPI
.
_schemaMaxLength
=
swaggerSchema
^.
Swagger
.
paramSchema
.
Swagger
.
maxLength
,
OpenAPI
.
_schemaMinLength
=
Nothing
,
OpenAPI
.
_schemaMinLength
=
swaggerSchema
^.
Swagger
.
paramSchema
.
Swagger
.
minLength
,
OpenAPI
.
_schemaPattern
=
Nothing
,
OpenAPI
.
_schemaPattern
=
swaggerSchema
^.
Swagger
.
paramSchema
.
Swagger
.
pattern
,
OpenAPI
.
_schemaMaxItems
=
Nothing
,
OpenAPI
.
_schemaMaxItems
=
swaggerSchema
^.
Swagger
.
paramSchema
.
Swagger
.
maxItems
,
OpenAPI
.
_schemaMinItems
=
Nothing
,
OpenAPI
.
_schemaMinItems
=
swaggerSchema
^.
Swagger
.
paramSchema
.
Swagger
.
minItems
,
OpenAPI
.
_schemaUniqueItems
=
view
Swagger
.
uniqueItems
swaggerSchema
,
OpenAPI
.
_schemaUniqueItems
=
view
Swagger
.
uniqueItems
swaggerSchema
,
OpenAPI
.
_schemaMaxProperties
=
view
Swagger
.
maxProperties
swaggerSchema
,
OpenAPI
.
_schemaMaxProperties
=
view
Swagger
.
maxProperties
swaggerSchema
,
OpenAPI
.
_schemaMinProperties
=
view
Swagger
.
minProperties
swaggerSchema
,
OpenAPI
.
_schemaMinProperties
=
view
Swagger
.
minProperties
swaggerSchema
,
OpenAPI
.
_schemaAdditionalProperties
=
convertAdditionalProps
<$>
view
Swagger
.
additionalProperties
swaggerSchema
,
OpenAPI
.
_schemaAdditionalProperties
=
view
(
from
swagConv
)
<$>
view
Swagger
.
additionalProperties
swaggerSchema
,
OpenAPI
.
_schemaItems
=
convertItems
<$>
view
Swagger
.
items
swaggerSchema
,
OpenAPI
.
_schemaItems
=
convertItems
<$>
view
Swagger
.
items
swaggerSchema
,
OpenAPI
.
_schemaProperties
=
HM
.
map
convertRef
$
view
Swagger
.
properties
swaggerSchema
,
OpenAPI
.
_schemaProperties
=
HM
.
map
(
view
(
from
swagConv
))
$
view
Swagger
.
properties
swaggerSchema
,
OpenAPI
.
_schemaRequired
=
view
Swagger
.
required
swaggerSchema
,
OpenAPI
.
_schemaRequired
=
view
Swagger
.
required
swaggerSchema
,
OpenAPI
.
_schemaAllOf
=
map
convertRef
<$>
view
Swagger
.
allOf
swaggerSchema
,
OpenAPI
.
_schemaAllOf
=
map
(
view
(
from
swagConv
))
<$>
view
Swagger
.
allOf
swaggerSchema
,
OpenAPI
.
_schemaOneOf
=
Nothing
,
OpenAPI
.
_schemaOneOf
=
Nothing
,
OpenAPI
.
_schemaNot
=
Nothing
,
OpenAPI
.
_schemaNot
=
Nothing
,
OpenAPI
.
_schemaAnyOf
=
Nothing
,
OpenAPI
.
_schemaAnyOf
=
Nothing
,
OpenAPI
.
_schemaDiscriminator
=
convertDiscriminator
<$>
view
Swagger
.
discriminator
swaggerSchema
,
OpenAPI
.
_schemaDiscriminator
=
view
(
from
swagConv
)
<$>
view
Swagger
.
discriminator
swaggerSchema
,
OpenAPI
.
_schemaReadOnly
=
view
Swagger
.
readOnly
swaggerSchema
,
OpenAPI
.
_schemaReadOnly
=
view
Swagger
.
readOnly
swaggerSchema
,
OpenAPI
.
_schemaWriteOnly
=
Nothing
,
OpenAPI
.
_schemaWriteOnly
=
Nothing
,
OpenAPI
.
_schemaXml
=
convertXml
<$>
view
Swagger
.
xml
swaggerSchema
,
OpenAPI
.
_schemaXml
=
view
(
from
swagConv
)
<$>
view
Swagger
.
xml
swaggerSchema
,
OpenAPI
.
_schemaExternalDocs
=
convertDocs
<$>
view
Swagger
.
externalDocs
swaggerSchema
,
OpenAPI
.
_schemaExternalDocs
=
view
(
from
swagConv
)
<$>
view
Swagger
.
externalDocs
swaggerSchema
,
OpenAPI
.
_schemaDeprecated
=
Nothing
,
OpenAPI
.
_schemaDeprecated
=
Nothing
,
OpenAPI
.
_schemaMultipleOf
=
view
Swagger
.
multipleOf
swaggerSchema
,
OpenAPI
.
_schemaMultipleOf
=
view
Swagger
.
multipleOf
swaggerSchema
}
}
toSwaggerSchema
::
Schema
->
Swagger
.
Schema
toSwaggerSchema
s
@
Schema
{
..
}
=
Swagger
.
Schema
{
Swagger
.
_schemaTitle
=
view
title
s
,
Swagger
.
_schemaDescription
=
view
description
s
,
Swagger
.
_schemaRequired
=
_schemaRequired
,
Swagger
.
_schemaAllOf
=
map
(
view
swagConv
)
<$>
_schemaAllOf
,
Swagger
.
_schemaProperties
=
HM
.
map
(
view
swagConv
)
$
_schemaProperties
,
Swagger
.
_schemaAdditionalProperties
=
view
swagConv
<$>
_schemaAdditionalProperties
,
Swagger
.
_schemaDiscriminator
=
view
swagConv
<$>
view
discriminator
s
,
Swagger
.
_schemaReadOnly
=
view
readOnly
s
,
Swagger
.
_schemaXml
=
view
swagConv
<$>
_schemaXml
,
Swagger
.
_schemaExternalDocs
=
view
swagConv
<$>
_schemaExternalDocs
,
Swagger
.
_schemaExample
=
view
example
s
,
Swagger
.
_schemaMaxProperties
=
view
maxProperties
s
,
Swagger
.
_schemaMinProperties
=
view
minProperties
s
,
Swagger
.
_schemaParamSchema
=
Swagger
.
ParamSchema
{
_paramSchemaDefault
=
_schemaDefault
,
_paramSchemaType
=
view
swagConv
<$>
_schemaType
,
_paramSchemaFormat
=
_schemaFormat
,
_paramSchemaItems
=
convertItems'
<$>
_schemaItems
,
_paramSchemaMaximum
=
_schemaMaximum
,
_paramSchemaExclusiveMaximum
=
_schemaExclusiveMaximum
,
_paramSchemaMinimum
=
_schemaMinimum
,
_paramSchemaExclusiveMinimum
=
_schemaExclusiveMinimum
,
_paramSchemaMaxLength
=
_schemaMaxLength
,
_paramSchemaMinLength
=
_schemaMinLength
,
_paramSchemaPattern
=
_schemaPattern
,
_paramSchemaMaxItems
=
_schemaMaxItems
,
_paramSchemaMinItems
=
_schemaMinItems
,
_paramSchemaUniqueItems
=
_schemaUniqueItems
,
_paramSchemaEnum
=
_schemaEnum
,
_paramSchemaMultipleOf
=
_schemaMultipleOf
}
}
-- little compat-shim to avoid re-implementing 'ToSchema' and 'ToParamSchema' for each
-- little compat-shim to avoid re-implementing 'ToSchema' and 'ToParamSchema' for each
-- and every type, while we transition away from swagger.
-- and every type, while we transition away from swagger.
...
@@ -213,8 +338,15 @@ instance {-# OVERLAPS #-} (Typeable a, Swagger.ToParamSchema a) => ToParamSchema
...
@@ -213,8 +338,15 @@ instance {-# OVERLAPS #-} (Typeable a, Swagger.ToParamSchema a) => ToParamSchema
toParamSchema
p
=
fromParamSchema
$
Swagger
.
toParamSchema
p
toParamSchema
p
=
fromParamSchema
$
Swagger
.
toParamSchema
p
instance
{-# OVERLAPS #-}
(
Typeable
a
,
Swagger
.
ToSchema
a
)
=>
ToSchema
a
where
instance
{-# OVERLAPS #-}
(
Typeable
a
,
Swagger
.
ToSchema
a
)
=>
ToSchema
a
where
declareNamedSchema
_
=
declareNamedSchema
p
=
DeclareT
$
\
d
->
do
pure
$
OpenAPI
.
NamedSchema
swaggerName
openApiSchema
let
(
toRegister
,
Swagger
.
NamedSchema
swaggerName
swaggerSchema
)
=
flip
SwaggerDeclare
.
runDeclare
(
lowerD
d
)
(
Swagger
.
declareNamedSchema
p
)
pure
$
(
convertDefinitions
toRegister
,
OpenAPI
.
NamedSchema
swaggerName
(
openApiSchema
swaggerSchema
))
where
where
Swagger
.
NamedSchema
swaggerName
swaggerSchema
=
Swagger
.
toNamedSchema
(
Proxy
::
Proxy
a
)
openApiSchema
s
=
fromSwaggerSchema
s
openApiSchema
=
fromSwaggerSchema
swaggerSchema
convertDefinitions
::
Swagger
.
Definitions
Swagger
.
Schema
->
Definitions
Schema
convertDefinitions
=
HM
.
map
fromSwaggerSchema
lowerD
::
Definitions
Schema
->
Swagger
.
Definitions
Swagger
.
Schema
lowerD
=
HM
.
map
toSwaggerSchema
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment