From fbb5091f948279b9a0f19bf9328b5520fabccf92 Mon Sep 17 00:00:00 2001 From: deepak1556 Date: Sun, 6 Dec 2015 15:27:02 -0500 Subject: [PATCH] provide option to set content for POST request with url_fetcher --- atom/browser/net/url_request_fetch_job.cc | 10 ++++++++++ docs/api/protocol.md | 7 ++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/atom/browser/net/url_request_fetch_job.cc b/atom/browser/net/url_request_fetch_job.cc index f04ecd4..8ffb6df 100644 --- a/atom/browser/net/url_request_fetch_job.cc +++ b/atom/browser/net/url_request_fetch_job.cc @@ -90,12 +90,14 @@ void URLRequestFetchJob::StartAsync(scoped_ptr options) { std::string url, method, referrer; base::Value* session = nullptr; + base::DictionaryValue* upload_data = nullptr; base::DictionaryValue* dict = static_cast(options.get()); dict->GetString("url", &url); dict->GetString("method", &method); dict->GetString("referrer", &referrer); dict->Get("session", &session); + dict->GetDictionary("uploadData", &upload_data); // Check if URL is valid. GURL formated_url(url); @@ -127,6 +129,14 @@ void URLRequestFetchJob::StartAsync(scoped_ptr options) { else fetcher_->SetReferrer(referrer); + // Set the data needed for POSTs. + if (upload_data && request_type == net::URLFetcher::POST) { + std::string content_type, data; + upload_data->GetString("contentType", &content_type); + upload_data->GetString("data", &data); + fetcher_->SetUploadData(content_type, data); + } + // Use |request|'s headers. fetcher_->SetExtraRequestHeaders( request()->extra_request_headers().ToString()); diff --git a/docs/api/protocol.md b/docs/api/protocol.md index 5f34165..f76d006 100644 --- a/docs/api/protocol.md +++ b/docs/api/protocol.md @@ -103,11 +103,16 @@ Registers a protocol of `scheme` that will send a `String` as a response. The Registers a protocol of `scheme` that will send an HTTP request as a response. The `callback` should be called with an object that has the `url`, `method`, -`referrer`, and `session` properties. +`referrer`, `uploadData` and `session` properties. By default the HTTP request will reuse the current session. If you want the request to have a different session you should set `session` to `null`. +POST request should provide an `uploadData` object. +* `uploadData` object + * `contentType` String - MIME type of the content. + * `data` String - Content to be sent. + ### `protocol.unregisterProtocol(scheme[, completion])` * `scheme` String -- 2.7.4