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

Side by Side Diff: chrome/browser/sync/internal_api/syncapi_server_connection_manager.cc

Issue 10147003: [Sync] Move 'syncapi_core' and 'sync_unit_tests' targets to sync/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix Win update errors Created 8 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/sync/internal_api/syncapi_server_connection_manager.h"
6
7 #include "chrome/browser/sync/internal_api/http_post_provider_factory.h"
8 #include "chrome/browser/sync/internal_api/http_post_provider_interface.h"
9 #include "net/base/net_errors.h"
10 #include "net/http/http_status_code.h"
11
12 using browser_sync::HttpResponse;
13
14 namespace sync_api {
15
16 SyncAPIBridgedConnection::SyncAPIBridgedConnection(
17 browser_sync::ServerConnectionManager* scm,
18 HttpPostProviderFactory* factory)
19 : Connection(scm), factory_(factory) {
20 post_provider_ = factory_->Create();
21 }
22
23 SyncAPIBridgedConnection::~SyncAPIBridgedConnection() {
24 DCHECK(post_provider_);
25 factory_->Destroy(post_provider_);
26 post_provider_ = NULL;
27 }
28
29 bool SyncAPIBridgedConnection::Init(const char* path,
30 const std::string& auth_token,
31 const std::string& payload,
32 HttpResponse* response) {
33 std::string sync_server;
34 int sync_server_port = 0;
35 bool use_ssl = false;
36 GetServerParams(&sync_server, &sync_server_port, &use_ssl);
37 std::string connection_url = MakeConnectionURL(sync_server, path, use_ssl);
38
39 HttpPostProviderInterface* http = post_provider_;
40 http->SetUserAgent(scm_->user_agent().c_str());
41 http->SetURL(connection_url.c_str(), sync_server_port);
42
43 if (!auth_token.empty()) {
44 const std::string& headers =
45 "Authorization: GoogleLogin auth=" + auth_token;
46 http->SetExtraRequestHeaders(headers.c_str());
47 }
48
49 // Must be octet-stream, or the payload may be parsed for a cookie.
50 http->SetPostPayload("application/octet-stream", payload.length(),
51 payload.data());
52
53 // Issue the POST, blocking until it finishes.
54 int error_code = 0;
55 int response_code = 0;
56 if (!http->MakeSynchronousPost(&error_code, &response_code)) {
57 DVLOG(1) << "Http POST failed, error returns: " << error_code;
58 response->server_status = error_code == net::ERR_ABORTED ?
59 HttpResponse::CONNECTION_UNAVAILABLE : HttpResponse::IO_ERROR;
60 return false;
61 }
62
63 // We got a server response, copy over response codes and content.
64 response->response_code = response_code;
65 response->content_length =
66 static_cast<int64>(http->GetResponseContentLength());
67 response->payload_length =
68 static_cast<int64>(http->GetResponseContentLength());
69 if (response->response_code < 400)
70 response->server_status = HttpResponse::SERVER_CONNECTION_OK;
71 else if (response->response_code == net::HTTP_UNAUTHORIZED)
72 response->server_status = HttpResponse::SYNC_AUTH_ERROR;
73 else
74 response->server_status = HttpResponse::SYNC_SERVER_ERROR;
75
76 response->update_client_auth_header =
77 http->GetResponseHeaderValue("Update-Client-Auth");
78
79 // Write the content into our buffer.
80 buffer_.assign(http->GetResponseContent(), http->GetResponseContentLength());
81 return true;
82 }
83
84 void SyncAPIBridgedConnection::Abort() {
85 DCHECK(post_provider_);
86 post_provider_->Abort();
87 }
88
89 SyncAPIServerConnectionManager::SyncAPIServerConnectionManager(
90 const std::string& server,
91 int port,
92 bool use_ssl,
93 const std::string& client_version,
94 HttpPostProviderFactory* factory)
95 : ServerConnectionManager(server, port, use_ssl, client_version),
96 post_provider_factory_(factory) {
97 DCHECK(post_provider_factory_.get());
98 }
99
100 SyncAPIServerConnectionManager::~SyncAPIServerConnectionManager() {}
101
102 browser_sync::ServerConnectionManager::Connection*
103 SyncAPIServerConnectionManager::MakeConnection() {
104 return new SyncAPIBridgedConnection(this, post_provider_factory_.get());
105 }
106
107 } // namespace sync_api
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698