Skip to content

Commit

Permalink
Add HEAD http method
Browse files Browse the repository at this point in the history
  • Loading branch information
astrada committed Oct 1, 2013
1 parent 54ca7a4 commit b07a530
Show file tree
Hide file tree
Showing 10 changed files with 68 additions and 26 deletions.
3 changes: 3 additions & 0 deletions src/gapi/gapiConversation.ml
Expand Up @@ -163,6 +163,9 @@ let request
| GapiCore.HttpMethod.DELETE ->
GapiCurl.set_upload false session.Session.curl;
GapiCurl.set_nobody true session.Session.curl
| GapiCore.HttpMethod.HEAD ->
GapiCurl.set_upload false session.Session.curl;
GapiCurl.set_nobody true session.Session.curl
end;
begin match http_method with
GapiCore.HttpMethod.PATCH
Expand Down
7 changes: 7 additions & 0 deletions src/gapi/gapiCore.ml
Expand Up @@ -51,6 +51,7 @@ struct
| PUT
| DELETE
| PATCH
| HEAD

let to_string m =
match m with
Expand All @@ -59,6 +60,7 @@ struct
| PUT -> "PUT"
| DELETE -> "DELETE"
| PATCH -> "PATCH"
| HEAD -> "HEAD"

end

Expand Down Expand Up @@ -90,6 +92,7 @@ struct
| UploadContentType of string
| UploadContentLength of string
| Slug of string
| ContentLength of string
| KeyValueHeader of string * string
| OtherHeader of string

Expand Down Expand Up @@ -121,6 +124,8 @@ struct
"X-Upload-Content-Length: " ^ value
| Slug value ->
"Slug: " ^ value
| ContentLength value ->
"Content-Length: " ^ value
| KeyValueHeader (name, value) ->
name ^ ": " ^ value
| OtherHeader header ->
Expand Down Expand Up @@ -155,6 +160,8 @@ struct
UploadContentLength value
| "Slug" ->
Slug value
| "Content-Length" ->
ContentLength value
| _ ->
KeyValueHeader (key, value)
else
Expand Down
2 changes: 2 additions & 0 deletions src/gapi/gapiCore.mli
Expand Up @@ -41,6 +41,7 @@ sig
| PUT
| DELETE
| PATCH
| HEAD

val to_string : t -> string

Expand Down Expand Up @@ -72,6 +73,7 @@ sig
| UploadContentType of string
| UploadContentLength of string
| Slug of string
| ContentLength of string
| KeyValueHeader of string * string
| OtherHeader of string

Expand Down
7 changes: 4 additions & 3 deletions src/gapi/gapiOAuth1.ml
Expand Up @@ -90,9 +90,10 @@ let oauth_request
let post_data =
match http_method with
GapiCore.HttpMethod.GET
| GapiCore.HttpMethod.PUT (* TODO: verify *)
| GapiCore.HttpMethod.PATCH (* TODO: verify *)
| GapiCore.HttpMethod.DELETE -> None
| GapiCore.HttpMethod.PUT
| GapiCore.HttpMethod.PATCH
| GapiCore.HttpMethod.DELETE
| GapiCore.HttpMethod.HEAD -> None
| GapiCore.HttpMethod.POST -> Some (GapiCore.PostData.Fields post_fields_to_sign)
in
GapiConversation.request
Expand Down
11 changes: 7 additions & 4 deletions src/gapi/gapiRequest.ml
Expand Up @@ -22,6 +22,7 @@ type request_type =
| Update
| Patch
| Delete
| QueryMeta

