|
1 | 1 | module Bucketchain.Http
|
2 | 2 | ( Http
|
| 3 | + , toRequest |
3 | 4 | , httpStream
|
4 | 5 | , httpVersion
|
5 | 6 | , requestHeaders
|
@@ -29,50 +30,57 @@ newtype Http = Http
|
29 | 30 | , res :: HTTP.Response
|
30 | 31 | }
|
31 | 32 |
|
| 33 | +-- | Convert a HTTP stream to a Request stream. |
| 34 | +toRequest :: Http -> HTTP.Request |
| 35 | +toRequest (Http { req }) = req |
| 36 | + |
| 37 | +toResponse :: Http -> HTTP.Response |
| 38 | +toResponse (Http { res }) = res |
| 39 | + |
32 | 40 | -- | Create a HTTP stream.
|
33 | 41 | httpStream :: HTTP.Request -> HTTP.Response -> Http
|
34 | 42 | httpStream req res = Http { req, res }
|
35 | 43 |
|
36 | 44 | -- | Get the request HTTP version.
|
37 | 45 | httpVersion :: Http -> String
|
38 |
| -httpVersion (Http { req }) = HTTP.httpVersion req |
| 46 | +httpVersion = toRequest >>> HTTP.httpVersion |
39 | 47 |
|
40 | 48 | -- | Get the request headers.
|
41 | 49 | requestHeaders :: Http -> Object String
|
42 |
| -requestHeaders (Http { req }) = HTTP.requestHeaders req |
| 50 | +requestHeaders = toRequest >>> HTTP.requestHeaders |
43 | 51 |
|
44 | 52 | -- | Get the request method (GET, POST, etc.).
|
45 | 53 | requestMethod :: Http -> String
|
46 |
| -requestMethod (Http { req }) = HTTP.requestMethod req |
| 54 | +requestMethod = toRequest >>> HTTP.requestMethod |
47 | 55 |
|
48 | 56 | -- | Get the request URL.
|
49 | 57 | requestURL :: Http -> String
|
50 |
| -requestURL (Http { req }) = HTTP.requestURL req |
| 58 | +requestURL = toRequest >>> HTTP.requestURL |
51 | 59 |
|
52 | 60 | -- | Get the request body.
|
53 | 61 | requestBody :: Http -> Aff String
|
54 |
| -requestBody http = convertToString $ toReadable http |
| 62 | +requestBody = toReadable >>> convertToString |
55 | 63 |
|
56 | 64 | -- | Convert a Http stream to a Readable stream.
|
57 | 65 | toReadable :: Http -> Readable ()
|
58 |
| -toReadable (Http { req }) = HTTP.requestAsStream req |
| 66 | +toReadable = toRequest >>> HTTP.requestAsStream |
59 | 67 |
|
60 | 68 | -- | Set a header with a single value.
|
61 | 69 | setHeader :: Http -> String -> String -> Effect Unit
|
62 |
| -setHeader (Http { res }) = HTTP.setHeader res |
| 70 | +setHeader = toResponse >>> HTTP.setHeader |
63 | 71 |
|
64 | 72 | -- | Set a header with multiple values.
|
65 | 73 | setHeaders :: Http -> String -> Array String -> Effect Unit
|
66 |
| -setHeaders (Http { res }) = HTTP.setHeaders res |
| 74 | +setHeaders = toResponse >>> HTTP.setHeaders |
67 | 75 |
|
68 | 76 | -- | Set the status code.
|
69 | 77 | setStatusCode :: Http -> Int -> Effect Unit
|
70 |
| -setStatusCode (Http { res }) = HTTP.setStatusCode res |
| 78 | +setStatusCode = toResponse >>> HTTP.setStatusCode |
71 | 79 |
|
72 | 80 | -- | Set the status message.
|
73 | 81 | setStatusMessage :: Http -> String -> Effect Unit
|
74 |
| -setStatusMessage (Http { res }) = HTTP.setStatusMessage res |
| 82 | +setStatusMessage = toResponse >>> HTTP.setStatusMessage |
75 | 83 |
|
76 | 84 | -- | This is for internal. Do not use it.
|
77 | 85 | toWritable :: Http -> Writable ()
|
78 |
| -toWritable (Http { res }) = HTTP.responseAsStream res |
| 86 | +toWritable = toResponse >>> HTTP.responseAsStream |
0 commit comments