Unity Scopes API
OnlineAccountClient.h
1 /*
2  * Copyright (C) 2014 Canonical Ltd
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License version 3 as
6  * published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Authored by: Marcus Tomlinson <marcus.tomlinson@canonical.com>
17  */
18 
19 #pragma once
20 
21 #include <unity/scopes/CannedQuery.h>
22 #include <unity/scopes/PreviewWidget.h>
23 #include <unity/scopes/Result.h>
24 #include <unity/util/NonCopyable.h>
25 
26 #include <memory>
27 
28 namespace unity
29 {
30 
31 namespace scopes
32 {
33 
34 namespace internal
35 {
36 class OnlineAccountClientImpl;
37 }
38 
39 namespace testing
40 {
41 class OnlineAccountClientTest;
42 }
43 
51 {
52 public:
54  NONCOPYABLE(OnlineAccountClient);
56 
61  {
62  unsigned int account_id;
65  std::string client_id;
66  std::string client_secret;
67  std::string access_token;
68  std::string token_secret;
69  std::string error;
70  };
71 
79  {
82  };
83 
92  OnlineAccountClient(std::string const& service_name,
93  std::string const& service_type,
94  std::string const& provider_name,
95  MainLoopSelect main_loop_select = CreateInternalMainLoop);
96 
100 
105  typedef std::function<void(ServiceStatus const&)> ServiceUpdateCallback;
106 
111  void set_service_update_callback(ServiceUpdateCallback callback);
112 
120 
126  std::vector<ServiceStatus> get_service_statuses();
127 
132  {
138  };
139 
147  void register_account_login_item(Result& result,
148  CannedQuery const& query,
149  PostLoginAction login_passed_action,
150  PostLoginAction login_failed_action);
151 
159  PostLoginAction login_passed_action,
160  PostLoginAction login_failed_action);
161 
162 private:
163  std::unique_ptr<internal::OnlineAccountClientImpl> p;
164 
165  friend class testing::OnlineAccountClientTest;
166 };
167 
168 } // namespace scopes
169 
170 } // namespace unity
A simple interface for integrating online accounts access and monitoring into scopes.
Definition: OnlineAccountClient.h:50
Simply return to the scope with no further action.
Definition: OnlineAccountClient.h:134
std::string client_secret
"ClientSecret" / "ConsumerSecret" OAuth (1 / 2) parameter.
Definition: OnlineAccountClient.h:66
std::string access_token
"AccessToken" OAuth parameter.
Definition: OnlineAccountClient.h:67
void set_service_update_callback(ServiceUpdateCallback callback)
Set the callback function to be invoked when a service status changes.
Definition: OnlineAccountClient.cpp:40
std::string error
Error message (empty if no error occurred).
Definition: OnlineAccountClient.h:69
The attributes of a result returned by a Scope.
Definition: Result.h:50
Definition: OnlineAccountClient.h:39
PostLoginAction
Indicates what action to take when the login process completes.
Definition: OnlineAccountClient.h:131
unsigned int account_id
A unique ID of the online account parenting this service.
Definition: OnlineAccountClient.h:62
std::string token_secret
"TokenSecret" OAuth parameter.
Definition: OnlineAccountClient.h:68
Top-level namespace for all things Unity-related.
Definition: Version.h:49
An external main loop already exists and is running.
Definition: OnlineAccountClient.h:80
Definition: ActionMetadata.h:31
MainLoopSelect
Indicates whether an external main loop already exists, or one should be created internally.
Definition: OnlineAccountClient.h:78
OnlineAccountClient(std::string const &service_name, std::string const &service_type, std::string const &provider_name, MainLoopSelect main_loop_select=CreateInternalMainLoop)
Create OnlineAccountClient for the specified account service.
Definition: OnlineAccountClient.cpp:28
An external main loop does not exist.
Definition: OnlineAccountClient.h:81
Parameters of a search query.
Definition: CannedQuery.h:49
void register_account_login_item(Result &result, CannedQuery const &query, PostLoginAction login_passed_action, PostLoginAction login_failed_action)
Register a result item that requires the user to be logged in.
Definition: OnlineAccountClient.cpp:55
bool service_enabled
True if this service is enabled.
Definition: OnlineAccountClient.h:63
A widget for a preview.
Definition: PreviewWidget.h:47
std::function< void(ServiceStatus const &)> ServiceUpdateCallback
Function signature for the service update callback.
Definition: OnlineAccountClient.h:105
Invalidate the scope results.
Definition: OnlineAccountClient.h:135
An action unknown to the run-time was used.
Definition: OnlineAccountClient.h:133
Continue with regular result / widget activation.
Definition: OnlineAccountClient.h:136
bool service_authenticated
True if this service is authenticated.
Definition: OnlineAccountClient.h:64
void refresh_service_statuses()
Refresh all service statuses.
Definition: OnlineAccountClient.cpp:45
A container for details about a service's status and authorization parameters.
Definition: OnlineAccountClient.h:60
Dummy end marker.
Definition: OnlineAccountClient.h:137
std::string client_id
"ConsumerKey" / "ClientId" OAuth (1 / 2) parameter.
Definition: OnlineAccountClient.h:65
std::vector< ServiceStatus > get_service_statuses()
Get statuses for all services matching the name, type and provider specified on construction.
Definition: OnlineAccountClient.cpp:50