public async Task <MediaItem []> PerformAppleMusicGetRecentlyPlayedAsync(string userToken) { var developerToken = FetchDeveloperToken(); if (developerToken == null) { throw new ArgumentNullException(nameof(developerToken), "Developer Token not configured. See README for more details."); } var urlRequest = AppleMusicRequestFactory.CreateRecentlyPlayedRequest(developerToken, userToken); var dataTaskRequest = await UrlSession.CreateDataTaskAsync(urlRequest); var urlResponse = dataTaskRequest.Response as NSHttpUrlResponse; if (urlResponse?.StatusCode != 200) { return(new MediaItem [0]); } var jsonDictionary = NSJsonSerialization.Deserialize(dataTaskRequest.Data, NSJsonReadingOptions.AllowFragments, out NSError error) as NSDictionary; if (error != null) { throw new NSErrorException(error); } var results = jsonDictionary [ResponseRootJsonKeys.Data] as NSArray ?? throw new SerializationException(ResponseRootJsonKeys.Data); return(ProcessMediaItems(results)); }
public async Task <string> PerformAppleMusicStorefrontsLookupAsync(string regionCode) { var developerToken = FetchDeveloperToken(); if (developerToken == null) { throw new ArgumentNullException(nameof(developerToken), "Developer Token not configured. See README for more details."); } var urlRequest = AppleMusicRequestFactory.CreateStorefrontsRequest(regionCode, developerToken); var dataTaskRequest = await UrlSession.CreateDataTaskAsync(urlRequest); var urlResponse = dataTaskRequest.Response as NSHttpUrlResponse; if (urlResponse?.StatusCode != 200) { return(null); } return(ProcessStorefront(dataTaskRequest.Data)); }
public async Task <MediaItem [] []> PerformAppleMusicCatalogSearchAsync(string term, string countryCode) { var developerToken = FetchDeveloperToken(); if (developerToken == null) { throw new ArgumentNullException(nameof(developerToken), "Developer Token not configured. See README for more details."); } var urlRequest = AppleMusicRequestFactory.CreateSearchRequest(term, countryCode, developerToken); var dataTaskRequest = await UrlSession.CreateDataTaskAsync(urlRequest); var urlResponse = dataTaskRequest.Response as NSHttpUrlResponse; if (urlResponse?.StatusCode != 200) { return(new MediaItem [0] []); } return(ProcessMediaItemSections(dataTaskRequest.Data)); }