public DownloadExceptionListenerContext(ComicDownloadRequest request, ComicChapter chapter, ComicPage page, CancellationToken token, Exception exception) : base(request, chapter, page, token) { Exception = exception; }
public async Task <ComicPage[]> GetPagesAsync(string targetUrl) { var tur = new Uri(targetUrl).Segments; var seg = tur[tur.Length - 2].Trim('/'); var idx = tur[tur.Length - 1].Replace(".html", string.Empty); var url = string.Format(pagesUrl, seg, idx); using (var stream = await GetStreamAsync(url)) { var str = string.Empty; using (var sr = new StreamReader(stream)) { str = sr.ReadToEnd(); } using (var jobj = JsonVisitor.FromString(str)) { var imgs = jobj["listImg"].ToEnumerable(); var pages = new List <ComicPage>(); var i = 0; foreach (var item in imgs) { var page = new ComicPage { Name = i++.ToString(), TargetUrl = item.ToString() }; pages.Add(page); } return(pages.ToArray()); } } }
private static void seedDB(ModelBuilder builder) { // Store and Define Objects User u1 = new User { EntityId = 1L, Name = "Kevin", IsAdmin = true }; User u2 = new User { EntityId = 2L, Name = "Robert", IsAdmin = false }; // Using Test Image var obj = new ImageConvertor(); var img = Image.FromFile("Images/test_img.jpg"); byte[] imgByteArr = obj.ConvertImageToByteArray(img, ".jpg"); ComicPage p1 = new ComicPage { EntityId = 1L, ComicBookId = 1L, PageNumber = 1, Image = imgByteArr, PageTitle = "Tin goes to the amuesment park" }; ComicBook b1 = new ComicBook { EntityId = 1L, Title = "Tin Tin's Adventure", Author = "Hergé", Genre = "Adventure", EditionNumber = 32, Description = "Description goes here" }; // Insert the seed data to MS SQL DB builder.Entity <User>().HasData(u1); builder.Entity <User>().HasData(u2); builder.Entity <ComicBook>().HasData(b1); builder.Entity <ComicPage>().HasData(p1); }
public DownloadListenerContext(ComicDownloadRequest request, ComicChapter chapter, ComicPage page, CancellationToken token) { Request = request; Chapter = chapter; Page = page; Token = token; }
private void ShowNextPanelOnTouch(ComicPage curPage) { if (Input.GetMouseButtonDown(0)) { ShowNextPanelAndStartTimer(curPage); } }
private void LoadNextPage() { Debug.Log("Load next page called"); ComicPage comicPage = _pages[_pageIndex - 1]; comicPage.Hide(); comicPage.FadeOutComplete += ShowNextPage; Debug.Log("Setting update to noop"); _update = Constants.Noop; // stop coroutine that waits for touch to hide page, since we're now waiting on fadeoutcomplete StopCoroutine(_nextTimer); }
public ComicDownloadContext(ComicEntity entity, ComicChapter chapter, ComicPage page, Stream sourceStream, CancellationToken token) { Token = token; Entity = entity; Chapter = chapter; Page = page; SourceStream = sourceStream; }
public void GivenValueInit_PropertyValueMustEqualGiven() { var chapter = new ComicChapter(); var page = new ComicPage(); var req = new DownloadItemRequest(chapter, page); Assert.AreEqual(chapter, req.Chapter); Assert.AreEqual(page, req.Page); req = new DownloadItemRequest(page); Assert.IsNull(req.Chapter); Assert.AreEqual(page, req.Page); }
public void GivenAnyPropertyValue_GetMustEqualGiven() { var page = new ComicPage(); var resource = new object(); var box = new PageBox <object>(); box.DoNotDispose = true; box.Page = page; box.Resource = resource; Assert.IsTrue(box.DoNotDispose); Assert.AreEqual(page, box.Page); Assert.AreEqual(resource, box.Resource); }
private static void seedDB(ModelBuilder builder) { // Store and Define Objects User u1 = new User { EntityId = 1L, Name = "Kevin", IsAdmin = true }; User u2 = new User { EntityId = 2L, Name = "Robert", IsAdmin = false }; // // Using Test Image var obj = new ImageConvertor(); var img = Image.FromFile("Images/test_img.jpg"); byte[] imgByteArr = obj.ConvertImageToByteArray(img, ".jpg"); var img2 = Image.FromFile("Images/test_img2.jpg"); byte[] imgByteArr2 = obj.ConvertImageToByteArray(img2, ".jpg"); var img3 = Image.FromFile("Images/test_img3.jpg"); byte[] imgByteArr3 = obj.ConvertImageToByteArray(img3, ".jpg"); ComicPage p1 = new ComicPage { EntityId = 1L, ComicBookId = 1L, PageNumber = 1, Image = imgByteArr, PageTitle = "Tin goes to the amuesment park" }; ComicPage p2 = new ComicPage { EntityId = 2L, ComicBookId = 2L, PageNumber = 1, Image = imgByteArr2, PageTitle = "The Wedding's of the Harlequin" }; ComicPage p3 = new ComicPage { EntityId = 3L, ComicBookId = 2L, PageNumber = 2, Image = imgByteArr3, PageTitle = "Superwoman goes for a swim" }; ComicBook b1 = new ComicBook { EntityId = 1L, Title = "Tin Tin's Adventure", Author = "Hergé", Genre = "Adventure", EditionNumber = 32, Description = "Description goes here" }; ComicBook b2 = new ComicBook { EntityId = 2L, Title = "All American Comic", Author = "Frank", Genre = "Action", EditionNumber = 2, Description = "Different Description" }; // Insert the seed data to MS SQL DB builder.Entity <User>().HasData(u1); builder.Entity <User>().HasData(u2); builder.Entity <ComicBook>().HasData(b1); builder.Entity <ComicBook>().HasData(b2); builder.Entity <ComicPage>().HasData(p1); builder.Entity <ComicPage>().HasData(p2); builder.Entity <ComicPage>().HasData(p3); }
public void Init(string petColor) { // Hide all and dont play for (int i = 0; i < pages.Count; i++) { ComicPage page = pages[i].GetComponent <ComicPage>(); // Set the pet color page.Init(petColor); page.ToggleActive(false); } // Call on next frame, wait for tween toggle to init!!! StartCoroutine(StartComic()); }
public void GivenValue_PropertyValueMustEqualGiven() { var saver = new NullComicSaver(); var req = new DownloadItemRequest[0]; var prov = new NullSourceProvider(); var eq = new ComicDownloadRequest(saver, null, null, req, prov); var chp = new ComicChapter(); var page = new ComicPage(); var ctx = new DownloadListenerContext(eq, chp, page, default); Assert.AreEqual(eq, ctx.Request); Assert.AreEqual(chp, ctx.Chapter); Assert.AreEqual(page, ctx.Page); Assert.AreEqual(CancellationToken.None, ctx.Token); }
public IActionResult Index(Guid?pageId) { ComicPage comicPage = pageId is null ? _defaultComicPageRetriever.RetrieveDefaultComicPage() : _comicPageFromIdRetriever.RetrieveComicPageFromId(pageId.Value); ComicIssue comicIssue = _comicIssueResolver.ResolveComicIssue(comicPage.IssueId); ComicPageViewModel comicPageViewModel = new ComicPageViewModel() { ComicPage = comicPage, ComicIssue = comicIssue }; return(View(comicPageViewModel)); }
public async Task <ComicPage[]> GetPagesAsync(string targetUrl) { var str = string.Empty; using (var sr = new StreamReader(await GetStreamAsync(targetUrl))) { str = sr.ReadToEnd(); } var html = new HtmlDocument(); html.LoadHtml(str); var eval = await GetJsEvalAsync(FetchJsEvalAsync); var dataBlock = dataRegex.Match(str); var noticLeft = str.IndexOf("window[\"n", str.IndexOf("window[\"n") + 4); var noticRight = str.IndexOf(";", noticLeft); var notic = str.Substring(noticLeft, noticRight - noticLeft); var data = dataBlock.Groups[1].Value; var dataJs = "var DATA='" + data + "';window.DATA=DATA;"; var sb = new StringBuilder(); sb.Append(varJs); sb.Append(dataJs); sb.Append(notic + ";"); sb.Append(eval); sb.Append(";JSON.stringify(_v);"); var val = jsEngine.Evaluate(sb.ToString()).ToString(); using (var doc = JsonVisitor.FromString(val)) { var pages = new List <ComicPage>(); var pics = doc["picture"].ToEnumerable(); foreach (var item in pics) { var pid = item["pid"]; var url = item["url"]; var page = new ComicPage { Name = pid.ToString(), TargetUrl = url.ToString() }; pages.Add(page); } return(pages.ToArray()); } }
public void SetCurrentComicPage(ComicPage page) { bEndOfLineReached = false; CurrentComicPage = page; SetCurrentPanelLine(0, EPanelDirection.MAX); SetCameraPosition(CurrentComicPage.PanelLineList[0].PanelList[0].gameObject.transform.position - new Vector3(PanelOffset * 0.9f, 0.0f)); NumOfPanels = page.PanelLineList.Count; if (ComicAppearance.instance != null) { ComicAppearance.instance.Refresh(); } if (CurrentComicPage == ComicPageEnd.instance) { StartCoroutine(EndScrollRoutine(33.0f)); } }
private void ShowNextPage() { ComicPage curPage = _pages[_pageIndex++]; curPage.Show(); Action curPageOnFadeInComplete = delegate { ShowNextPanelAndStartTimer(curPage); }; curPage.FadeInComplete += curPageOnFadeInComplete; curPage.AllPanelsShowComplete += () => { Debug.Log("All panels show complete for " + curPage.name); bool isLastPage = _pageIndex == _pages.Length; Debug.Log("Setting update to " + (isLastPage ? "noop" : "hide current page on touch")); _update = isLastPage ? Constants.Noop : HideCurrentPageOnTouch; StopCoroutine(_nextTimer); pageFinished?.Invoke(_pageIndex - 1); if (!isLastPage) { _nextTimer = StartCoroutine(Coroutines.ExecuteAfterSeconds(3, LoadNextPage)); } }; Debug.Log("Setting update to show next panel on touch"); _update = () => ShowNextPanelOnTouch(curPage); }
public async Task <ComicPage[]> GetPagesAsync(string targetUrl) { var str = string.Empty; using (var sr = new StreamReader(await CreateRequest(targetUrl))) { str = sr.ReadToEnd(); } var jsCodesRgx = regex.Match(str); var jsCode = jsCodesRgx.Groups[1].Value; var val = jsEngine.Evaluate <string>("var a=JSON.stringify(" + jsCode + ");a"); var visitor = JsonVisitor.FromString(val); try { var info = visitor["data"] .ToArray().First()["res"]["data"]["comic_info"]; var comics = info["comic_images"].ToArray(); var pages = new List <ComicPage>(); var title = info["title"].ToString(); foreach (var item in comics) { var uri = item["url"].ToString(); var page = new ComicPage { Name = title, TargetUrl = uri }; pages.Add(page); } return(pages.ToArray()); } finally { visitor.Dispose(); } }
protected virtual async Task StorePageAsync(ComicEntity entity, ComicChapter chapter, ComicPage page) { KeepingAction?.Invoke(entity, chapter, page, null, KeepingActionTypes.BeginStorePage); OnBeginStorePage(chapter, page); try { var mode = WriteMode; if (mode == ComicStoreWriteModes.NotExists) { var ok = await storeService.ExistsAsync(page.TargetUrl); if (ok) { KeepingAction?.Invoke(entity, chapter, page, null, KeepingActionTypes.EndStorePage); OnEndStorePage(chapter, page, false); return; } } var path = page.TargetUrl; if (HasImageFolderName) { path = string.Concat(ImageFolderName, "/", page.TargetUrl); } var stream = await fetchService.GetStreamAsync(page.TargetUrl); if (stream is null) { stream = await Provider.GetImageStreamAsync(page.TargetUrl); if (fetchService != storeService) { await fetchService.SaveAsync(path, stream); } } stream.Seek(0, SeekOrigin.Begin); await storeService.SaveAsync(path, stream); } catch (Exception ex) { KeepingAction?.Invoke(entity, chapter, page, ex, KeepingActionTypes.StorePageException); OnStorePageException(chapter, page, ex); } KeepingAction?.Invoke(entity, chapter, page, null, KeepingActionTypes.EndStorePage); OnEndStorePage(chapter, page, true); }
protected virtual void OnBeginStorePage(ComicChapter chapter, ComicPage page) { }
private async Task DownloadPageAsync(ComicDownloadRequest request, ComicChapter chapter, ComicPage page, CancellationToken token) { var listener = request.Listener; DownloadListenerContext listenerContext = null; if (listener != null) { listenerContext = new DownloadListenerContext(request, chapter, page, token); await listener.ReadyFetchAsync(listenerContext); } if (listener != null && token.IsCancellationRequested) { await listener.CanceledAsync(listenerContext); return; } var ctx = new ComicDownloadContext(request.Entity, chapter, page, null, token); if (!request.Saver.NeedToSave(ctx)) { if (listener != null) { await listener.NotNeedToSaveAsync(listenerContext); } return; } try { if (listener != null) { await listener.BeginFetchPageAsync(listenerContext); } using (var stream = await request.Provider.GetImageStreamAsync(page.TargetUrl)) using (var destStream = streamManager.GetStream()) { DownloadSaveListenerContext saveCtx = null; if (listener != null) { saveCtx = new DownloadSaveListenerContext(request, chapter, page, token, destStream); await listener.ReadySaveAsync(saveCtx); } await stream.CopyToAsync(destStream); destStream.Seek(0, SeekOrigin.Begin); ctx = new ComicDownloadContext(request.Entity, chapter, page, destStream, token); await request.Saver.SaveAsync(ctx); if (listener != null) { await listener.EndFetchPageAsync(saveCtx); } } } catch (Exception ex) { if (listener != null) { var errCtx = new DownloadExceptionListenerContext(request, chapter, page, token, ex); await listener.FetchPageExceptionAsync(errCtx); } } if (listener != null) { await listener.ComplatedSaveAsync(listenerContext); } }
public DownloadItemRequest(ComicPage page) { Page = page; }
public DownloadItemRequest(ComicChapter chapter, ComicPage page) { Chapter = chapter; Page = page; }
protected virtual void OnEndStorePage(ComicChapter chapter, ComicPage page, bool write) { }
public DownloadSaveListenerContext(ComicDownloadRequest request, ComicChapter chapter, ComicPage page, CancellationToken token, Stream targetStream) : base(request, chapter, page, token) { baseStream = targetStream; }
protected virtual void OnStorePageException(ComicChapter chapter, ComicPage page, Exception ex) { }
private void ShowNextPanelAndStartTimer(ComicPage curPage) { StopCoroutine(_nextTimer); _nextTimer = StartCoroutine(Coroutines.ExecuteAfterSeconds(3, () => ShowNextPanelAndStartTimer(curPage))); curPage.ShowNextPanel(); }