sig   module Session :     sig       type oauth1_context = { token : string; secret : string; }       val token :         (GapiConversation.Session.oauth1_context, string) GapiLens.t       val secret :         (GapiConversation.Session.oauth1_context, string) GapiLens.t       type oauth2_context = {         oauth2_token : string;         refresh_token : string;       }       val oauth2_token :         (GapiConversation.Session.oauth2_context, string) GapiLens.t       val refresh_token :         (GapiConversation.Session.oauth2_context, string) GapiLens.t       type auth_context =           NoAuth         | ClientLogin of string         | OAuth1 of GapiConversation.Session.oauth1_context         | OAuth2 of GapiConversation.Session.oauth2_context       val no_auth :         (GapiConversation.Session.auth_context, unit option) GapiLens.t       val client_login :         (GapiConversation.Session.auth_context, string option) GapiLens.t       val oauth1 :         (GapiConversation.Session.auth_context,          GapiConversation.Session.oauth1_context option)         GapiLens.t       val oauth2 :         (GapiConversation.Session.auth_context,          GapiConversation.Session.oauth2_context option)         GapiLens.t       type t = {         curl : [ `Created ] GapiCurl.t;         config : GapiConfig.t;         auth : GapiConversation.Session.auth_context;         cookies : string list;         etag : string;       }       val curl :         (GapiConversation.Session.t, [ `Created ] GapiCurl.t) GapiLens.t       val config : (GapiConversation.Session.t, GapiConfig.t) GapiLens.t       val auth :         (GapiConversation.Session.t, GapiConversation.Session.auth_context)         GapiLens.t       val cookies : (GapiConversation.Session.t, string list) GapiLens.t       val etag : (GapiConversation.Session.t, string) GapiLens.t     end   val request :     ?header_list:GapiCore.Header.t list ->     ?post_data:GapiCore.PostData.t ->     ?media_download:GapiMediaResource.download ->     GapiCore.HttpMethod.t ->     GapiConversation.Session.t ->     string ->     (GapiPipe.OcamlnetPipe.t ->      int -> GapiCore.Header.t list -> GapiConversation.Session.t -> 'a) ->     'a * GapiConversation.Session.t   val with_session :     ?auth_context:GapiConversation.Session.auth_context ->     GapiConfig.t ->     [ `Initialized ] GapiCurl.t -> (GapiConversation.Session.t -> 'a) -> 'a   val with_curl :     ?auth_context:GapiConversation.Session.auth_context ->     GapiConfig.t -> (GapiConversation.Session.t -> 'a) -> 'a   val read_all : ?auto_close:bool -> GapiPipe.OcamlnetPipe.t -> string   val parse_error :     GapiPipe.OcamlnetPipe.t -> int -> GapiConversation.Session.t -> 'a   exception ConversationException of string   type ('a, 'b) iter =       Done of 'b     | Continue of ('-> ('a, 'b) GapiConversation.iter)     | Error of string   val loop : ('-> ('a, 'b) GapiConversation.iter) -> '-> 'b end