Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3128)

Unified Diff: chrome/browser/sync/engine/net/syncapi_server_connection_manager.cc

Issue 194065: Initial commit of sync engine code to browser/sync.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Fixes to gtest include path, reverted syncapi. Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync/engine/net/syncapi_server_connection_manager.cc
===================================================================
--- chrome/browser/sync/engine/net/syncapi_server_connection_manager.cc (revision 0)
+++ chrome/browser/sync/engine/net/syncapi_server_connection_manager.cc (revision 0)
@@ -0,0 +1,77 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/sync/engine/net/syncapi_server_connection_manager.h"
+
+#include "chrome/browser/sync/engine/net/http_return.h"
+#include "chrome/browser/sync/engine/syncapi.h"
+
+using browser_sync::HttpResponse;
+using std::string;
+
+namespace sync_api {
+
+bool SyncAPIBridgedPost::Init(const char* path, const string& auth_token,
+ const string& payload, HttpResponse* response) {
+ string sync_server;
+ int sync_server_port = 0;
+ bool use_ssl = false;
+ GetServerParams(&sync_server, &sync_server_port, &use_ssl);
+ std::string connection_url = MakeConnectionURL(sync_server, path, use_ssl);
+
+ HttpPostProviderInterface* http = factory_->Create();
+ http->SetUserAgent(scm_->user_agent().c_str());
+ http->SetURL(connection_url.c_str(), sync_server_port);
+
+ if (!auth_token.empty()) {
+ string headers = "Authorization: GoogleLogin auth=" + auth_token;
+ http->SetExtraRequestHeaders(headers.c_str());
+ }
+
+ // Must be octet-stream, or the payload may be parsed for a cookie.
+ http->SetPostPayload("application/octet-stream", payload.length(),
+ payload.data());
+
+ // Issue the POST, blocking until it finishes.
+ int os_error_code = 0;
+ int response_code = 0;
+ if (!http->MakeSynchronousPost(&os_error_code, &response_code)) {
+ LOG(INFO) << "Http POST failed, error returns: " << os_error_code;
+ response->server_status = HttpResponse::IO_ERROR;
+ return false;
+ }
+
+ // We got a server response, copy over response codes and content.
+ response->response_code = response_code;
+ response->content_length =
+ static_cast<int64>(http->GetResponseContentLength());
+ response->payload_length =
+ static_cast<int64>(http->GetResponseContentLength());
+ if (response->response_code < 400)
+ response->server_status = HttpResponse::SERVER_CONNECTION_OK;
+ else if (response->response_code == browser_sync::RC_UNAUTHORIZED)
+ response->server_status = HttpResponse::SYNC_AUTH_ERROR;
+ else
+ response->server_status = HttpResponse::SYNC_SERVER_ERROR;
+
+ // Write the content into our buffer.
+ buffer_.assign(http->GetResponseContent(), http->GetResponseContentLength());
+
+ // We're done with the HttpPostProvider.
+ factory_->Destroy(http);
+ return true;
+}
+
+SyncAPIServerConnectionManager::~SyncAPIServerConnectionManager() {
+ delete post_provider_factory_;
+}
+
+void SyncAPIServerConnectionManager::SetHttpPostProviderFactory(
+ HttpPostProviderFactory* factory) {
+ if (post_provider_factory_)
+ delete post_provider_factory_;
+ post_provider_factory_ = factory;
+}
+
+} // namespace sync_api
Property changes on: chrome\browser\sync\engine\net\syncapi_server_connection_manager.cc
___________________________________________________________________
Added: svn:eol-style
+ LF

Powered by Google App Engine
This is Rietveld 408576698