//GET Request public IEnumerator GetPrograms(IObserver <YleResponse> observer, CancellationToken cancellationToken, string query, int offset = 0, int limit = 10) { using ( UnityWebRequest webRequest = UnityWebRequest.Get( UrlBuilder.Create(BASE_URL) .Path(VERSION).Path("programs").Path("items.json") .Query("availability", "ondemand").Query("limit", limit.ToString()).Query("offset", offset.ToString()).Query("q", query) .Query("app_id", m_AppId).Query("app_key", m_AppKey) .Build() ) ) { yield return(webRequest.Send()); if (webRequest.isHttpError || webRequest.isNetworkError) { observer.OnError(new System.Exception(webRequest.responseCode.ToString())); } else { YleResponse response = JsonUtility.FromJson <YleResponse>(webRequest.downloadHandler.text); if (response != null) { observer.OnNext(response); } observer.OnCompleted(); } } }
// Use this for mapping YleResponse to Item public List <Program> ToPrograms(YleResponse response) { List <Program> programs = new List <Program>(); for (int index = 0; index < response.data.Length; index++) { Program program = new Program(); program.id = response.data[index].id; program.imageId = response.data[index].image.id; program.title = (response.data[index].title.fi != null) ? response.data[index].title.fi : response.data[index].title.sv; program.title = (program.title != null) ? program.title : "No title found"; program.description = (response.data[index].description.fi != null) ? response.data[index].description.fi : "No description found"; program.type = (response.data[index].type != null) ? response.data[index].type : "No type found"; program.duration = ParseDurationFromResponse(response.data[index].duration); programs.Add(program); } return(programs); }