module type GEMINI_TRANSACTION = sig type request module M : MimeType.MIME_TYPE type status = | INPUT | SUCCESS | SUCCESS_EOCSS | REDIR_TEMP | REDIR_PERM | TEMP_FAIL | SERVER_UNAVAILABLE | CGI_ERROR | PROXY_ERROR | SLOW_DOWN | PERM_FAIL | NOT_FOUND | GONE | PROXY_REQ_REFUSED | BAD_REQ | CLIENT_CERT_REQUIRED | TRANSIENT_CERT_REQUESTED | AUTHORISED_CERT_REQUIRED | CERT_NOT_ACCEPTED | FUTURE_CERT_REJECTED | EXPIRED_CERT_REJECTED type mime_type = M.t type response = status * mime_type * string val make_request : url:string -> request val int_to_status : int -> status option val transaction : request -> response option Lwt.t end module GeminiTransaction (M : MimeType.MIME_TYPE) : GEMINI_TRANSACTION with module M = M