More http sketching.
This commit is contained in:
parent
f6c4d634ab
commit
114a16e1e8
@ -26,3 +26,50 @@ fn main = jsonClient(
|
|||||||
get '/greeting'
|
get '/greeting'
|
||||||
map || ( it.body.greeting )
|
map || ( it.body.greeting )
|
||||||
fold println
|
fold println
|
||||||
|
|
||||||
|
pub int HttpReqOpts {
|
||||||
|
headers: Map<String, Any>
|
||||||
|
}
|
||||||
|
|
||||||
|
pub int GetOpts : HttpReqOpts
|
||||||
|
|
||||||
|
pub int HttpClient {
|
||||||
|
baseUrl: String
|
||||||
|
fn get(path: String, opts?: GetOpts): IOEither<HttpRequestError, HttpResponse>
|
||||||
|
fn post(path: String, body: Any, opts: PostOpts): IOEither<HttpRequestError, HttpResponse>
|
||||||
|
}
|
||||||
|
|
||||||
|
pub int JsonClient : HttpClient
|
||||||
|
|
||||||
|
pub int JsonClientOpts {
|
||||||
|
baseUrl: String
|
||||||
|
auth: HttpClientAuth
|
||||||
|
}
|
||||||
|
|
||||||
|
pub int HttpClientAuth = (reqBuilder: HttpRequest::Builder) -> Void
|
||||||
|
|
||||||
|
impl : JsonClient {
|
||||||
|
|
||||||
|
baseUrl: String
|
||||||
|
fld auth: HttpClientAuth
|
||||||
|
|
||||||
|
ctor (opts: JsonClientOpts) {
|
||||||
|
self.{baseUrl, auth} = opts
|
||||||
|
}
|
||||||
|
|
||||||
|
impl fn get(path, opts) = IOEither::of || (
|
||||||
|
HttpRequest::builder() tap || {
|
||||||
|
url = baseUrl + path
|
||||||
|
method = 'GET'
|
||||||
|
headers = opts?.headers ?: [:]
|
||||||
|
cookies = opts?.cookies ?: [:]
|
||||||
|
auth(self)
|
||||||
|
}()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn jsonClient(opts: JsonClientOpts): JsonClient = JsonClientImpl(opts)
|
||||||
|
|
||||||
|
pub fn bearerToken(tokenGetter: (#[self] client: JsonClient) -> IOEither<HttpRequestError, String>): HttpClientAuth {
|
||||||
|
// todo
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user