1
1
module Bucketchain.Logger.HTTP.Token
2
- ( Token (..)
2
+ ( Token
3
+ , token
3
4
, label
4
5
, tokenizer
5
6
, date
@@ -29,6 +30,10 @@ import Node.HTTP (Request)
29
30
-- | It has a label and a tokenizer.
30
31
data Token = Token String (Http.Http -> Tokenizer String )
31
32
33
+ -- | Constructor function of `Token`.
34
+ token :: String -> (Http.Http -> Tokenizer String ) -> Token
35
+ token = Token
36
+
32
37
-- | Get label of token.
33
38
label :: Token -> String
34
39
label (Token x _) = x
@@ -39,45 +44,45 @@ tokenizer (Token _ x) = x
39
44
40
45
-- | A token of current date formetted ISO.
41
46
date :: Token
42
- date = Token " date" \_ -> do
47
+ date = token " date" \_ -> do
43
48
t <- ask
44
49
liftEffect $ toISOString t
45
50
46
51
-- | A token of HTTP version.
47
52
httpVersion :: Token
48
- httpVersion = Token " http-version" $ pure <<< Http .httpVersion
53
+ httpVersion = token " http-version" $ pure <<< Http .httpVersion
49
54
50
55
-- | A token of request url.
51
56
url :: Token
52
- url = Token " url" $ pure <<< Http .requestOriginalURL
57
+ url = token " url" $ pure <<< Http .requestOriginalURL
53
58
54
59
-- | A token of request method.
55
60
method :: Token
56
- method = Token " method" $ pure <<< Http .requestMethod
61
+ method = token " method" $ pure <<< Http .requestMethod
57
62
58
63
-- | A token of referrer.
59
64
referrer :: Token
60
- referrer = Token " referrer" \http -> do
65
+ referrer = token " referrer" \http -> do
61
66
pure $ fromMaybe
62
67
(fromMaybe " -" $ lookup " referrer" $ Http .requestHeaders http)
63
68
$ lookup " referer" $ Http .requestHeaders http
64
69
65
70
-- | A token of user agent.
66
71
userAgent :: Token
67
- userAgent = Token " user-agent" \http -> do
72
+ userAgent = token " user-agent" \http -> do
68
73
pure $ fromMaybe " -" $ lookup " user-agent" $ Http .requestHeaders http
69
74
70
75
-- | A token of remote address.
71
76
remoteAddr :: Token
72
- remoteAddr = Token " remote-addr" $ pure <<< _remoteAddress <<< Http .toRequest
77
+ remoteAddr = token " remote-addr" $ pure <<< _remoteAddress <<< Http .toRequest
73
78
74
79
-- | A token of status code.
75
80
status :: Token
76
- status = Token " status" $ pure <<< show <<< Http .statusCode
81
+ status = token " status" $ pure <<< show <<< Http .statusCode
77
82
78
83
-- | A token of response time.
79
84
responseTime :: Token
80
- responseTime = Token " response-time" \http -> do
85
+ responseTime = token " response-time" \http -> do
81
86
t <- ask
82
87
t' <- liftEffect now
83
88
pure $ (show $ getTime t' - getTime t) <> " ms"
0 commit comments