summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2016-01-20 14:33:54 -0500
committerAndrew Cady <d@jerkface.net>2016-01-20 14:33:54 -0500
commit3123d316b5c9c910af965c7d207789bda49d2b3d (patch)
treeb39a94e75a76826daaa707d8891e6dda4deea7b7
parentc1dc81d18cc381d0b09147d0dbb778bbfd86f4da (diff)
Report HTTP status
-rw-r--r--acme.hs12
1 files changed, 10 insertions, 2 deletions
diff --git a/acme.hs b/acme.hs
index 49b8699..6bbda40 100644
--- a/acme.hs
+++ b/acme.hs
@@ -24,7 +24,7 @@ import Data.Digest.Pure.SHA (bytestringDigest, sha256)
24import Data.Maybe 24import Data.Maybe
25import qualified Data.Text as T 25import qualified Data.Text as T
26import Data.Text.Encoding (decodeUtf8) 26import Data.Text.Encoding (decodeUtf8)
27import Network.Wreq (Response, responseHeader, responseBody, defaults, checkStatus) 27import Network.Wreq (Response, responseHeader, responseBody, responseStatus, statusCode, statusMessage, defaults, checkStatus)
28import qualified Network.Wreq.Session as WS 28import qualified Network.Wreq.Session as WS
29import OpenSSL 29import OpenSSL
30import OpenSSL.EVP.Digest 30import OpenSSL.EVP.Digest
@@ -123,7 +123,7 @@ data Directory = Directory {
123} 123}
124newtype Nonce = Nonce String 124newtype Nonce = Nonce String
125testRegister :: String -> IO (Response LC.ByteString) 125testRegister :: String -> IO (Response LC.ByteString)
126testRegister email = readKeys "rsa.key" >>= flip (runACME directoryUrl) (register email defaultTerms) 126testRegister email = readKeys "rsa.key" >>= flip (runACME directoryUrl) (register email defaultTerms) >>= statusReport
127 127
128getDirectory :: WS.Session -> String -> IO (Maybe (Directory, Nonce)) 128getDirectory :: WS.Session -> String -> IO (Maybe (Directory, Nonce))
129getDirectory sess url = do 129getDirectory sess url = do
@@ -135,6 +135,14 @@ getDirectory sess url = do
135register :: String -> String -> ACME (Response LC.ByteString) 135register :: String -> String -> ACME (Response LC.ByteString)
136register email terms = sendPayload _newReg (registration email terms) 136register email terms = sendPayload _newReg (registration email terms)
137 137
138statusLine :: Response body -> String
139statusLine r = (r ^. responseStatus . statusCode . to show) ++ " " ++ r ^. responseStatus . statusMessage . to (T.unpack . decodeUtf8)
140
141statusReport :: MonadIO m => Response body -> m (Response body)
142statusReport r = do
143 liftIO $ putStrLn $ statusLine r
144 return r
145
138sendPayload :: (MonadIO m, MonadState Nonce m, MonadReader Env m) => (Directory -> String) -> ByteString -> m (Response LC.ByteString) 146sendPayload :: (MonadIO m, MonadState Nonce m, MonadReader Env m) => (Directory -> String) -> ByteString -> m (Response LC.ByteString)
139sendPayload reqType payload = do 147sendPayload reqType payload = do
140 keys <- asks getKeys 148 keys <- asks getKeys