]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - examples/SSL.hs
hlint
[Lucu.git] / examples / SSL.hs
index b9b76a3919e7c12f7930c08b2714f5d47d568637..f78b6c229939c49825fb6ab612ddf783066b3abf 100644 (file)
@@ -5,16 +5,19 @@
   , UnicodeSyntax
   #-}
 import Control.Applicative
-import "mtl" Control.Monad.Trans
+import Control.Monad.IO.Class
 import Control.Monad.Unicode
 import qualified Data.ByteString.Lazy.Char8 as Lazy
+import qualified Data.Collections as C
 import Data.Time.Clock
+import Network
 import Network.HTTP.Lucu
 import OpenSSL
 import OpenSSL.EVP.PKey
 import OpenSSL.RSA
 import qualified OpenSSL.Session as SSL
 import OpenSSL.X509
+import Prelude.Unicode
 
 main ∷ IO ()
 main = withOpenSSL $
@@ -26,29 +29,30 @@ main = withOpenSSL $
           SSL.contextSetCertificate    ctx cert
           SSL.contextSetDefaultCiphers ctx
 
-          let config    = defaultConfig {
-                            cnfServerPort = "9000"
-                          , cnfSSLConfig  = Just SSLConfig {
-                                              sslServerPort = "9001"
-                                            , sslContext    = ctx
-                                            }
-                          }
-              resources = mkResTree [ ([], helloWorld) ]
+          let config = defaultConfig {
+                         cnfServerPort = "9000"
+                       , cnfSSLConfig  = Just SSLConfig {
+                                           sslServerPort = "9001"
+                                         , sslContext    = ctx
+                                         }
+                       }
+              tree   ∷ ResourceTree
+              tree   = C.fromList [ ([], nonGreedy helloWorld) ]
           putStrLn "Access https://localhost:9001/ with your browser."
-          runHttpd config resources []
+          withSocketsDo ∘ runHttpd config $ resourceMap tree
 
-helloWorld ∷ ResourceDef
+helloWorld ∷ Resource
 helloWorld 
-    = emptyResource {
-        resGet
-          = Just $ do setContentType [mimeType| text/plain |]
-                      putChunk "getRemoteCertificate = "
-                      cert ← do cert ← getRemoteCertificate
-                                case cert of
-                                  Just c  → liftIO $ Lazy.pack <$> printX509 c
-                                  Nothing → return "Nothing"
-                      putChunks cert
-      }
+    = C.singleton
+      ( GET
+      , do setContentType [mimeType| text/plain |]
+           putChunk "getRemoteCertificate = "
+           cert ← do cert ← getRemoteCertificate
+                     case cert of
+                       Just c  → liftIO $ Lazy.pack <$> printX509 c
+                       Nothing → return "Nothing"
+           putChunks cert
+      )
 
 genCert ∷ KeyPair k ⇒ k → IO X509
 genCert pkey
@@ -61,4 +65,4 @@ genCert pkey
          setNotAfter     cert =≪ addUTCTime (365 * 24 * 60 * 60) <$> getCurrentTime
          setPublicKey    cert pkey
          signX509        cert pkey Nothing
-         return cert
\ No newline at end of file
+         return cert