Be able to specify our own authenticator

This commit is contained in:
Romain Calascibetta 2022-10-17 15:10:54 +02:00
parent ab520b4c3e
commit 546a06441c
2 changed files with 8 additions and 3 deletions

View file

@ -291,7 +291,7 @@ let single_request ~ctx ~alpn_protocol ?config cfg ~meth ~headers ?body uri =
Mimic.close flow >|= fun () -> Mimic.close flow >|= fun () ->
r r
let tls_config ?tls_config ?config authenticator = let tls_config ?tls_config ?config authenticator user's_authenticator =
lazy ( match tls_config with lazy ( match tls_config with
| Some cfg -> Ok (`Custom cfg) | Some cfg -> Ok (`Custom cfg)
| None -> | None ->
@ -299,7 +299,10 @@ let tls_config ?tls_config ?config authenticator =
| None -> [ "h2"; "http/1.1" ] | None -> [ "h2"; "http/1.1" ]
| Some (`H2 _) -> [ "h2" ] | Some (`H2 _) -> [ "h2" ]
| Some (`HTTP_1_1 _) -> [ "http/1.1" ] in | Some (`HTTP_1_1 _) -> [ "http/1.1" ] in
Result.map (fun authenticator -> `Default (Tls.Config.client ~alpn_protocols ~authenticator ())) authenticator ) match authenticator, user's_authenticator with
| Ok authenticator, None -> Ok (`Default (Tls.Config.client ~alpn_protocols ~authenticator ()))
| _, Some authenticator -> Ok (`Default (Tls.Config.client ~alpn_protocols ~authenticator ()))
| (Error _ as err), None -> err )
let resolve_location ~uri ~location = let resolve_location ~uri ~location =
match String.split_on_char '/' location with match String.split_on_char '/' location with
@ -319,12 +322,13 @@ let one_request
?config ?config
?tls_config:cfg ?tls_config:cfg
{ ctx; alpn_protocol; authenticator; } { ctx; alpn_protocol; authenticator; }
?authenticator:user's_authenticator
?(meth= `GET) ?(meth= `GET)
?(headers= []) ?(headers= [])
?body ?body
?(max_redirect= 5) ?(max_redirect= 5)
?(follow_redirect= true) uri = ?(follow_redirect= true) uri =
let tls_config = tls_config ?tls_config:cfg ?config authenticator in let tls_config = tls_config ?tls_config:cfg ?config authenticator user's_authenticator in
if not follow_redirect if not follow_redirect
then single_request ~ctx ~alpn_protocol ?config tls_config ~meth ~headers ?body uri then single_request ~ctx ~alpn_protocol ?config tls_config ~meth ~headers ?body uri
else else

View file

@ -25,6 +25,7 @@ val one_request :
?config:[ `H2 of H2.Config.t | `HTTP_1_1 of Httpaf.Config.t ] -> ?config:[ `H2 of H2.Config.t | `HTTP_1_1 of Httpaf.Config.t ] ->
?tls_config:Tls.Config.client -> ?tls_config:Tls.Config.client ->
t -> t ->
?authenticator:X509.Authenticator.t ->
?meth:Httpaf.Method.t -> ?meth:Httpaf.Method.t ->
?headers:(string * string) list -> ?headers:(string * string) list ->
?body:string -> ?body:string ->