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

Side by Side Diff: chrome/browser/local_discovery/privetv3_session.cc

Issue 878463002: Fixed Privet v3 auth header. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@patches
Patch Set: Mon 01/26/2015 12:51:10.46 Created 5 years, 11 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
« no previous file with comments | « chrome/browser/local_discovery/privetv3_session.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/local_discovery/privetv3_session.h" 5 #include "chrome/browser/local_discovery/privetv3_session.h"
6 6
7 #include "base/json/json_writer.h" 7 #include "base/json/json_writer.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "chrome/browser/local_discovery/privet_constants.h"
10 #include "chrome/browser/local_discovery/privet_http.h" 11 #include "chrome/browser/local_discovery/privet_http.h"
11 #include "chrome/browser/local_discovery/privet_url_fetcher.h" 12 #include "chrome/browser/local_discovery/privet_url_fetcher.h"
12 #include "chrome/common/cloud_print/cloud_print_constants.h" 13 #include "chrome/common/cloud_print/cloud_print_constants.h"
13 #include "url/gurl.h" 14 #include "url/gurl.h"
14 15
15 namespace local_discovery { 16 namespace local_discovery {
16 17
17 namespace { 18 namespace {
18 19
19 const char kUrlPlaceHolder[] = "http://host/"; 20 const char kUrlPlaceHolder[] = "http://host/";
20 21
21 const char kStubPrivetCode[] = "1234"; 22 const char kStubPrivetCode[] = "1234";
22 23
24 const char kPrivetV3AuthAnonymous[] = "Privet anonymous";
25
23 GURL CreatePrivetURL(const std::string& path) { 26 GURL CreatePrivetURL(const std::string& path) {
24 GURL url(kUrlPlaceHolder); 27 GURL url(kUrlPlaceHolder);
25 GURL::Replacements replacements; 28 GURL::Replacements replacements;
26 replacements.SetPathStr(path); 29 replacements.SetPathStr(path);
27 return url.ReplaceComponents(replacements); 30 return url.ReplaceComponents(replacements);
28 } 31 }
29 32
30 } // namespace 33 } // namespace
31 34
32 class PrivetV3Session::FetcherDelegate : public PrivetURLFetcher::Delegate { 35 class PrivetV3Session::FetcherDelegate : public PrivetURLFetcher::Delegate {
33 public: 36 public:
34 FetcherDelegate(const base::WeakPtr<PrivetV3Session>& session, 37 FetcherDelegate(const base::WeakPtr<PrivetV3Session>& session,
38 const std::string& auth_token,
35 const PrivetV3Session::MessageCallback& callback); 39 const PrivetV3Session::MessageCallback& callback);
36 ~FetcherDelegate() override; 40 ~FetcherDelegate() override;
37 41
38 // PrivetURLFetcher::Delegate methods. 42 // PrivetURLFetcher::Delegate methods.
43 std::string GetAuthToken() override;
39 void OnNeedPrivetToken( 44 void OnNeedPrivetToken(
40 PrivetURLFetcher* fetcher, 45 PrivetURLFetcher* fetcher,
41 const PrivetURLFetcher::TokenCallback& callback) override; 46 const PrivetURLFetcher::TokenCallback& callback) override;
42 void OnError(PrivetURLFetcher* fetcher, 47 void OnError(PrivetURLFetcher* fetcher,
43 PrivetURLFetcher::ErrorType error) override; 48 PrivetURLFetcher::ErrorType error) override;
44 void OnParsedJson(PrivetURLFetcher* fetcher, 49 void OnParsedJson(PrivetURLFetcher* fetcher,
45 const base::DictionaryValue& value, 50 const base::DictionaryValue& value,
46 bool has_error) override; 51 bool has_error) override;
47 52
48 private: 53 private:
49 friend class PrivetV3Session; 54 friend class PrivetV3Session;
50 void DeleteThis(); 55 void DeleteThis();
51 56
52 scoped_ptr<PrivetURLFetcher> url_fetcher_; 57 scoped_ptr<PrivetURLFetcher> url_fetcher_;
53 base::WeakPtr<PrivetV3Session> session_; 58 base::WeakPtr<PrivetV3Session> session_;
59 std::string auth_token_;
54 MessageCallback callback_; 60 MessageCallback callback_;
55 }; 61 };
56 62
57 PrivetV3Session::FetcherDelegate::FetcherDelegate( 63 PrivetV3Session::FetcherDelegate::FetcherDelegate(
58 const base::WeakPtr<PrivetV3Session>& session, 64 const base::WeakPtr<PrivetV3Session>& session,
65 const std::string& auth_token,
59 const PrivetV3Session::MessageCallback& callback) 66 const PrivetV3Session::MessageCallback& callback)
60 : session_(session), callback_(callback) { 67 : session_(session), auth_token_(auth_token), callback_(callback) {
61 } 68 }
62 69
63 PrivetV3Session::FetcherDelegate::~FetcherDelegate() { 70 PrivetV3Session::FetcherDelegate::~FetcherDelegate() {
64 } 71 }
65 72
73 std::string PrivetV3Session::FetcherDelegate::GetAuthToken() {
74 return auth_token_;
75 }
76
66 void PrivetV3Session::FetcherDelegate::OnNeedPrivetToken( 77 void PrivetV3Session::FetcherDelegate::OnNeedPrivetToken(
67 PrivetURLFetcher* fetcher, 78 PrivetURLFetcher* fetcher,
68 const PrivetURLFetcher::TokenCallback& callback) { 79 const PrivetURLFetcher::TokenCallback& callback) {
69 NOTREACHED(); 80 NOTREACHED();
81 OnError(fetcher, PrivetURLFetcher::URL_FETCH_ERROR);
70 } 82 }
71 83
72 void PrivetV3Session::FetcherDelegate::OnError( 84 void PrivetV3Session::FetcherDelegate::OnError(
73 PrivetURLFetcher* fetcher, 85 PrivetURLFetcher* fetcher,
74 PrivetURLFetcher::ErrorType error) { 86 PrivetURLFetcher::ErrorType error) {
75 if (session_) { 87 if (session_) {
76 DeleteThis(); 88 DeleteThis();
77 callback_.Run(Result::STATUS_CONNECTIONERROR, base::DictionaryValue()); 89 callback_.Run(Result::STATUS_CONNECTIONERROR, base::DictionaryValue());
78 } 90 }
79 } 91 }
(...skipping 16 matching lines...) Expand all
96 } 108 }
97 109
98 PrivetV3Session::PrivetV3Session(scoped_ptr<PrivetHTTPClient> client) 110 PrivetV3Session::PrivetV3Session(scoped_ptr<PrivetHTTPClient> client)
99 : client_(client.Pass()), code_confirmed_(false), weak_ptr_factory_(this) { 111 : client_(client.Pass()), code_confirmed_(false), weak_ptr_factory_(this) {
100 } 112 }
101 113
102 PrivetV3Session::~PrivetV3Session() { 114 PrivetV3Session::~PrivetV3Session() {
103 } 115 }
104 116
105 void PrivetV3Session::Init(const InitCallback& callback) { 117 void PrivetV3Session::Init(const InitCallback& callback) {
118 privet_auth_token_ = kPrivetV3AuthAnonymous;
119
106 // TODO: call /info. 120 // TODO: call /info.
107 base::MessageLoop::current()->PostDelayedTask( 121 base::MessageLoop::current()->PostDelayedTask(
108 FROM_HERE, 122 FROM_HERE,
109 base::Bind(&PrivetV3Session::RunCallback, weak_ptr_factory_.GetWeakPtr(), 123 base::Bind(&PrivetV3Session::RunCallback, weak_ptr_factory_.GetWeakPtr(),
110 base::Bind(callback, Result::STATUS_SUCCESS, 124 base::Bind(callback, Result::STATUS_SUCCESS,
111 std::vector<PairingType>( 125 std::vector<PairingType>(
112 1, PairingType::PAIRING_TYPE_EMBEDDEDCODE))), 126 1, PairingType::PAIRING_TYPE_EMBEDDEDCODE))),
113 base::TimeDelta::FromSeconds(1)); 127 base::TimeDelta::FromSeconds(1));
114 } 128 }
115 129
(...skipping 17 matching lines...) Expand all
133 callback.Run(Result::STATUS_BADPAIRINGCODEERROR); 147 callback.Run(Result::STATUS_BADPAIRINGCODEERROR);
134 } 148 }
135 } 149 }
136 150
137 void PrivetV3Session::SendMessage(const std::string& api, 151 void PrivetV3Session::SendMessage(const std::string& api,
138 const base::DictionaryValue& input, 152 const base::DictionaryValue& input,
139 const MessageCallback& callback) { 153 const MessageCallback& callback) {
140 if (!code_confirmed_) 154 if (!code_confirmed_)
141 return callback.Run(Result::STATUS_SESSIONERROR, base::DictionaryValue()); 155 return callback.Run(Result::STATUS_SESSIONERROR, base::DictionaryValue());
142 156
143 FetcherDelegate* fetcher_delegate( 157 FetcherDelegate* fetcher_delegate(new FetcherDelegate(
144 new FetcherDelegate(weak_ptr_factory_.GetWeakPtr(), callback)); 158 weak_ptr_factory_.GetWeakPtr(), privet_auth_token_, callback));
145 fetchers_.push_back(fetcher_delegate); 159 fetchers_.push_back(fetcher_delegate);
146 160
147 scoped_ptr<PrivetURLFetcher> url_fetcher(client_->CreateURLFetcher( 161 scoped_ptr<PrivetURLFetcher> url_fetcher(client_->CreateURLFetcher(
148 CreatePrivetURL(api), net::URLFetcher::POST, fetcher_delegate)); 162 CreatePrivetURL(api), net::URLFetcher::POST, fetcher_delegate));
149 163
150 std::string json; 164 std::string json;
151 base::JSONWriter::WriteWithOptions( 165 base::JSONWriter::WriteWithOptions(
152 &input, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json); 166 &input, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json);
153 url_fetcher->SetUploadData(cloud_print::kContentTypeJSON, json); 167 url_fetcher->SetUploadData(cloud_print::kContentTypeJSON, json);
154 168
155 fetcher_delegate->url_fetcher_ = url_fetcher.Pass(); 169 fetcher_delegate->url_fetcher_ = url_fetcher.Pass();
156 fetcher_delegate->url_fetcher_->V3Mode(); 170 fetcher_delegate->url_fetcher_->V3Mode();
157 fetcher_delegate->url_fetcher_->Start(); 171 fetcher_delegate->url_fetcher_->Start();
158 } 172 }
159 173
160 void PrivetV3Session::RunCallback(const base::Closure& callback) { 174 void PrivetV3Session::RunCallback(const base::Closure& callback) {
161 callback.Run(); 175 callback.Run();
162 } 176 }
163 177
164 void PrivetV3Session::DeleteFetcher(const FetcherDelegate* fetcher) { 178 void PrivetV3Session::DeleteFetcher(const FetcherDelegate* fetcher) {
165 fetchers_.erase(std::find(fetchers_.begin(), fetchers_.end(), fetcher)); 179 fetchers_.erase(std::find(fetchers_.begin(), fetchers_.end(), fetcher));
166 } 180 }
167 181
168 } // namespace local_discovery 182 } // namespace local_discovery
OLDNEW
« no previous file with comments | « chrome/browser/local_discovery/privetv3_session.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698