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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 // Copyright (c) 2009 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/engine/net/syncapi_server_connection_manager.h"
6
7 #include "chrome/browser/sync/engine/net/http_return.h"
8 #include "chrome/browser/sync/engine/syncapi.h"
9
10 using browser_sync::HttpResponse;
11 using std::string;
12
13 namespace sync_api {
14
15 bool SyncAPIBridgedPost::Init(const char* path, const string& auth_token,
16 const string& payload, HttpResponse* response) {
17 string sync_server;
18 int sync_server_port = 0;
19 bool use_ssl = false;
20 GetServerParams(&sync_server, &sync_server_port, &use_ssl);
21 std::string connection_url = MakeConnectionURL(sync_server, path, use_ssl);
22
23 HttpPostProviderInterface* http = factory_->Create();
24 http->SetUserAgent(scm_->user_agent().c_str());
25 http->SetURL(connection_url.c_str(), sync_server_port);
26
27 if (!auth_token.empty()) {
28 string headers = "Authorization: GoogleLogin auth=" + auth_token;
29 http->SetExtraRequestHeaders(headers.c_str());
30 }
31
32 // Must be octet-stream, or the payload may be parsed for a cookie.
33 http->SetPostPayload("application/octet-stream", payload.length(),
34 payload.data());
35
36 // Issue the POST, blocking until it finishes.
37 int os_error_code = 0;
38 int response_code = 0;
39 if (!http->MakeSynchronousPost(&os_error_code, &response_code)) {
40 LOG(INFO) << "Http POST failed, error returns: " << os_error_code;
41 response->server_status = HttpResponse::IO_ERROR;
42 return false;
43 }
44
45 // We got a server response, copy over response codes and content.
46 response->response_code = response_code;
47 response->content_length =
48 static_cast<int64>(http->GetResponseContentLength());
49 response->payload_length =
50 static_cast<int64>(http->GetResponseContentLength());
51 if (response->response_code < 400)
52 response->server_status = HttpResponse::SERVER_CONNECTION_OK;
53 else if (response->response_code == browser_sync::RC_UNAUTHORIZED)
54 response->server_status = HttpResponse::SYNC_AUTH_ERROR;
55 else
56 response->server_status = HttpResponse::SYNC_SERVER_ERROR;
57
58 // Write the content into our buffer.
59 buffer_.assign(http->GetResponseContent(), http->GetResponseContentLength());
60
61 // We're done with the HttpPostProvider.
62 factory_->Destroy(http);
63 return true;
64 }
65
66 SyncAPIServerConnectionManager::~SyncAPIServerConnectionManager() {
67 delete post_provider_factory_;
68 }
69
70 void SyncAPIServerConnectionManager::SetHttpPostProviderFactory(
71 HttpPostProviderFactory* factory) {
72 if (post_provider_factory_)
73 delete post_provider_factory_;
74 post_provider_factory_ = factory;
75 }
76
77 } // namespace sync_api
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698