let parse_empty_response _ =
()
Expand Down Expand Up @@ -54,13 +55,13 @@ let parse_response
200 (* OK *) ->
let location = get_location () in
if location = "" then
parse_output pipe
parse_output pipe headers
else
raise (StartUpload (location, session))
| 201 (* Created *)
| 204 (* No Content *)
| 206 (* Partial Content *) ->
parse_output pipe
parse_output pipe headers
| 302 (* Found *) ->
let url = get_location () in
raise (Redirect (url, session))
Expand Down Expand Up @@ -166,7 +167,8 @@ let single_request
| Create -> GapiCore.HttpMethod.POST
| Update -> GapiCore.HttpMethod.PUT
| Patch -> GapiCore.HttpMethod.PATCH
| Delete -> GapiCore.HttpMethod.DELETE in
| Delete -> GapiCore.HttpMethod.DELETE
| QueryMeta -> GapiCore.HttpMethod.HEAD in
let oauth1_params =
match auth_data with
GapiAuth.NoAuth
Expand All @@ -190,7 +192,8 @@ let single_request
let etag_header =
Option.map (fun e ->
match request_type with
Query ->
Query
| QueryMeta ->
Some (GapiCore.Header.IfNoneMatch e)
| Update
| Patch
Expand Down
3 changes: 2 additions & 1 deletion src/gapi/gapiRequest.mli
Expand Up @@ -19,6 +19,7 @@ type request_type =
| Update
| Patch
| Delete
| QueryMeta

val parse_empty_response : 'a -> unit

Expand All @@ -31,7 +32,7 @@ val gapi_request :
?parse_error:(GapiPipe.OcamlnetPipe.t -> int -> 'a) ->
request_type ->
string ->
(GapiPipe.OcamlnetPipe.t -> 'a) ->
(GapiPipe.OcamlnetPipe.t -> GapiCore.Header.t list -> 'a) ->
GapiConversation.Session.t ->
'a * GapiConversation.Session.t

32 changes: 24 additions & 8 deletions src/gapi/gapiService.ml
Expand Up @@ -88,7 +88,7 @@ let download_resource
?version
~request_type:GapiRequest.Query
url
GapiRequest.parse_empty_response
(fun pipe _ -> GapiRequest.parse_empty_response pipe)
session

let build_param default_params params get_value to_string name =
Expand Down Expand Up @@ -136,6 +136,22 @@ struct

end

let head
?etag
?query_parameters
?media_download
url
parse_headers
session =
service_request
?etag
?query_parameters
?media_download
~request_type:GapiRequest.QueryMeta
url
(fun _ headers -> parse_headers headers)
session

let get
?etag
?query_parameters
Expand All @@ -149,7 +165,7 @@ let get
?media_download
~request_type:GapiRequest.Query
url
parse_response
(fun pipe _ -> parse_response pipe)
session

let post
Expand All @@ -169,7 +185,7 @@ let post
?media_source
~request_type:GapiRequest.Create
url
parse_response
(fun pipe _ -> parse_response pipe)
session

let put
Expand All @@ -189,7 +205,7 @@ let put
?media_source
data
url
parse_response
(fun pipe _ -> parse_response pipe)
session

let put'
Expand All @@ -209,7 +225,7 @@ let put'
?media_source
~request_type:GapiRequest.Update
url
parse_response
(fun pipe _ -> parse_response pipe)
session

let patch
Expand All @@ -229,7 +245,7 @@ let patch
?media_source
data
url
parse_response
(fun pipe _ -> parse_response pipe)
session

let patch'
Expand All @@ -249,7 +265,7 @@ let patch'
?media_source
~request_type:GapiRequest.Patch
url
parse_response
(fun pipe _ -> parse_response pipe)
session

let delete
Expand All @@ -263,6 +279,6 @@ let delete
?query_parameters
~request_type:GapiRequest.Delete
url
parse_response
(fun pipe _ -> parse_response pipe)
session

13 changes: 11 additions & 2 deletions src/gapi/gapiService.mli
Expand Up @@ -12,7 +12,7 @@ val service_request :
?media_download:GapiMediaResource.download ->
?request_type:GapiRequest.request_type ->
string ->
(GapiPipe.OcamlnetPipe.t -> 'a) ->
(GapiPipe.OcamlnetPipe.t -> GapiCore.Header.t list -> 'a) ->
GapiConversation.Session.t ->
'a * GapiConversation.Session.t

Expand All @@ -26,7 +26,7 @@ val service_request_with_data :
?media_download:GapiMediaResource.download ->
'a ->
string ->
(GapiPipe.OcamlnetPipe.t -> 'a) ->
(GapiPipe.OcamlnetPipe.t -> GapiCore.Header.t list -> 'a) ->
GapiConversation.Session.t ->
'a * GapiConversation.Session.t

Expand Down Expand Up @@ -70,6 +70,15 @@ sig

end

val head :
?etag:string ->
?query_parameters:(string * string) list ->
?media_download:GapiMediaResource.download ->
string ->
(GapiCore.Header.t list -> 'a) ->
GapiConversation.Session.t ->
'a * GapiConversation.Session.t

val get :
?etag:string ->
?query_parameters:(string * string) list ->
Expand Down
2 changes: 1 addition & 1 deletion src/gdata/gdataDocumentsV3Service.ml
Expand Up @@ -436,7 +436,7 @@ let resumable_upload
~request_type:GapiRequest.Create
?query_parameters
url
parse_document_entry
(fun pipe _ -> parse_document_entry pipe)
session

(* Download *)
Expand Down
14 changes: 7 additions & 7 deletions src/gdata/gdataService.ml
Expand Up @@ -16,7 +16,7 @@ let query
?query_parameters
~request_type:GapiRequest.Query
url
parse_response
(fun pipe _ -> parse_response pipe)
session

let create
Expand All @@ -36,7 +36,7 @@ let create
?media_source
data
url
parse_response
(fun pipe _ -> parse_response pipe)
session

let read
Expand All @@ -51,7 +51,7 @@ let read
?version
?etag
url
parse_response
(fun pipe _ -> parse_response pipe)
session
with GapiRequest.NotModified new_session ->
(data, new_session)
Expand All @@ -75,7 +75,7 @@ let update
?media_source
data
url
parse_response
(fun pipe _ -> parse_response pipe)
session

let patch
Expand All @@ -97,7 +97,7 @@ let patch
?media_source
data
url
parse_response
(fun pipe _ -> parse_response pipe)
session

let delete
Expand All @@ -112,7 +112,7 @@ let delete
?query_parameters
~request_type:GapiRequest.Delete
url
GapiRequest.parse_empty_response
(fun pipe _ -> GapiRequest.parse_empty_response pipe)
session

let batch_request
Expand All @@ -128,6 +128,6 @@ let batch_request
?version
data
url
parse_response
(fun pipe _ -> parse_response pipe)
session

0 comments on commit b07a530

Please sign in to comment.