Twitch SDK (Internal)
user.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 
13 #include "twitchsdk/core/timer.h"
17 
18 #include <memory>
19 #include <map>
20 
21 
22 namespace ttv
23 {
24  class TaskRunner;
25  class User;
26  struct UserInfo;
27  class IUserListener;
28  class UserRepository;
29  class GetUserTask;
30 }
31 
32 
33 class ttv::User : public Component,
34  public std::enable_shared_from_this<ttv::User>
35 {
36 public:
37  User(UserId userId);
38  virtual ~User();
39 
40  void SetUserRepository(const std::shared_ptr<UserRepository>& repository) { mUserRepository = repository; }
41 
42 
43  void AddListener(const std::shared_ptr<IUserListener>& listener);
44  void RemoveListener(const std::shared_ptr<IUserListener>& listener);
45 
46  std::shared_ptr<ComponentContainer> GetComponentContainer() { return mComponentContainer; }
47 
51  void LogIn();
55  void LogOut();
59  void ReportOAuthTokenInvalid(const std::shared_ptr<const OAuthToken>& oauthToken, TTV_ErrorCode ec);
60 
61  const UserInfo& GetUserInfo() const { return mUserInfo; }
62  void SetUserInfo(const UserInfo& userInfo);
63 
64  std::string GetUserName() const { return mUserInfo.userName; }
65 
66  void SetOAuthToken(const std::shared_ptr<OAuthToken>& authToken);
67  std::shared_ptr<const OAuthToken> GetOAuthToken() const;
68  std::string GetDisplayName() const { return mUserInfo.displayName; }
69  uint32_t GetUserId() const { return mUserId; }
70 
71  // Component overrides
72  virtual TTV_ErrorCode Initialize() override;
73  virtual void Update() override;
74  virtual TTV_ErrorCode Shutdown() override;
75  virtual std::string GetLoggerName() const override;
76 
77 private:
78  // Component overrides
79  virtual bool CheckShutdown() override;
80  virtual void CompleteShutdown() override;
81 
83  std::shared_ptr<OAuthToken> mOAuthToken;
84  std::weak_ptr<UserRepository> mUserRepository;
86  std::shared_ptr<ComponentContainer> mComponentContainer;
87 
89 };
User(UserId userId)
uint32_t UserId
Definition: coretypes.h:22
void ReportOAuthTokenInvalid(const std::shared_ptr< const OAuthToken > &oauthToken, TTV_ErrorCode ec)
std::shared_ptr< const OAuthToken > GetOAuthToken() const
std::shared_ptr< OAuthToken > mOAuthToken
Definition: user.h:83
uint32_t GetUserId() const
Definition: user.h:69
EventSource< IUserListener > mListeners
Definition: user.h:85
virtual ~User()
Definition: coretypes.h:32
UserInfo mUserInfo
Definition: user.h:82
std::shared_ptr< ComponentContainer > GetComponentContainer()
Definition: user.h:46
virtual std::string GetLoggerName() const override
void SetUserRepository(const std::shared_ptr< UserRepository > &repository)
Definition: user.h:40
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
std::string userName
Definition: coretypes.h:39
virtual TTV_ErrorCode Shutdown() override
Definition: eventsource.h:18
const UserInfo & GetUserInfo() const
Definition: user.h:61
void RemoveListener(const std::shared_ptr< IUserListener > &listener)
Definition: component.h:50
void LogOut()
virtual TTV_ErrorCode Initialize() override
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
UserId mUserId
Definition: user.h:88
virtual void CompleteShutdown() override
std::string displayName
Definition: coretypes.h:40
std::weak_ptr< UserRepository > mUserRepository
Definition: user.h:84
void SetOAuthToken(const std::shared_ptr< OAuthToken > &authToken)
std::string GetDisplayName() const
Definition: user.h:68
virtual void Update() override
void AddListener(const std::shared_ptr< IUserListener > &listener)
std::string GetUserName() const
Definition: user.h:64
void LogIn()
std::shared_ptr< ComponentContainer > mComponentContainer
Definition: user.h:86
Definition: user.h:33
virtual bool CheckShutdown() override
void SetUserInfo(const UserInfo &userInfo)