Esempio n. 1
0
        /// <summary>
        /// Override for WINFORM OAUTH version 2.
        /// </summary>
        /// <param name="scope">The permission requested.</param>
        /// <param name="parent">The parent form.</param>
        /// <returns>The OAUTH token if successful, else null.</returns>
        public override string GetOAuthToken(TwitchScope scope = TwitchScope.chat_login, object parent = null)
        {
            // create the login
            if (_twitch_login_page == null)
            {
                _twitch_login_page = new TwitchLogin();
            }
            if (parent != null)
            {
                if (parent is Form)
                {
                    _twitch_login_page.Owner = parent as Form;
                }
            }

            _twitch_login_page.TwitchCallbackUri = this.TwitchCallbackUri;
            _twitch_login_page.TwitchLoginUri    = new Uri(BaseApiUri,
                                                           string.Format("oauth2/authorize?force_verify=true&response_type=token&client_id={0}&redirect_uri={1}&scope={2}",
                                                                         this.ClientId, this.TwitchCallbackUri.OriginalString, GetScopeString(scope)));
            _twitch_login_page.ShowDialog();

            // set the OAuth and the Scope
            this.OAuthToken = _twitch_login_page.OAuthToken;
            if (_twitch_login_page.OAuthToken != null)
            {
                this.TwitchScope = scope;
            }

            return(_twitch_login_page.OAuthToken);
        }
Esempio n. 2
0
 public OAuthAppAccessToken(string accessToken, string refreshToken, TimeSpan expiresIn, TwitchScope scope)
 {
     AccessToken  = accessToken;
     RefreshToken = refreshToken;
     ExpiresIn    = expiresIn;
     Scope        = scope;
 }
Esempio n. 3
0
        public static TwitchScope getScope(IEnumerable <TwitchScope> scopes)    // used to get
        {
            TwitchScope _result = 0;

            foreach (TwitchScope s in scopes)
            {
                _result |= s;
            }
            return(_result);
        }
Esempio n. 4
0
        public static TwitchScope getScope(string[] scopes)
        {
            TwitchScope _result = 0;

            foreach (string s in scopes)
            {
                _result |= decodeScope(s);
            }
            return(_result);
        }
Esempio n. 5
0
        public GetUsersResponse(JToken jsonData, TwitchScope scope)
        {
            Users = new List <UserDetails>();
            JToken?currToken = jsonData["data"];

            if (currToken == null)
            {
                throw new TwitchAPIException("Missing data in response.");
            }
            JArray dataElement = (JArray)currToken;

            if (dataElement.Count < 1)
            {
                throw new TwitchAPIException("No body to data in response.");
            }
            foreach (JToken token in dataElement)
            {
                Users.Add(new UserDetails(token, scope));
            }
        }
Esempio n. 6
0
 public GetUsersRequest(string[] ids, string[] names, TwitchScope extraScope) : base("https://api.twitch.tv/helix/users", extraScope)
 {
     this.UserIDs    = ids;
     this.LoginNames = names;
     this.Mode       = RequestMode.GET;
 }
Esempio n. 7
0
        public UserDetails(JToken jsonData, TwitchScope scope)
        {
            string?curr = jsonData.Value <string>("id");

            ID = (curr == null) ? "" : curr;

            curr  = jsonData.Value <string>("login");
            Login = (curr == null) ? "" : curr;

            curr        = jsonData.Value <string>("display_name");
            DisplayName = (curr == null) ? "" : curr;

            curr = jsonData.Value <string>("broadcaster_type");
            if (curr == null)
            {
                curr = "";
            }
            if (curr.Equals("partner"))
            {
                Broadcaster = BroadcasterType.PARTNER;
            }
            else if (curr.Equals("affiliate"))
            {
                Broadcaster = BroadcasterType.AFFILIATE;
            }
            else
            {
                Broadcaster = BroadcasterType.NORMAL;
            }

            curr        = jsonData.Value <string>("description");
            Description = (curr == null) ? "" : curr;

            curr            = jsonData.Value <string>("offline_image_url");
            OfflineImageURL = (curr == null) ? "" : curr;

            curr            = jsonData.Value <string>("profile_image_url");
            ProfileImageURL = (curr == null) ? "" : curr;

            curr = jsonData.Value <string>("type");
            if (curr == null)
            {
                curr = "";
            }
            if (curr.Equals("staff"))
            {
                Type = UserType.STAFF;
            }
            else if (curr.Equals("admin"))
            {
                Type = UserType.ADMIN;
            }
            else if (curr.Equals("global_mod"))
            {
                Type = UserType.GLOBAL_MOD;
            }
            else
            {
                Type = UserType.USER;
            }

            ViewCount = jsonData.Value <int>("view_count");

            curr      = jsonData.Value <string>("created_at");
            CreatedAt = (curr == null) ? "" : curr;

            if (scope.HasFlag(TwitchScope.USER_READ_EMAIL))
            {
                curr  = jsonData.Value <string>("email");
                EMail = (curr == null) ? "" : curr;
            }
        }
