git.iko.soy/typeable/servant-swagger-ui
on master help sign in
Merge pull request #45 from phadej/lzma

Use lzma

commita75c1cdf6a9443e6a4d8dc4351f9057f4cd7301b authorOleg Grenrus <oleg.grenrus@iki.fi> dateThu 5 Apr 2018, 12:57 (9 years ago) parent6c66bb3d87067b
3 files changed+8−70
servant-swagger-ui.cabal+1−5 src/Servant/Swagger/UI.hs+7−8 src/Servant/Swagger/UI/Internal.hs−57
servant-swagger-ui.cabal+1−5
@@ -99,16 +99,13 @@ library
9999 base >=4.7 && <4.12
100100 , blaze-markup >=0.7.0.2 && <0.9
101101 , bytestring >=0.10.4.0 && <0.11
102− , directory >=1.2.1.0 && <1.4
103− , file-embed >=0.0.9 && <0.1
104− , filepath >=1.3.0.2 && <1.5
102+ , file-embed-lzma >=0 && <0.1
105103 , http-media >=0.6.2 && <0.8
106104 , servant >=0.4.4.5 && <0.14
107105 , servant-blaze >=0.4.4.5 && <0.9
108106 , servant-server >=0.4.4.5 && <0.14
109107 , servant-swagger >=1.0.3 && <1.2
110108 , swagger2 >=2.0.1 && <2.3
111− , template-haskell >=2.9 && <2.14
112109 , text >=1.2.0.6 && <1.3
113110 , wai-app-static >=3.0.1.1 && <3.2
114111 if flag(servant-0-5)
@@ -122,7 +119,6 @@ library
122119 , either
123120 exposed-modules:
124121 Servant.Swagger.UI
125− Servant.Swagger.UI.Internal
126122 default-language: Haskell2010
127123
128124test-suite example
src/Servant/Swagger/UI.hs+7−8
@@ -70,13 +70,12 @@ module Servant.Swagger.UI (
7070 ) where
7171
7272import Data.ByteString (ByteString)
73−import Data.FileEmbed (embedStringFile)
7473import Data.Swagger (Swagger)
74+import FileEmbedLzma
7575import GHC.TypeLits (KnownSymbol, Symbol, symbolVal)
7676import Network.Wai.Application.Static (embeddedSettings, staticApp)
7777import Servant
7878import Servant.HTML.Blaze (HTML)
79−import Servant.Swagger.UI.Internal
8079import Text.Blaze (ToMarkup (..))
8180
8281import qualified Data.Text as T
@@ -190,19 +189,19 @@ swaggerSchemaUIServerImpl indexTemplate files swagger = return swagger
190189 staticApp $ embeddedSettings files
191190
192191swaggerUiIndexTemplate :: T.Text
193−swaggerUiIndexTemplate = $(embedStringFile "index.html.tmpl")
192+swaggerUiIndexTemplate = $(embedText "index.html.tmpl")
194193
195194swaggerUiFiles :: [(FilePath, ByteString)]
196−swaggerUiFiles = $(mkRecursiveEmbedded "swagger-ui-dist-3.9.1")
195+swaggerUiFiles = $(embedRecursiveDir "swagger-ui-dist-3.9.1")
197196
198197jensolegIndexTemplate :: T.Text
199−jensolegIndexTemplate = $(embedStringFile "jensoleg.index.html.tmpl")
198+jensolegIndexTemplate = $(embedText "jensoleg.index.html.tmpl")
200199
201200jensolegFiles :: [(FilePath, ByteString)]
202−jensolegFiles = $(mkRecursiveEmbedded "jensoleg-dist")
201+jensolegFiles = $(embedRecursiveDir "jensoleg-dist")
203202
204203redocIndexTemplate :: T.Text
205−redocIndexTemplate = $(embedStringFile "redoc.index.html.tmpl")
204+redocIndexTemplate = $(embedText "redoc.index.html.tmpl")
206205
207206redocFiles :: [(FilePath, ByteString)]
208−redocFiles = $(mkRecursiveEmbedded "redoc-dist")
207+redocFiles = $(embedRecursiveDir "redoc-dist")
src/Servant/Swagger/UI/Internal.hsdeleted−57
@@ -1,57 +0,0 @@
1−{-# LANGUAGE OverloadedStrings #-}
2−{-# LANGUAGE QuasiQuotes #-}
3−{-# LANGUAGE TemplateHaskell #-}
4−------------------------------------------------------------
5−-- |
6−-- Module : Servant.Swagger.UI.Internal
7−-- Copyright : (c) 2015 Futurice
8−-- License : MIT
9−-- Maintainer : Oleg Grenrus <oleg.grenrus@iki.fi>
10−--
11−-- Originally from waitra package:
12−-- <http://hackage.haskell.org/package/waitra-0.0.4.0/docs/Network-Waitra-Embedded.html>
13−----------------------------------------------------------------------------
14−module Servant.Swagger.UI.Internal (mkRecursiveEmbedded) where
15−
16−import Control.Arrow (first)
17−import Control.Monad (forM)
18−import qualified Data.ByteString as B
19−import qualified Data.ByteString.Char8 as B8
20−import qualified Data.ByteString.Lazy as BL
21−import Language.Haskell.TH
22−import System.Directory
23− (doesDirectoryExist, getDirectoryContents)
24−import System.FilePath (makeRelative, (</>))
25−
26−getRecursiveContents :: FilePath -> IO [(FilePath, BL.ByteString)]
27−getRecursiveContents topdir = do
28− names <- getDirectoryContents topdir
29− let properNames = Prelude.filter (`notElem` [".", ".."]) names
30− paths <- forM properNames $ \name -> do
31− let path = topdir </> name
32− isDirectory <- doesDirectoryExist path
33− if isDirectory
34− then getRecursiveContents path
35− else do contents <- BL.readFile path
36− return [(path, contents)]
37− return (concat paths)
38−
39−makeAllRelative :: FilePath -> [(FilePath, a)] -> [(FilePath, a)]
40−makeAllRelative topdir = map (first (("/" ++) . makeRelative topdir))
41−
42−bytestringE :: B.ByteString -> Q Exp
43−bytestringE b = [| B8.pack $s |]
44− where s = litE $ stringL $ B8.unpack b
45−
46−makeEmbeddedEntry :: (FilePath, BL.ByteString) -> Q Exp
47−makeEmbeddedEntry (path, bs) = [| (path, $(bytestringE $ BL.toStrict bs)) |]
48−
49−-- | Create a @[('FilePath', 'BL.ByteString')]@ list, recursively traversing given directory path.
50−--
51−-- > staticApp $ embeddedSettings $(mkRecursiveEmbedded "static")
52−-- > -- is an in-memory equivalent of
53−-- > staticApp $ defaultFileServerSettings "static"
54−mkRecursiveEmbedded :: FilePath -> Q Exp
55−mkRecursiveEmbedded topdir = do
56− pairs <- runIO $ fmap (makeAllRelative topdir) $ getRecursiveContents topdir
57− listE $ map makeEmbeddedEntry pairs