From 3a979915f5f6276e01b22ad1be335ac08439b18d Mon Sep 17 00:00:00 2001 From: Jocelyn Fiat Date: Fri, 4 May 2012 12:37:51 +0200 Subject: [PATCH] Removed HTTP_CLIENT_SESSION.post_multipart .. because it was not doing what the name might evoque Restrict export of HTTP_CLIENT_REQUEST_CONTEXT.upload_data and upload_filename (and related) to .._SESSION and .._REQUEST this is mainly internal data, and is more about implementation than interface --- .../src/http_client_request_context.e | 34 +++++++------ .../http_client/src/http_client_session.e | 6 --- .../libcurl/libcurl_http_client_session.e | 50 ++++++++++--------- 3 files changed, 46 insertions(+), 44 deletions(-) diff --git a/library/client/http_client/src/http_client_request_context.e b/library/client/http_client/src/http_client_request_context.e index 51ccf90a..baf66a7e 100644 --- a/library/client/http_client/src/http_client_request_context.e +++ b/library/client/http_client/src/http_client_request_context.e @@ -62,18 +62,20 @@ feature -- Access form_parameters: HASH_TABLE [READABLE_STRING_32, READABLE_STRING_32] -- Form parameters + proxy: detachable TUPLE [host: READABLE_STRING_8; port: INTEGER] + -- Optional proxy, see {HTTP_CLIENT_SESSION}.proxy + +feature {HTTP_CLIENT_REQUEST, HTTP_CLIENT_SESSION} -- Internal access + upload_data: detachable READABLE_STRING_8 -- Upload data --| Note: make sure to precise the Content-Type header upload_filename: detachable READABLE_STRING_8 -- Upload data read from `upload_filename' - --| Note: make sure to precise the Content-Type header + --| Note: make sure to precise the Content-Type header - proxy: detachable TUPLE [host: READABLE_STRING_8; port: INTEGER] - -- Optional proxy, see {HTTP_CLIENT_SESSION}.proxy - -feature -- Status report +feature {HTTP_CLIENT_REQUEST, HTTP_CLIENT_SESSION} -- Status report has_form_data: BOOLEAN do @@ -112,6 +114,19 @@ feature -- Element change credentials_required := b end +feature -- Status setting + + set_proxy (a_host: detachable READABLE_STRING_8; a_port: INTEGER) + do + if a_host = Void then + proxy := Void + else + proxy := [a_host, a_port] + end + end + +feature {HTTP_CLIENT_REQUEST, HTTP_CLIENT_SESSION} -- Internal Element change + set_upload_data (a_data: like upload_data) require has_no_upload_data: not has_upload_data @@ -126,15 +141,6 @@ feature -- Element change upload_filename := a_fn end - set_proxy (a_host: detachable READABLE_STRING_8; a_port: INTEGER) - do - if a_host = Void then - proxy := Void - else - proxy := [a_host, a_port] - end - end - feature -- Conversion helpers query_parameters_to_url_encoded_string: STRING_8 diff --git a/library/client/http_client/src/http_client_session.e b/library/client/http_client/src/http_client_session.e index 59c3eb30..7e273765 100644 --- a/library/client/http_client/src/http_client_session.e +++ b/library/client/http_client/src/http_client_session.e @@ -98,12 +98,6 @@ feature -- Basic operation deferred end - post_multipart (a_path: READABLE_STRING_8; ctx: detachable HTTP_CLIENT_REQUEST_CONTEXT; data: detachable READABLE_STRING_8; fn: detachable READABLE_STRING_8): HTTP_CLIENT_RESPONSE - -- Response for POST request based on Current, `a_path' and `ctx' - -- with `data' and uploaded file `fn' - deferred - end - put (a_path: READABLE_STRING_8; ctx: detachable HTTP_CLIENT_REQUEST_CONTEXT; data: detachable READABLE_STRING_8): HTTP_CLIENT_RESPONSE -- Response for PUT request based on Current, `a_path' and `ctx' -- with input `data' diff --git a/library/client/http_client/src/spec/libcurl/libcurl_http_client_session.e b/library/client/http_client/src/spec/libcurl/libcurl_http_client_session.e index bc09c5c9..aaf69bbd 100644 --- a/library/client/http_client/src/spec/libcurl/libcurl_http_client_session.e +++ b/library/client/http_client/src/spec/libcurl/libcurl_http_client_session.e @@ -43,34 +43,12 @@ feature -- Basic operation post (a_path: READABLE_STRING_8; a_ctx: detachable HTTP_CLIENT_REQUEST_CONTEXT; data: detachable READABLE_STRING_8): HTTP_CLIENT_RESPONSE do - Result := post_multipart (a_path, a_ctx, data, Void) + Result := impl_post (a_path, a_ctx, data, Void) end post_file (a_path: READABLE_STRING_8; a_ctx: detachable HTTP_CLIENT_REQUEST_CONTEXT; fn: detachable READABLE_STRING_8): HTTP_CLIENT_RESPONSE do - Result := post_multipart (a_path, a_ctx, Void, fn) - end - - post_multipart (a_path: READABLE_STRING_8; a_ctx: detachable HTTP_CLIENT_REQUEST_CONTEXT; data: detachable READABLE_STRING_8; fn: detachable READABLE_STRING_8): HTTP_CLIENT_RESPONSE - local - req: HTTP_CLIENT_REQUEST - ctx: detachable HTTP_CLIENT_REQUEST_CONTEXT - do - ctx := a_ctx - if data /= Void then - if ctx = Void then - create ctx.make - end - ctx.set_upload_data (data) - end - if fn /= Void then - if ctx = Void then - create ctx.make - end - ctx.set_upload_filename (fn) - end - create {LIBCURL_HTTP_CLIENT_REQUEST} req.make (base_url + a_path, "POST", Current, ctx) - Result := req.execute + Result := impl_post (a_path, a_ctx, Void, fn) end put (a_path: READABLE_STRING_8; a_ctx: detachable HTTP_CLIENT_REQUEST_CONTEXT; data: detachable READABLE_STRING_8): HTTP_CLIENT_RESPONSE @@ -113,6 +91,30 @@ feature -- Basic operation Result := req.execute end +feature {NONE} -- Implementation + + impl_post (a_path: READABLE_STRING_8; a_ctx: detachable HTTP_CLIENT_REQUEST_CONTEXT; data: detachable READABLE_STRING_8; fn: detachable READABLE_STRING_8): HTTP_CLIENT_RESPONSE + local + req: HTTP_CLIENT_REQUEST + ctx: detachable HTTP_CLIENT_REQUEST_CONTEXT + do + ctx := a_ctx + if data /= Void then + if ctx = Void then + create ctx.make + end + ctx.set_upload_data (data) + end + if fn /= Void then + if ctx = Void then + create ctx.make + end + ctx.set_upload_filename (fn) + end + create {LIBCURL_HTTP_CLIENT_REQUEST} req.make (base_url + a_path, "POST", Current, ctx) + Result := req.execute + end + feature {LIBCURL_HTTP_CLIENT_REQUEST} -- Curl implementation curl: CURL_EXTERNALS