示例#1
0
        public async static Task <List <Models.API.Stream.Stream> > GetAllStreamsV5(string game     = null, List <string> channels = null, Enums.StreamType streamType = Enums.StreamType.Live,
                                                                                    string language = "en", int limit              = 25, int offset = 0, string accessToken = null)
        {
            List <Models.API.Stream.Stream> streams = new List <Models.API.Stream.Stream>();
            string requestParams = $"?language={language}&limit={limit}&offset={offset}";

            if (game != null)
            {
                requestParams += $"&game={game}";
            }
            if (channels != null)
            {
                requestParams += $"&channels={string.Join(",", channels)}";
            }

            string  response = (await Internal.Requests.MakeGetRequest($"https://api.twitch.tv/kraken/streams/{requestParams}", accessToken, 5));
            JObject json     = JObject.Parse(response);

            streams.AddRange(json.SelectToken("streams").Select(stream => new Models.API.Stream.Stream(stream)));
            return(streams);
        }
示例#2
0
            public async static Task <Models.API.v3.Users.FollowedStreamsResponse> GetFollowedStreamsAsync(int limit = 25, int offset = 0, Enums.StreamType type = Enums.StreamType.All, string accessToken = null)
            {
                Shared.DynamicScopeValidation(Enums.AuthScopes.User_Read, accessToken);
                string paramsStr = $"?limit={offset}&offset={offset}";

                switch (type)
                {
                case Enums.StreamType.All:
                    paramsStr += "&stream_type=all";
                    break;

                case Enums.StreamType.Live:
                    paramsStr += "&stream_type=live";
                    break;

                case Enums.StreamType.Playlist:
                    paramsStr += "&stream_type=playlist";
                    break;
                }

                return(await Requests.GetGenericAsync <Models.API.v3.Users.FollowedStreamsResponse>($"https://api.twitch.tv/kraken/streams/followed{paramsStr}", accessToken, Requests.API.v3));
            }
示例#3
0
        internal static async Task <Models.API.Stream.FollowedStreamsResponse> GetFollowedStreams(Enums.StreamType streamType = Enums.StreamType.Live, int limit = 25, int offset = 0, string accessToken = null)
        {
            if (limit > 100 || limit < 0)
            {
                throw new Exceptions.API.BadParameterException("Limit must be larger than 0 and equal to or smaller than 100");
            }

            string args = $"?limit={limit}&offset={offset}";

            switch (streamType)
            {
            case Enums.StreamType.Live:
                args += "&stream_type=live";
                break;

            case Enums.StreamType.Playlist:
                args += "&stream_type=playlist";
                break;

            case Enums.StreamType.All:
                args += "&stream_type=all";
                break;
            }

            string resp = await Requests.MakeGetRequest($"https://api.twitch.tv/kraken/streams/followed{args}", accessToken, 5);

            return(new Models.API.Stream.FollowedStreamsResponse(JObject.Parse(resp)));
        }
示例#4
0
            public async static Task <Models.API.v3.Streams.StreamsResponse> GetStreamsAsync(string game = null, string channel = null, int limit = 25, int offset = 0, string clientId = null, Enums.StreamType streamType = Enums.StreamType.All, string language = "en")
            {
                string paramsStr = $"?limit={limit}&offset={offset}";

                if (game != null)
                {
                    paramsStr += $"&game={game}";
                }
                if (channel != null)
                {
                    paramsStr += $"&channel={channel}";
                }
                if (clientId != null)
                {
                    paramsStr += $"&client_id={clientId}";
                }
                if (language != null)
                {
                    paramsStr += $"&language={language}";
                }
                switch (streamType)
                {
                case Enums.StreamType.All:
                    break;

                case Enums.StreamType.Live:
                    break;

                case Enums.StreamType.Playlist:
                    break;
                }

                return(await Requests.GetGenericAsync <Models.API.v3.Streams.StreamsResponse>($"https://api.twitch.tv/kraken/streams{paramsStr}", null, Requests.API.v3));
            }
示例#5
0
文件: Users.cs 项目: Xynal/TwitchLib
            public async Task <Models.API.v3.Users.FollowedStreamsResponse> GetFollowedStreamsAsync(int limit = 25, int offset = 0, Enums.StreamType type = Enums.StreamType.All, string accessToken = null)
            {
                Api.Settings.DynamicScopeValidation(Enums.AuthScopes.User_Read, accessToken);
                List <KeyValuePair <string, string> > getParams = new List <KeyValuePair <string, string> >()
                {
                    new KeyValuePair <string, string>("limit", limit.ToString()), new KeyValuePair <string, string>("offset", offset.ToString())
                };

                switch (type)
                {
                case Enums.StreamType.All:
                    getParams.Add(new KeyValuePair <string, string>("stream_type", "all"));
                    break;

                case Enums.StreamType.Live:
                    getParams.Add(new KeyValuePair <string, string>("stream_type", "live"));
                    break;

                case Enums.StreamType.Playlist:
                    getParams.Add(new KeyValuePair <string, string>("stream_type", "playlist"));
                    break;
                }

                return(await Api.GetGenericAsync <Models.API.v3.Users.FollowedStreamsResponse>($"https://api.twitch.tv/kraken/streams/followed", getParams, accessToken, ApiVersion.v3).ConfigureAwait(false));
            }
