@@ -46,8 +46,8 @@ module Servant.Swagger.UI.Core (
46
46
Handler ,
47
47
) where
48
48
49
+ import Data.Aeson (ToJSON (.. ), Value )
49
50
import Data.ByteString (ByteString )
50
- import Data.Swagger (Swagger )
51
51
import GHC.TypeLits (KnownSymbol , Symbol , symbolVal )
52
52
import Network.Wai.Application.Static (embeddedSettings , staticApp )
53
53
import Servant
@@ -67,8 +67,10 @@ import qualified Data.Text as T
67
67
-- \/swagger-ui\/...
68
68
-- @
69
69
--
70
+ -- This type does not actually force served type to be @Swagger@ from @swagger2@ package,
71
+ -- it could be arbitrary @aeson@ 'Value'.
70
72
type SwaggerSchemaUI (dir :: Symbol ) (schema :: Symbol ) =
71
- SwaggerSchemaUI' dir (schema :> Get '[JSON ] Swagger )
73
+ SwaggerSchemaUI' dir (schema :> Get '[JSON ] Value )
72
74
73
75
-- | Use 'SwaggerSchemaUI'' when you need even more control over
74
76
-- where @swagger.json@ is served (e.g. subdirectory).
@@ -101,11 +103,11 @@ instance (KnownSymbol dir, HasLink api, Link ~ MkLink api Link, IsElem api api)
101
103
proxyApi = Proxy :: Proxy api
102
104
103
105
swaggerSchemaUIServerImpl
104
- :: (Monad m , ServerT api m ~ m Swagger )
106
+ :: (Monad m , ServerT api m ~ m Value , ToJSON a )
105
107
=> T. Text -> [(FilePath , ByteString )]
106
- -> Swagger -> ServerT (SwaggerSchemaUI' dir api ) m
108
+ -> a -> ServerT (SwaggerSchemaUI' dir api ) m
107
109
swaggerSchemaUIServerImpl indexTemplate files swagger
108
- = swaggerSchemaUIServerImpl' indexTemplate files $ return swagger
110
+ = swaggerSchemaUIServerImpl' indexTemplate files $ return $ toJSON swagger
109
111
110
112
-- | Use a custom server to serve the Swagger spec source.
111
113
swaggerSchemaUIServerImpl'
0 commit comments