package aws-sts
Source file getSessionToken.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 60open Types open Aws type input = GetSessionTokenRequest.t type output = GetSessionTokenResponse.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", ["GetSessionToken"])] (Util.drop_empty (Uri.query_of_encoded (Query.render (GetSessionTokenRequest.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 "GetSessionTokenResponse" (snd xml)) (Xml.member "GetSessionTokenResult") in try Util.or_error (Util.option_bind resp GetSessionTokenResponse.parse) (let open Error in BadResponse { body; message = "Could not find well formed GetSessionTokenResponse." }) with | Xml.RequiredFieldMissing msg -> let open Error in `Error (BadResponse { body; message = ("Error parsing GetSessionTokenResponse - 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