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);
            }
        }
Пример #2
0
    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));
        }
    }