From b6e597afe251c5a7c16b09794c77de3d6e9499f4 Mon Sep 17 00:00:00 2001 From: Ryan Kavanagh Date: Tue, 2 Jun 2020 15:24:25 -0400 Subject: Add an UNDEFINED status --- gemini/geminiTransaction.ml | 52 ++++++++++++++++++++++---------------------- gemini/geminiTransaction.mli | 3 ++- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/gemini/geminiTransaction.ml b/gemini/geminiTransaction.ml index 86be965..65b80ea 100644 --- a/gemini/geminiTransaction.ml +++ b/gemini/geminiTransaction.ml @@ -26,6 +26,7 @@ sig | CERT_NOT_ACCEPTED | FUTURE_CERT_REJECTED | EXPIRED_CERT_REJECTED + | UNDEFINED of int type mime_type = M.t @@ -33,7 +34,7 @@ sig val make_request : url:string -> request - val int_to_status : int -> status option + val int_to_status : int -> status val transaction : request -> (response, string) result Lwt.t end @@ -71,6 +72,7 @@ struct | CERT_NOT_ACCEPTED | FUTURE_CERT_REJECTED | EXPIRED_CERT_REJECTED + | UNDEFINED of int type response = status * mime_type * string @@ -88,36 +90,34 @@ struct { host = host; port = port; url = r; } let int_to_status = function - | 10 -> Some INPUT - | 20 -> Some SUCCESS - | 21 -> Some SUCCESS_EOCSS - | 30 -> Some REDIR_TEMP - | 31 -> Some REDIR_PERM - | 40 -> Some TEMP_FAIL - | 41 -> Some SERVER_UNAVAILABLE - | 42 -> Some CGI_ERROR - | 43 -> Some PROXY_ERROR - | 44 -> Some SLOW_DOWN - | 50 -> Some PERM_FAIL - | 51 -> Some NOT_FOUND - | 52 -> Some GONE - | 53 -> Some PROXY_REQ_REFUSED - | 54 -> Some BAD_REQ - | 60 -> Some CLIENT_CERT_REQUIRED - | 61 -> Some TRANSIENT_CERT_REQUESTED - | 62 -> Some AUTHORISED_CERT_REQUIRED - | 63 -> Some CERT_NOT_ACCEPTED - | 64 -> Some FUTURE_CERT_REJECTED - | 65 -> Some EXPIRED_CERT_REJECTED - | _ -> None + | 10 -> INPUT + | 20 -> SUCCESS + | 21 -> SUCCESS_EOCSS + | 30 -> REDIR_TEMP + | 31 -> REDIR_PERM + | 40 -> TEMP_FAIL + | 41 -> SERVER_UNAVAILABLE + | 42 -> CGI_ERROR + | 43 -> PROXY_ERROR + | 44 -> SLOW_DOWN + | 50 -> PERM_FAIL + | 51 -> NOT_FOUND + | 52 -> GONE + | 53 -> PROXY_REQ_REFUSED + | 54 -> BAD_REQ + | 60 -> CLIENT_CERT_REQUIRED + | 61 -> TRANSIENT_CERT_REQUESTED + | 62 -> AUTHORISED_CERT_REQUIRED + | 63 -> CERT_NOT_ACCEPTED + | 64 -> FUTURE_CERT_REJECTED + | 65 -> EXPIRED_CERT_REJECTED + | n -> UNDEFINED n let status_parser : (status, string) result Angstrom.t = let open Angstrom in let status_of_string s = match int_of_string_opt s with - | Some n -> (match int_to_status n with - | Some s -> Ok s - | None -> Error ("Invalid status: " ^ s)) + | Some n -> Ok (int_to_status n) | None -> Error ("Invalid status: " ^ s) in lift status_of_string (take 2) "status" diff --git a/gemini/geminiTransaction.mli b/gemini/geminiTransaction.mli index b97967b..b31d9e0 100644 --- a/gemini/geminiTransaction.mli +++ b/gemini/geminiTransaction.mli @@ -26,6 +26,7 @@ sig | CERT_NOT_ACCEPTED | FUTURE_CERT_REJECTED | EXPIRED_CERT_REJECTED + | UNDEFINED of int type mime_type = M.t @@ -33,7 +34,7 @@ sig val make_request : url:string -> request - val int_to_status : int -> status option + val int_to_status : int -> status val transaction : request -> (response, string) result Lwt.t end -- cgit v1.2.3