sig   type destination =       TargetFile of string     | StringBuffer of Buffer.t     | ArrayBuffer of         (char, Bigarray.int8_unsigned_elt, Bigarray.c_layout)         Bigarray.Array1.t   type download = {     destination : GapiMediaResource.destination;     range_spec : string;   }   val destination :     (GapiMediaResource.download, GapiMediaResource.destination) GapiLens.t   val range_spec : (GapiMediaResource.download, string) GapiLens.t   val create_out_channel :     GapiMediaResource.download -> Netchannels.out_obj_channel   val create_in_channel :     ?discard_on_close:bool ->     GapiMediaResource.download -> Netchannels.in_obj_channel   val generate_download_headers :     GapiMediaResource.download -> GapiCore.Header.t list   val generate_range_spec : (int64 option * int64 option) list -> string   type source =       File of string     | String of string     | Buffer of         (char, Bigarray.int8_unsigned_elt, Bigarray.c_layout)         Bigarray.Array1.t   type t = {     source : GapiMediaResource.source;     name : string;     content_type : string;     content_length : int64;   }   val source : (GapiMediaResource.t, GapiMediaResource.source) GapiLens.t   val name : (GapiMediaResource.t, string) GapiLens.t   val content_type : (GapiMediaResource.t, string) GapiLens.t   val content_length : (GapiMediaResource.t, int64) GapiLens.t   type state = Request | Uploading | Done | Error   type upload_state = {     state : GapiMediaResource.state;     resource : GapiMediaResource.t;     chunk_size : int;     current_offset : int64;   }   val state :     (GapiMediaResource.upload_state, GapiMediaResource.state) GapiLens.t   val resource :     (GapiMediaResource.upload_state, GapiMediaResource.t) GapiLens.t   val chunk_size : (GapiMediaResource.upload_state, int) GapiLens.t   val current_offset : (GapiMediaResource.upload_state, int64) GapiLens.t   val create_file_resource : string -> GapiMediaResource.t   val setup_upload :     ?chunk_size:int -> GapiMediaResource.t -> GapiMediaResource.upload_state   val setup_file_upload :     ?chunk_size:int -> string -> GapiMediaResource.upload_state   val generate_upload_headers :     GapiCore.HttpMethod.t ->     GapiMediaResource.upload_state -> GapiCore.Header.t list   val update_upload_state :     string ->     GapiMediaResource.upload_state -> GapiMediaResource.upload_state   val get_post_data : GapiMediaResource.upload_state -> GapiCore.PostData.t end