diff options
Diffstat (limited to 'stdlib/source/library/lux/world/net/http/client.lux')
-rw-r--r-- | stdlib/source/library/lux/world/net/http/client.lux | 58 |
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)} |