internal static async Task <IEnumerable <T> > DoSeveralHttp <T>(string endpoint, string type, string accessToken) { Func <JToken, ISpotifyObject> generator = CreateSpotifyObjectGenerator(typeof(T)); HttpRequestMessage message = WebRequestHelpers.SetupRequest(endpoint, accessToken); HttpResponseMessage response = await WebRequestHelpers.Client.SendAsync(message); if (response.IsSuccessStatusCode) { JToken token = await WebRequestHelpers.ParseJsonResponse(response.Content); JArray jarr = token.Value <JArray>(type); List <T> lst = new List <T>(); foreach (JObject jobj in jarr) { T item = (T)generator(jobj); lst.Add(item); } return(lst); } else { throw new HttpRequestException(response.ReasonPhrase); } }
internal static async Task <T> DoHTTP <T>(string endpoint, string accessToken, string key = "") where T : ISpotifyObject { Func <JToken, ISpotifyObject> generator = CreateSpotifyObjectGenerator(typeof(T)); HttpRequestMessage message = WebRequestHelpers.SetupRequest(endpoint, accessToken); HttpResponseMessage response = await WebRequestHelpers.Client.SendAsync(message); if (response.IsSuccessStatusCode) { JToken token = await WebRequestHelpers.ParseJsonResponse(response.Content); if (!string.IsNullOrWhiteSpace(key)) { token = token.Value <JToken>(key); } T item = (T)generator(token); return(item); } else { return((T)generator("Error")); //TODO this is broken, yo } }
internal static async Task <IReadOnlyList <bool> > DoHttpGetBools(string accessToken, string endpoint) { HttpRequestMessage message = WebRequestHelpers.SetupRequest(endpoint, accessToken); HttpResponseMessage response = await WebRequestHelpers.Client.SendAsync(message); if (response.IsSuccessStatusCode) { JToken token = await WebRequestHelpers.ParseJsonResponse(response.Content); JArray jarr = token.Value <JArray>(); List <bool> lst = new List <bool>(); foreach (JValue jobj in jarr) { bool contains = jobj.Value <bool>(); lst.Add(contains); } return(lst); } else { throw new HttpRequestException($"Status Code: {response.StatusCode}, Message: {response.ReasonPhrase}"); } }