aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/world/net/http/client.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/library/lux/world/net/http/client.lux')
-rw-r--r--stdlib/source/library/lux/world/net/http/client.lux58
1 files changed, 38 insertions, 20 deletions
diff --git a/stdlib/source/library/lux/world/net/http/client.lux b/stdlib/source/library/lux/world/net/http/client.lux
index 8055dce6e..6b2d9eb99 100644
--- a/stdlib/source/library/lux/world/net/http/client.lux
+++ b/stdlib/source/library/lux/world/net/http/client.lux
@@ -8,15 +8,21 @@
[control
[pipe (#+ case>)]
["." io (#+ IO)]
+ ["." maybe ("#\." functor)]
["." try (#+ Try)]
[concurrency
- ["." async (#+ Async)]]]
+ ["." async (#+ Async)]]
+ [parser
+ ["<.>" code]]]
[data
["." binary (#+ Binary)]
- ["." maybe ("#\." functor)]
["." text]
[collection
["." dictionary]]]
+ [macro
+ [syntax (#+ syntax:)]
+ ["." code]
+ ["." template]]
[math
[number
["n" nat]
@@ -25,26 +31,38 @@
[// (#+ URL)]])
(interface: .public (Client !)
+ {#.doc (example "A HTTP client capable of issuing requests to a HTTP server.")}
+
(: (-> //.Method URL //.Headers (Maybe Binary)
(! (Try (//.Response !))))
request))
-(template [<name> <method>]
- [(def: .public (<name> url headers data client)
- (All [!]
- (-> URL //.Headers (Maybe Binary) (Client !)
- (! (Try (//.Response !)))))
- (\ client request <method> url headers data))]
-
- [post #//.Post]
- [get #//.Get]
- [put #//.Put]
- [patch #//.Patch]
- [delete #//.Delete]
- [head #//.Head]
- [connect #//.Connect]
- [options #//.Options]
- [trace #//.Trace]
+(syntax: (method_name {[_ name] <code>.tag})
+ (in (list (code.text (text.upper_cased name)))))
+
+(syntax: (method_function {[_ name] <code>.tag})
+ (in (list (code.local_identifier (text.lower_cased name)))))
+
+(template [<method>]
+ [(with_expansions [<name> (method_function <method>)
+ <method_name> (method_name <method>)
+ <documentation> (template.text ["A " <method_name> " request."])]
+ (def: .public (<name> url headers data client)
+ {#.doc (example <documentation>)}
+ (All [!]
+ (-> URL //.Headers (Maybe Binary) (Client !)
+ (! (Try (//.Response !)))))
+ (\ client request <method> url headers data)))]
+
+ [#//.Post]
+ [#//.Get]
+ [#//.Put]
+ [#//.Patch]
+ [#//.Delete]
+ [#//.Head]
+ [#//.Connect]
+ [#//.Options]
+ [#//.Trace]
)
(def: default_buffer_size
@@ -52,7 +70,7 @@
(def: empty_body
[Nat Binary]
- [0 (binary.create 0)])
+ [0 (binary.empty 0)])
(def: (body_of data)
(-> Binary [Nat Binary])
@@ -117,7 +135,7 @@
(in ..empty_body))
[partial? buffer_size]
- (let [buffer (binary.create buffer_size)]
+ (let [buffer (binary.empty buffer_size)]
(if partial?
(loop [so_far +0]
(do {! (try.with io.monad)}