Esempio n. 8
0
        public static OAuthAppAccessToken parseToken(string jsonData)
        {
            JObject token = JObject.Parse(jsonData);

            string      AccessToken;
            string      RefreshToken;
            TimeSpan    ExpiresIn;
            TwitchScope Scope = TwitchScope.NONE;

            JToken?currToken = token["access_token"];

            if (currToken != null)
            {
                string?s = currToken.Value <string>();
                AccessToken = (s == null) ? "" : s;
            }
            else
            {
                AccessToken = "";
            }

            currToken = token["refresh_token"];
            if (currToken != null)
            {
                string?s = currToken.Value <string>();
                RefreshToken = (s == null) ? "" : s;
            }
            else
            {
                RefreshToken = "";
            }

            currToken = token["expires_in"];
            if (currToken != null)
            {
                int?secs = currToken.Value <int>();
                ExpiresIn = new TimeSpan(0, 0, (secs == null) ? 0 : (int)secs);
            }
            else
            {
                ExpiresIn = new TimeSpan(0);
            }

            currToken = token["scope"];
            if (currToken != null)
            {
                IEnumerable <string?> scopes = currToken.Values <string>();
                if (scopes != null)
                {
                    foreach (string?s in scopes)
                    {
                        if ((s != null) && !string.IsNullOrWhiteSpace(s))
                        {
                            Scope |= TwitchScopeUtil.getScope(s);
                        }
                    }
                }
            }

            return(new OAuthAppAccessToken(AccessToken, RefreshToken, ExpiresIn, Scope));
        }
Esempio n. 9
0
 public BaseRequest(string requestURL, TwitchScope requiredScopes)
 {
     RequestURL     = requestURL;
     RequiredScopes = requiredScopes;
 }
Esempio n. 10
0
        public static string getScopeString(TwitchScope scopes)
        {
            string _result = ""; bool isFirst = true;

            if (scopes.HasFlag(TwitchScope.ANALYTICS_READ_EXTENSIONS))
            {
                _result += (isFirst ? "" : " ") + "analytics:read:extensions"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.ANALYTICS_READ_GAMES))
            {
                _result += (isFirst ? "" : " ") + "analytics:read:games"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.BITS_READ))
            {
                _result += (isFirst ? "" : " ") + "bits:read"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_EDIT_COMMERCIAL))
            {
                _result += (isFirst ? "" : " ") + "channel:edit:commercial"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_MANAGE_BROADCAST))
            {
                _result += (isFirst ? "" : " ") + "channel:manage:broadcast"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_MANAGE_EXTENSIONS))
            {
                _result += (isFirst ? "" : " ") + "channel:manage:extensions"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_MANAGE_REDEMPTIONS))
            {
                _result += (isFirst ? "" : " ") + "channel:manage:redemptions"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_MANAGE_VIDEOS))
            {
                _result += (isFirst ? "" : " ") + "channel:manage:videos"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_READ_EDITORS))
            {
                _result += (isFirst ? "" : " ") + "channel:read:editors"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_READ_HYPETRAIN))
            {
                _result += (isFirst ? "" : " ") + "channel:read:hype_train"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_READ_REDEMPTIONS))
            {
                _result += (isFirst ? "" : " ") + "channel:read:redemptions"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_READ_STREAMKEY))
            {
                _result += (isFirst ? "" : " ") + "channel:read:stream_key"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_READ_SUBSCRIPTIONS))
            {
                _result += (isFirst ? "" : " ") + "channel:read:subscriptions"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.CLIPS_EDIT))
            {
                _result += (isFirst ? "" : " ") + "clips:edit"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.MODERATION_READ))
            {
                _result += (isFirst ? "" : " ") + "moderation:read"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.USER_EDIT))
            {
                _result += (isFirst ? "" : " ") + "user:edit"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.USER_EDIT_FOLLOWS))
            {
                _result += (isFirst ? "" : " ") + "user:edit:follows"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.USER_MANAGE_BLOCKEDUSERS))
            {
                _result += (isFirst ? "" : " ") + "user:manage:blocked_users"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.USER_READ_BLOCKEDUSERS))
            {
                _result += (isFirst ? "" : " ") + "user:read:blocked_users"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.USER_READ_BROADCAST))
            {
                _result += (isFirst ? "" : " ") + "user:read:broadcast"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.USER_READ_FOLLOWS))
            {
                _result += (isFirst ? "" : " ") + "user:read:follows"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.USER_READ_SUBSCRIPTIONS))
            {
                _result += (isFirst ? "" : " ") + "user:read:subscriptions"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_MODERATE))
            {
                _result += (isFirst ? "" : " ") + "channel:moderate"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.CHAT_EDIT))
            {
                _result += (isFirst ? "" : " ") + "chat:edit"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.CHAT_READ))
            {
                _result += (isFirst ? "" : " ") + "chat:read"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.WHISPERS_READ))
            {
                _result += (isFirst ? "" : " ") + "whispers:read"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.WHISPERS_EDIT))
            {
                _result += (isFirst ? "" : " ") + "whispers:edit"; isFirst = false;
            }
            if (scopes.HasFlag(TwitchScope.USER_READ_EMAIL))
            {
                _result += (isFirst ? "" : " ") + "user:read:email"; isFirst = false;
            }
            return(_result);
        }
