Twitch SDK (Internal)
socialapi.h
Go to the documentation of this file.
1 /********************************************************************************************
2 * Twitch Broadcasting SDK
3 *
4 * This software is supplied under the terms of a license agreement with Twitch Interactive, Inc. and
5 * may not be copied or used except in accordance with the terms of that agreement
6 * Copyright (c) 2012-2016 Twitch Interactive, Inc.
7 *********************************************************************************************/
8 
9 #pragma once
10 
11 #include "twitchsdk/core/coreapi.h"
12 #include "twitchsdk/core/module.h"
15 
16 #include <memory>
17 
18 namespace ttv
19 {
20  class TaskRunner;
21  class UserRepository;
22 
23  namespace social
24  {
25  class SocialAPI;
26  class ISocialAPIListener;
27  class FriendList;
28  class Presence;
29 
30  struct SocialAPIInternalData;
31  }
32 }
33 
34 
43 {
44 public:
45  using PostPresenceCallback = std::function<void(TTV_ErrorCode ec)>;
46  using FetchPresenceSettingsCallback = std::function<void(TTV_ErrorCode ec, const PresenceSettings& settings)>;
47  using SetPresenceSettingsCallback = std::function<void(TTV_ErrorCode ec)>;
48  using FetchFriendListCallback = std::function<void(TTV_ErrorCode ec, const std::vector<Friend>& friends)>;
49  using UpdateFriendshipCallback = std::function<void(TTV_ErrorCode ec, UpdateFriendResult result, FriendStatus status)>;
50  using FetchFriendRequestsCallback = std::function<void(TTV_ErrorCode ec, const std::vector<FriendRequest>& requests)>;
51  using FetchUnreadFriendRequestCountCallback = std::function<void(TTV_ErrorCode ec, uint32_t requestCount)>;
52  using MarkAllFriendRequestsReadCallback = std::function<void(TTV_ErrorCode ec)>;
53  using FetchFriendStatusCallback = std::function<void(TTV_ErrorCode ec, FriendStatus status)>;
54  using FetchRecommendedFriendsCallback = std::function<void(TTV_ErrorCode ec, const std::vector<UserInfo>& recommendedFriends)>;
55  using DismissRecommendedFriendCallback = std::function<void(TTV_ErrorCode ec)>;
56 
57  SocialAPI();
58  virtual ~SocialAPI();
59 
60  // IModule implementation
61  virtual std::string GetModuleName() const override;
62  virtual TTV_ErrorCode Initialize(const InitializeCallback& callback) override;
63  virtual TTV_ErrorCode Shutdown(const ShutdownCallback& callback) override;
64  virtual TTV_ErrorCode Update() override;
65 
66  TTV_ErrorCode SetCoreApi(const std::shared_ptr<CoreAPI>& coreApi);
67  TTV_ErrorCode SetListener(const std::shared_ptr<ISocialAPIListener>& listener);
69 
75  TTV_ErrorCode PostPresence(UserId userId, const PostPresenceCallback& callback);
76 
81 
87  TTV_ErrorCode AddWatchingActivity(UserId userId, ChannelId channelId, PresenceActivityToken& activityToken);
88 
95  TTV_ErrorCode AddPlayingActivity(UserId userId, GameId gameId, const std::string& gameDisplayContext, PresenceActivityToken& activityToken);
96 
101 
106 
121  TTV_ErrorCode SetPresenceSettings(UserId userId, const PresenceSettings& settings, const SetPresenceSettingsCallback& callback);
122 
127 
132 
137 
142  TTV_ErrorCode UpdateFriendship(UserId userId, UserId otherUserId, FriendAction action, const UpdateFriendshipCallback& callback);
143 
148 
153 
159 
164  TTV_ErrorCode FetchFriendStatus(UserId userId, UserId otherUserId, const FetchFriendStatusCallback& callback);
165 
170 
175 
176 private:
178  {
179  public:
180  CoreApiClient(SocialAPI* api);
181 
182  // ICoreApiClient implementation
183  virtual std::string GetClientName();
184  virtual void GetRequiredOAuthScopes(std::vector<std::string>& scopes);
185  virtual void CoreUserLoggedIn(std::shared_ptr<User> user);
186  virtual void CoreUserLoggedOut(std::shared_ptr<User> user);
187 
188  private:
190  };
191 
192  // ICoreApiClient implementation
193  void CoreUserLoggedIn(std::shared_ptr<User> user);
194  void CoreUserLoggedOut(std::shared_ptr<User> user);
195 
196  TTV_ErrorCode GetPresenceForUser(UserId userId, std::shared_ptr<Presence>& presence);
197  TTV_ErrorCode GetFriendListForUser(UserId userId, std::shared_ptr<FriendList>& friendList);
198 
200  void CreatePresenceListener();
201 
202  // ModuleBase overrides
203  virtual bool CheckShutdown() override;
204  virtual void CompleteShutdown() override;
205 
206  std::shared_ptr<CoreAPI> mCoreApi;
207  std::shared_ptr<ICoreApiClient> mCoreApiClient;
208 
209  std::shared_ptr<SocialAPIInternalData> mInternalData;
210  std::shared_ptr<UserRepository> mUserRepository;
211  std::shared_ptr<TaskRunner> mTaskRunner;
212 
214 };
TTV_ErrorCode FetchPresenceSettings(UserId userId, const FetchPresenceSettingsCallback &callback)
std::function< void(TTV_ErrorCode ec)> SetPresenceSettingsCallback
Definition: socialapi.h:47
SocialAPI * mApi
Definition: socialapi.h:189
uint32_t UserId
Definition: coretypes.h:22
Definition: socialtypes.h:20
virtual void CoreUserLoggedOut(std::shared_ptr< User > user)
std::function< void(TTV_ErrorCode ec, const std::vector< UserInfo > &recommendedFriends)> FetchRecommendedFriendsCallback
Definition: socialapi.h:54
FeatureFlags mEnabledFeatures
Definition: socialapi.h:213
virtual std::string GetModuleName() const override
std::function< void(TTV_ErrorCode ec, const std::vector< Friend > &friends)> FetchFriendListCallback
Definition: socialapi.h:48
Definition: coreapi.h:51
TTV_ErrorCode SetListener(const std::shared_ptr< ISocialAPIListener > &listener)
Definition: socialapi.h:42
TTV_ErrorCode FetchRecommendedFriends(UserId userId, const FetchRecommendedFriendsCallback &callback)
FriendAction
Definition: socialtypes.h:213
std::function< void(TTV_ErrorCode ec)> DismissRecommendedFriendCallback
Definition: socialapi.h:55
virtual TTV_ErrorCode Update() override
TTV_ErrorCode UpdateFriendship(UserId userId, UserId otherUserId, FriendAction action, const UpdateFriendshipCallback &callback)
std::shared_ptr< UserRepository > mUserRepository
Definition: socialapi.h:210
uint32_t GameId
Definition: coretypes.h:24
TTV_ErrorCode SetCoreApi(const std::shared_ptr< CoreAPI > &coreApi)
TTV_ErrorCode GetAutomaticPresencePostingEnabled(UserId userId, bool &enabled)
Definition: socialtypes.h:62
TTV_ErrorCode SetAutomaticPresencePostingEnabled(UserId userId, bool enabled)
std::function< void(TTV_ErrorCode ec)> InitializeCallback
Definition: module.h:48
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
TTV_ErrorCode SetPresenceSessionAvailability(UserId userId, PresenceSessionAvailability availability)
virtual void CompleteShutdown() override
std::function< void(TTV_ErrorCode ec, uint32_t requestCount)> FetchUnreadFriendRequestCountCallback
Definition: socialapi.h:51
virtual void CoreUserLoggedIn(std::shared_ptr< User > user)
TTV_ErrorCode AddWatchingActivity(UserId userId, ChannelId channelId, PresenceActivityToken &activityToken)
virtual TTV_ErrorCode Initialize(const InitializeCallback &callback) override
uint32_t PresenceActivityToken
Definition: socialtypes.h:98
std::function< void(TTV_ErrorCode ec, FriendStatus status)> FetchFriendStatusCallback
Definition: socialapi.h:53
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
TTV_ErrorCode SetPresenceSettings(UserId userId, const PresenceSettings &settings, const SetPresenceSettingsCallback &callback)
TTV_ErrorCode GetFriendListForUser(UserId userId, std::shared_ptr< FriendList > &friendList)
std::function< void(TTV_ErrorCode ec)> MarkAllFriendRequestsReadCallback
Definition: socialapi.h:52
Definition: socialapi.h:177
std::shared_ptr< TaskRunner > mTaskRunner
Definition: socialapi.h:211
std::function< void(TTV_ErrorCode ec)> ShutdownCallback
Definition: module.h:49
virtual bool CheckShutdown() override
TTV_ErrorCode RemoveActivity(UserId userId, PresenceActivityToken activityToken)
std::function< void(TTV_ErrorCode ec, UpdateFriendResult result, FriendStatus status)> UpdateFriendshipCallback
Definition: socialapi.h:49
std::function< void(TTV_ErrorCode ec)> PostPresenceCallback
Definition: socialapi.h:45
PresenceSessionAvailability
Definition: socialtypes.h:49
virtual std::string GetClientName()
TTV_ErrorCode MarkAllFriendRequestsRead(UserId userId, const MarkAllFriendRequestsReadCallback &callback)
TTV_ErrorCode SetEnabledFeatures(const FeatureFlags &features)
TTV_ErrorCode AddPlayingActivity(UserId userId, GameId gameId, const std::string &gameDisplayContext, PresenceActivityToken &activityToken)
std::shared_ptr< CoreAPI > mCoreApi
Definition: socialapi.h:206
TTV_ErrorCode FetchFriendStatus(UserId userId, UserId otherUserId, const FetchFriendStatusCallback &callback)
Definition: module.h:85
TTV_ErrorCode FetchUnreadFriendRequestCount(UserId userId, const FetchUnreadFriendRequestCountCallback &callback)
uint32_t ChannelId
Definition: coretypes.h:23
virtual TTV_ErrorCode Shutdown(const ShutdownCallback &callback) override
TTV_ErrorCode DismissRecommendedFriend(UserId userId, UserId dismissUserId, const DismissRecommendedFriendCallback &callback)
std::function< void(TTV_ErrorCode ec, const std::vector< FriendRequest > &requests)> FetchFriendRequestsCallback
Definition: socialapi.h:50
TTV_ErrorCode FetchFriendList(UserId userId, const FetchFriendListCallback &callback)
std::function< void(TTV_ErrorCode ec, const PresenceSettings &settings)> FetchPresenceSettingsCallback
Definition: socialapi.h:46
TTV_ErrorCode FetchFriendRequests(UserId userId, const FetchFriendRequestsCallback &callback)
virtual void GetRequiredOAuthScopes(std::vector< std::string > &scopes)
TTV_ErrorCode GetPresenceForUser(UserId userId, std::shared_ptr< Presence > &presence)
std::shared_ptr< SocialAPIInternalData > mInternalData
Definition: socialapi.h:209
std::shared_ptr< ICoreApiClient > mCoreApiClient
Definition: socialapi.h:207
TTV_ErrorCode PostPresence(UserId userId, const PostPresenceCallback &callback)