Fixed Privet v3 auth header.
[chromium-blink-merge.git] / chrome / browser / local_discovery / privetv3_session.h
blob648eef7a7715907fa5a43536334af7fbbbc804f8
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
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_LOCAL_DISCOVERY_PRIVETV3_SESSION_H_
6 #define CHROME_BROWSER_LOCAL_DISCOVERY_PRIVETV3_SESSION_H_
8 #include <string>
10 #include "base/callback.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "base/memory/scoped_vector.h"
13 #include "base/memory/weak_ptr.h"
14 #include "chrome/common/extensions/api/gcd_private.h"
16 namespace base {
17 class DictionaryValue;
20 namespace local_discovery {
22 class PrivetHTTPClient;
24 // Manages secure communication between browser and local Privet device.
25 class PrivetV3Session {
26 private:
27 class FetcherDelegate;
29 public:
30 typedef extensions::api::gcd_private::PairingType PairingType;
31 typedef extensions::api::gcd_private::Status Result;
33 typedef base::Callback<
34 void(Result result, const std::vector<PairingType>& types)> InitCallback;
36 typedef base::Callback<void(Result result)> ResultCallback;
37 typedef base::Callback<void(Result result,
38 const base::DictionaryValue& response)>
39 MessageCallback;
41 explicit PrivetV3Session(scoped_ptr<PrivetHTTPClient> client);
42 ~PrivetV3Session();
44 // Initialized session.
45 void Init(const InitCallback& callback);
47 void StartPairing(PairingType pairing_type, const ResultCallback& callback);
49 void ConfirmCode(const std::string& code, const ResultCallback& callback);
51 // Create a single /privet/v3/session/call request.
52 void SendMessage(const std::string& api,
53 const base::DictionaryValue& input,
54 const MessageCallback& callback);
56 private:
57 void RunCallback(const base::Closure& callback);
58 void DeleteFetcher(const FetcherDelegate* fetcher);
60 scoped_ptr<PrivetHTTPClient> client_;
61 bool code_confirmed_;
62 ScopedVector<FetcherDelegate> fetchers_;
63 std::string privet_auth_token_;
65 base::WeakPtrFactory<PrivetV3Session> weak_ptr_factory_;
66 DISALLOW_COPY_AND_ASSIGN(PrivetV3Session);
69 } // namespace local_discovery
71 #endif // CHROME_BROWSER_LOCAL_DISCOVERY_PRIVETV3_SESSION_H_