Source file assumeRoleWithWebIdentity.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
open Types
open Aws
type input = AssumeRoleWithWebIdentityRequest.t
type output = AssumeRoleWithWebIdentityResponse.t
type error = Errors_internal.t
let service = "sts"
let signature_version = Request.V4
let to_http service region req =
let uri =
Uri.add_query_params
(Uri.of_string
(Aws.Util.of_option_exn (Endpoints.url_of service region)))
(List.append
[("Version", ["2011-06-15"]);
("Action", ["AssumeRoleWithWebIdentity"])]
(Util.drop_empty
(Uri.query_of_encoded
(Query.render (AssumeRoleWithWebIdentityRequest.to_query req))))) in
(`POST, uri, [])
let of_http body =
try
let xml = Ezxmlm.from_string body in
let resp =
Util.option_bind
(Xml.member "AssumeRoleWithWebIdentityResponse" (snd xml))
(Xml.member "AssumeRoleWithWebIdentityResult") in
try
Util.or_error
(Util.option_bind resp AssumeRoleWithWebIdentityResponse.parse)
(let open Error in
BadResponse
{
body;
message =
"Could not find well formed AssumeRoleWithWebIdentityResponse."
})
with
| Xml.RequiredFieldMissing msg ->
let open Error in
`Error
(BadResponse
{
body;
message =
("Error parsing AssumeRoleWithWebIdentityResponse - missing field in body or children: "
^ msg)
})
with
| Failure msg ->
`Error
(let open Error in
BadResponse { body; message = ("Error parsing xml: " ^ msg) })
let parse_error code err =
let errors = [] @ Errors_internal.common in
match Errors_internal.of_string err with
| Some var ->
if
(List.mem var errors) &&
((match Errors_internal.to_http_code var with
| Some var -> var = code
| None -> true))
then Some var
else None
| None -> None