Esempio n. 11
0
        public static List <TwitchScope> getIndividualScopes(TwitchScope scopes)
        {
            List <TwitchScope> _result = new List <TwitchScope>();

            if (scopes.HasFlag(TwitchScope.ANALYTICS_READ_EXTENSIONS))
            {
                _result.Add(TwitchScope.ANALYTICS_READ_EXTENSIONS);
            }
            if (scopes.HasFlag(TwitchScope.ANALYTICS_READ_GAMES))
            {
                _result.Add(TwitchScope.ANALYTICS_READ_GAMES);
            }
            if (scopes.HasFlag(TwitchScope.BITS_READ))
            {
                _result.Add(TwitchScope.BITS_READ);
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_EDIT_COMMERCIAL))
            {
                _result.Add(TwitchScope.CHANNEL_EDIT_COMMERCIAL);
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_MANAGE_BROADCAST))
            {
                _result.Add(TwitchScope.CHANNEL_MANAGE_BROADCAST);
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_MANAGE_EXTENSIONS))
            {
                _result.Add(TwitchScope.CHANNEL_MANAGE_EXTENSIONS);
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_MANAGE_REDEMPTIONS))
            {
                _result.Add(TwitchScope.CHANNEL_MANAGE_REDEMPTIONS);
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_MANAGE_VIDEOS))
            {
                _result.Add(TwitchScope.CHANNEL_MANAGE_VIDEOS);
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_READ_EDITORS))
            {
                _result.Add(TwitchScope.CHANNEL_READ_EDITORS);
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_READ_HYPETRAIN))
            {
                _result.Add(TwitchScope.CHANNEL_READ_HYPETRAIN);
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_READ_REDEMPTIONS))
            {
                _result.Add(TwitchScope.CHANNEL_READ_REDEMPTIONS);
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_READ_STREAMKEY))
            {
                _result.Add(TwitchScope.CHANNEL_READ_STREAMKEY);
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_READ_SUBSCRIPTIONS))
            {
                _result.Add(TwitchScope.CHANNEL_READ_SUBSCRIPTIONS);
            }
            if (scopes.HasFlag(TwitchScope.CLIPS_EDIT))
            {
                _result.Add(TwitchScope.CLIPS_EDIT);
            }
            if (scopes.HasFlag(TwitchScope.MODERATION_READ))
            {
                _result.Add(TwitchScope.MODERATION_READ);
            }
            if (scopes.HasFlag(TwitchScope.USER_EDIT))
            {
                _result.Add(TwitchScope.USER_EDIT);
            }
            if (scopes.HasFlag(TwitchScope.USER_EDIT_FOLLOWS))
            {
                _result.Add(TwitchScope.USER_EDIT_FOLLOWS);
            }
            if (scopes.HasFlag(TwitchScope.USER_MANAGE_BLOCKEDUSERS))
            {
                _result.Add(TwitchScope.USER_MANAGE_BLOCKEDUSERS);
            }
            if (scopes.HasFlag(TwitchScope.USER_READ_BLOCKEDUSERS))
            {
                _result.Add(TwitchScope.USER_READ_BLOCKEDUSERS);
            }
            if (scopes.HasFlag(TwitchScope.USER_READ_BROADCAST))
            {
                _result.Add(TwitchScope.USER_READ_BROADCAST);
            }
            if (scopes.HasFlag(TwitchScope.USER_READ_FOLLOWS))
            {
                _result.Add(TwitchScope.USER_READ_FOLLOWS);
            }
            if (scopes.HasFlag(TwitchScope.USER_READ_SUBSCRIPTIONS))
            {
                _result.Add(TwitchScope.USER_READ_SUBSCRIPTIONS);
            }
            if (scopes.HasFlag(TwitchScope.CHANNEL_MODERATE))
            {
                _result.Add(TwitchScope.CHANNEL_MODERATE);
            }
            if (scopes.HasFlag(TwitchScope.CHAT_EDIT))
            {
                _result.Add(TwitchScope.CHAT_EDIT);
            }
            if (scopes.HasFlag(TwitchScope.CHAT_READ))
            {
                _result.Add(TwitchScope.CHAT_READ);
            }
            if (scopes.HasFlag(TwitchScope.WHISPERS_READ))
            {
                _result.Add(TwitchScope.WHISPERS_READ);
            }
            if (scopes.HasFlag(TwitchScope.WHISPERS_EDIT))
            {
                _result.Add(TwitchScope.WHISPERS_EDIT);
            }
            if (scopes.HasFlag(TwitchScope.USER_READ_EMAIL))
            {
                _result.Add(TwitchScope.USER_READ_EMAIL);
            }
            return(_result);
        }