示例#6
0
        //TODO Sorting
        /// <summary>
        ///     Get stream object
        /// </summary>
        /// <param name="game"></param>
        /// <param name="targetChannel"></param>
        /// <param name="clientId"></param>
        /// <param name="stream_type"></param>
        public Templates.v3.TwitchList <Templates.v3.Stream> GetStreams(string game = null, string targetChannel = null, string clientId = null, Enums.StreamType stream_type = Enums.StreamType.all)
        {
            var req = GetSubmitRequest("streams", Method.GET);

            if (!string.IsNullOrEmpty(game))
            {
                req.AddParameter("game", game);
            }
            if (!string.IsNullOrEmpty(targetChannel))
            {
                req.AddParameter("channel", targetChannel);
            }

            req.AddParameter("stream_type", stream_type);

            if (!string.IsNullOrEmpty(targetChannel))
            {
                req.AddParameter("client_id", clientId);
            }

            RestAPIVersion(Enums.APIVersion.v3);

            var resp = Client.Execute <Templates.v3.TwitchList <Templates.v3.Stream> >(req);

            return(resp.Data);
        }
示例#7
0
        //TODO Sorting
        /// <summary>
        ///     Get stream object
        /// </summary>
        /// <param name="game"></param>
        /// <param name="targetChannel"></param>
        /// <param name="clientId"></param>
        /// <param name="stream_type"></param>
        public Task <Templates.v3.TwitchList <Templates.v3.Stream> > GetStreamsAsync(string game = null, string targetChannel = null, string clientId = null, Enums.StreamType stream_type = Enums.StreamType.all)
        {
            var tcs = new TaskCompletionSource <Templates.v3.TwitchList <Templates.v3.Stream> >();
            var req = GetSubmitRequest("streams", Method.GET);

            if (!string.IsNullOrEmpty(game))
            {
                req.AddParameter("game", game);
            }
            if (!string.IsNullOrEmpty(targetChannel))
            {
                req.AddParameter("channel", targetChannel);
            }

            req.AddParameter("stream_type", stream_type);

            if (!string.IsNullOrEmpty(targetChannel))
            {
                req.AddParameter("client_id", clientId);
            }

            RestAPIVersion(Enums.APIVersion.v3);

            Client.ExecuteAsync <Templates.v3.TwitchList <Templates.v3.Stream> >(req, (response) =>
            {
                tcs.SetResult(response.Data);
            });
            return(tcs.Task);
        }
示例#8
0
            public async Task <Models.API.v3.Streams.StreamsResponse> GetStreamsAsync(string game = null, string channel = null, int limit = 25, int offset = 0, string clientId = null, Enums.StreamType streamType = Enums.StreamType.All, string language = "en")
            {
                List <KeyValuePair <string, string> > getParams = new List <KeyValuePair <string, string> >()
                {
                    new KeyValuePair <string, string>("limit", limit.ToString()), new KeyValuePair <string, string>("offset", offset.ToString())
                };

                if (game != null)
                {
                    getParams.Add(new KeyValuePair <string, string>("game", game));
                }
                if (channel != null)
                {
                    getParams.Add(new KeyValuePair <string, string>("channel", channel));
                }
                if (clientId != null)
                {
                    getParams.Add(new KeyValuePair <string, string>("client_id", clientId));
                }
                if (language != null)
                {
                    getParams.Add(new KeyValuePair <string, string>("language", language));
                }
                switch (streamType)
                {
                case Enums.StreamType.All:
                    getParams.Add(new KeyValuePair <string, string>("stream_type", "all"));
                    break;

                case Enums.StreamType.Live:
                    getParams.Add(new KeyValuePair <string, string>("stream_type", "live"));
                    break;

                case Enums.StreamType.Playlist:
                    getParams.Add(new KeyValuePair <string, string>("stream_type", "playlist"));
                    break;
                }

                return(await Api.GetGenericAsync <Models.API.v3.Streams.StreamsResponse>($"https://api.twitch.tv/kraken/streams", getParams, null, ApiVersion.v3).ConfigureAwait(false));
            }