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); }
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)); }
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))); }
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)); }
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)); }
//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); }
//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); }
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)); }