private async Task <ChapterResponse> GetChaptersAsync(string id, CancellationToken cancellationToken) { var url = BaseUrl + String.Format("{0}", id); var options = GetHttpRequestOptions(cancellationToken, url); using (var stream = await _httpClient.Get(options).ConfigureAwait(false)) { var result = _xmlSerializer.DeserializeFromStream(typeof(Detail), stream) as Detail; if (result == null) { return(new ChapterResponse()); } var chapters = result.ChapterCollection.Chapters.Select(x => { var c = new RemoteChapterInfo { Name = x.Name, StartPositionTicks = x.Time.Ticks, }; _logger.Debug(string.Format("Chapters - {0} [{1}]", c.Name, GetTimeString(c.StartPositionTicks))); return(c); }).ToList(); var response = new ChapterResponse { Chapters = chapters, }; return(response); } }
private IEnumerator LoadMangaChapter() { if (_currentManga == null) { Debug.LogError("No Manga loaded, trying to load"); LoadFromTitleId(); yield break; } var chapterName = GetChapterName(); if (!_chapters.TryGetValue(chapterName, out var chapterId)) { Debug.LogError($"Chapter {chapterName} not found!"); yield break; } foreach (Transform child in _list) { Destroy(child.gameObject); } var chapterUrl = API_CHAPTER + chapterId; var req = UnityWebRequest.Get(chapterUrl); yield return(req.SendWebRequest()); // we got the shit var chapterResponse = ChapterResponse.FromJson(req.downloadHandler.text); foreach (var chapterFile in chapterResponse.PageArray) { if (chapterName != GetChapterName()) { yield break; } var imageLink = Path.Combine(chapterResponse.Server.Host.Contains("s4") ? BASE_DATA_URL : chapterResponse.Server.AbsoluteUri, chapterResponse.Hash, chapterFile); var lazyImage = Instantiate(_imagePrefab.gameObject, _list).GetComponent <LazyImage>(); lazyImage.LoadUrl(imageLink); yield return(new WaitUntil(lazyImage.IsLoadCompleted)); } }