private void OnFilterMenuSelectionChanged(AnimeStatus status) { ViewModel.CurrentStatus = (int)status; ViewModel.RefreshList(); _filterMenu.Dismiss(true); _filterMenu = null; }
private void OnUpperFlyoutStatusChanged(AnimeStatus animeStatus) { ViewModelLocator.AnimeList.CurrentStatus = (int)animeStatus; ViewModelLocator.AnimeList.RefreshList(); _upperFilterMenu.Dismiss(true); _upperFilterMenu = null; }
public void PromptForStatusChange(AnimeStatus to) { try { if (MyStatus == to) { return; } if (!Settings.StatusPromptEnable) { if (!Settings.StatusPromptProceedOnDisabled) { return; } ChangeStatus(to); return; } ResourceLocator.MessageDialogProvider.ShowMessageDialogWithInput( $"From : {Utils.Utilities.StatusToString((int)MyStatus, !ParentAbstraction.RepresentsAnime)}\nTo : {Utils.Utilities.StatusToString((int)to,!ParentAbstraction.RepresentsAnime)}", "Would you like to change current status?", "Yes", "No", () => ChangeStatus(to)); } catch (Exception) { //TODO access denied excpetion? we can try that } }
private async void ChangeStatus(AnimeStatus status) { LoadingUpdate = true; var myPrevStatus = MyStatus; MyStatus = status; var stat = status; if (Settings.SetStartDateOnWatching && stat == AnimeStatus.Watching && (Settings.OverrideValidStartEndDate || ParentAbstraction.MyStartDate == AnimeItemViewModel.InvalidStartEndDate)) { StartDate = DateTimeOffset.Now.ToString("yyyy-MM-dd"); } else if (Settings.SetEndDateOnDropped && stat == AnimeStatus.Dropped && (Settings.OverrideValidStartEndDate || ParentAbstraction.MyEndDate == AnimeItemViewModel.InvalidStartEndDate)) { EndDate = DateTimeOffset.Now.ToString("yyyy-MM-dd"); } else if (Settings.SetEndDateOnCompleted && stat == AnimeStatus.Completed && (Settings.OverrideValidStartEndDate || ParentAbstraction.MyEndDate == AnimeItemViewModel.InvalidStartEndDate)) { EndDate = DateTimeOffset.Now.ToString("yyyy-MM-dd"); } //in case of series having one episode if (AllEpisodes == 1 && myPrevStatus == AnimeStatus.PlanToWatch && stat == AnimeStatus.Completed) { if (Settings.SetStartDateOnWatching && (Settings.OverrideValidStartEndDate || ParentAbstraction.MyStartDate == "0000-00-00")) { StartDate = DateTimeOffset.Now.ToString("yyyy-MM-dd"); } } if (IsRewatching) { if (AllEpisodes != 0 && MyStatus == AnimeStatus.Completed) { MyEpisodes = AllEpisodes; } IsRewatching = false; } ViewModelLocator.AnimeDetails.UpdateAnimeReferenceUiBindings(Id); var response = await GetAppropriateUpdateQuery().GetRequestResponse(); if (response != "Updated" && Settings.SelectedApiType == ApiType.Mal) { MyStatus = myPrevStatus; } if (MyStatus == AnimeStatus.Completed && _allEpisodes != 0) { PromptForWatchedEpsChange(_allEpisodes); } LoadingUpdate = false; }
public async Task GetTask(ShikimoriClient shikiClient, AnimeStatus status) { var bag = new ConcurrentBag <SpecialUserAnimeRate>(); await shikiClient.GetAnimeFull(bag, status).ConfigureAwait(false); Trace.WriteLine("await shikiclient passed"); AnimeList = bag.ToList(); Trace.WriteLine("animeList passed"); }
public static string ToName(this AnimeStatus status) { switch (status) { case AnimeStatus.CurrentlyAiring: return("Wychodzi"); case AnimeStatus.FinishedAiring: return("Zakończone"); case AnimeStatus.Proposal: case AnimeStatus.NotYetAired: return("Deklaracja"); default: return("Niesprecyzowane"); } }
public void PromptForStatusChange(AnimeStatus to) { try { if (MyStatus != AnimeStatus.Completed || !IsRewatching) { if (MyStatus == to) { return; } } if (!Settings.StatusPromptEnable) { if (!Settings.StatusPromptProceedOnDisabled) { return; } ChangeStatus(to); return; } ResourceLocator.MessageDialogProvider.ShowMessageDialogWithInput( $"From : {Utils.Utilities.StatusToString((int)MyStatus, !ParentAbstraction.RepresentsAnime, IsRewatching)}\nTo : {Utils.Utilities.StatusToString((int)to,!ParentAbstraction.RepresentsAnime)}", "Would you like to change current status?", "Yes", "No", async() => { if (to == AnimeStatus.Completed && IsRewatching) { IsRewatching = false; if (AllEpisodes != 0) { MyEpisodes = AllEpisodes; } await GetAppropriateUpdateQuery().GetRequestResponse(); AdjustIncrementButtonsVisibility(); ViewModelLocator.AnimeDetails.UpdateAnimeReferenceUiBindings(Id); } else { ChangeStatus(to); } }); } catch (Exception) { //TODO access denied excpetion? we can try that } }
private static string AnimeStatusToHum(AnimeStatus status) { switch (status) { case AnimeStatus.Watching: return("currently-watching"); case AnimeStatus.PlanToWatch: return("plan-to-watch"); case AnimeStatus.Completed: return("completed"); case AnimeStatus.OnHold: return("on-hold"); case AnimeStatus.Dropped: return("dropped"); default: throw new ArgumentOutOfRangeException(nameof(status), status, null); } }
public AnimeListFilterFlyoutItem(AnimeStatus status) : base((int)status,TextColorBase) { Status = (int)status; Text = Utilities.StatusToString(Status); }
public static async Task <ConcurrentBag <SpecialUserAnimeRate> > GetTaskBag(ShikimoriClient shikiClient, AnimeStatus status) { Trace.WriteLine("await shikiclient passed"); return(await shikiClient.GetAnimeFullReturn(status).ConfigureAwait(false)); }
private static string AnimeStatusToHum(AnimeStatus status) { switch (status) { case AnimeStatus.Watching: return "currently-watching"; case AnimeStatus.PlanToWatch: return "plan-to-watch"; case AnimeStatus.Completed: return "completed"; case AnimeStatus.OnHold: return "on-hold"; case AnimeStatus.Dropped: return "dropped"; default: throw new ArgumentOutOfRangeException(nameof(status), status, null); } }
// Start is called before the first frame update void Awake() { animeStatus = new AnimeStatus(); animeStatus = AnimeStatus.walkanddraw; }
private async Task soloMethod(Update upd, TelegramBotClient client, ShikimoriClient shikiClient, AnimeStatus status) { var userId = upd.CallbackQuery.From.Id; var mesId = upd.CallbackQuery.Message.MessageId; var chatId = upd.CallbackQuery.Message.Chat.Id; if (Bot.GetUserAnime(userId) is null) { await Task.Yield(); var bag = await shikiClient.V2AnimeReturn(status).ConfigureAwait(false); await Task.Yield(); Trace.WriteLine($"var bag {bag.Count} \n {Environment.StackTrace}"); var lst = new UserAnimeList(bag.ToList(), DateTime.Now, userId); Trace.WriteLine($"lst {lst.UpdatedAt}"); Bot.animeAccountsLists[userId] = new UserAnimeList(bag.ToList(), DateTime.Now, userId); Trace.WriteLine("dict"); } var page = Bot.GetAnimePage(userId); var keyb = Bot.GetKeyboard(KeyboardTarget.AnimeItemsMenu) as AnimeEntriesListKeyboard; var markup = await keyb.GetKeyboard(page, MovePage.Current).ConfigureAwait(false); Trace.WriteLine("markup"); await client.EditMessageTextAsync(chatId, mesId, "Anime", replyMarkup : markup).ConfigureAwait(false); Trace.WriteLine("edit mes"); }
/// <summary> /// Main refresh function /// </summary> /// <param name="searchSource"> /// If it's from search -> check if there's anuthing to update before refreshing. /// </param> /// <param name="fakeDelay"> /// To make app more responsive micro delays are good to trigger spinners and such. /// </param> /// <returns></returns> public async void RefreshList(bool searchSource = false, bool fakeDelay = false) { //await Task.Run(() => //{ var query = ViewModelLocator.GeneralMain.CurrentSearchQuery; var queryCondition = !string.IsNullOrWhiteSpace(query) && query.Length > 1; if (!_wasPreviousQuery && searchSource && !queryCondition) // refresh was requested from search but there's nothing to update { return; } if (!queryCondition) { _prevQuery = null; _invalidatePreviousSearchResults = false; } if(queryCondition && !_wasPreviousQuery) SetDesiredStatus((int)AnimeStatus.AllOrAiring); else if(!queryCondition && _wasPreviousQuery) SetDesiredStatus((int)_prevAnimeStatus); _wasPreviousQuery = queryCondition; var status = GetDesiredStatus(); IEnumerable<AnimeItemAbstraction> items; if (queryCondition && !_invalidatePreviousSearchResults && _wasPreviousQuery && !string.IsNullOrEmpty(_prevQuery) && query.Length > _prevQuery.Length && query.Substring(0, _prevQuery.Length-1) == _prevQuery) //use previous results if query is more detailed items = _animeItemsSet.Union(AnimeItems.Select(model => model.ParentAbstraction)); else switch (WorkMode) { case AnimeListWorkModes.Anime: items = AllLoadedAnimeItemAbstractions; break; case AnimeListWorkModes.SeasonalAnime: case AnimeListWorkModes.TopAnime: case AnimeListWorkModes.AnimeByGenre: case AnimeListWorkModes.AnimeByStudio: items = _allLoadedSeasonalAnimeItems; break; case AnimeListWorkModes.Manga: items = AllLoadedMangaItemAbstractions; break; case AnimeListWorkModes.TopManga: items = _allLoadedSeasonalMangaItems; break; default: throw new ArgumentOutOfRangeException(); } if(queryCondition) _prevQuery = query; _animeItemsSet.Clear(); items = items.Where(item => status == AnimeStatus.AllOrAiring || item.MyStatus == status || (item.IsRewatching && status == AnimeStatus.Watching)); if(!queryCondition) _prevAnimeStatus = status; if (queryCondition) { query = query.ToLower(); bool alreadyFiltered = false; if (MainViewModelBase.AnimeMediaTypeHints.Contains(query)) { var type = 0; if (query == "tv") type = (int)AnimeType.TV; else if (query == "movie") type = (int)AnimeType.Movie; else if (query == "special") type = (int)AnimeType.Special; else if (query == "ova") type = (int)AnimeType.OVA; items = items.Where(item => item.Type == type); alreadyFiltered = true; } else if (MainViewModelBase.MangaMediaTypeHints.Contains(query)) { var type = 0; if (query == "manga") type = (int)MangaType.Manga; else if (query == "novel") type = (int)MangaType.Novel; items = items.Where(item => item.Type == type); alreadyFiltered = true; } _invalidatePreviousSearchResults = alreadyFiltered; //mangaa will not yield anything more manga if (!alreadyFiltered) { if (ViewModelLocator.GeneralMain.SearchHints.Count > 0) //if there are any tags to begin with items = items.Where(item => item.Title.ToLower().Contains(query) || item.Tags.Contains(query)); else items = items.Where(item => item.Title.ToLower().Contains(query)); } } if (WorkMode == AnimeListWorkModes.TopAnime || WorkMode == AnimeListWorkModes.TopManga) items = items.OrderBy(item => item.Index); else switch (SortOption) { case SortOptions.SortTitle: items = items.OrderBy(item => item.Title); break; case SortOptions.SortScore: if (WorkMode != AnimeListWorkModes.SeasonalAnime) items = items.OrderBy(item => item.MyScore).ThenByDescending(item => item.Title); else items = items.OrderBy(item => item.GlobalScore); break; case SortOptions.SortWatched: if (WorkMode == AnimeListWorkModes.SeasonalAnime) items = items.OrderBy(item => item.Index); else items = items.OrderBy(item => item.MyEpisodes); break; case SortOptions.SortLastWatched: items = items.OrderBy(abstraction => abstraction.LastWatched); break; case SortOptions.SortNothing: break; case SortOptions.SortAirDay: var today = (int) DateTime.Now.DayOfWeek; today++; var nonAiringItems = items.Where(abstraction => abstraction.AirDay == -1); var airingItems = items.Where(abstraction => abstraction.AirDay != -1); var airingAfterToday = airingItems.Where(abstraction => abstraction.AirDay >= today); var airingBeforeToday = airingItems.Where(abstraction => abstraction.AirDay < today); if (SortDescending) items = airingAfterToday.OrderByDescending(abstraction => today - abstraction.AirDay) .Concat( airingBeforeToday.OrderByDescending( abstraction => today - abstraction.AirDay) .Concat(nonAiringItems)); else items = airingBeforeToday.OrderBy(abstraction => today - abstraction.AirDay) .Concat( airingAfterToday.OrderBy(abstraction => today - abstraction.AirDay) .Concat(nonAiringItems)); break; case SortOptions.SortStartDate: items = items.OrderBy(abstraction => abstraction.MyStartDate); break; case SortOptions.SortEndDate: items = items.OrderBy(abstraction => abstraction.MyEndDate); break; case SortOptions.SortSeason: var itemsWithStartDate = new List<AnimeItemAbstraction>(); var itemsWithoutStartDate = new List<AnimeItemAbstraction>(); foreach (var item in items) { if (string.IsNullOrEmpty(item.AirStartDate)) { itemsWithoutStartDate.Add(item); } else { itemsWithStartDate.Add(item); } } if (SortDescending) { itemsWithStartDate = itemsWithStartDate.OrderByDescending( item => int.Parse(item.AirStartDate.Substring(0, 4))) .ThenByDescending(item => Utilities.DateToSeason(item.AirStartDate)) .ThenBy(item => item.Title) .ToList(); items = itemsWithStartDate.Concat(itemsWithoutStartDate.OrderBy(item => item.Title)); } else { itemsWithStartDate = itemsWithStartDate.OrderBy( item => int.Parse(item.AirStartDate.Substring(0, 4))) .ThenBy(item => Utilities.DateToSeason(item.AirStartDate)) .ThenBy(item => item.Title) .ToList(); items = itemsWithStartDate.Concat(itemsWithoutStartDate.OrderBy(item => item.Title)); } break; default: throw new ArgumentOutOfRangeException(nameof(SortOption), SortOption, null); } //If we are descending then reverse order if (SortDescending && SortOption != SortOptions.SortAirDay && SortOption != SortOptions.SortSeason) items = items.Reverse(); //Add all abstractions to current set (spread across pages) _animeItemsSet.AddRange(items); //}); //If we have items then we should hide EmptyNotice EmptyNoticeVisibility = _animeItemsSet.Count == 0; //How many pages do we have? if (fakeDelay) await Task.Delay(10); UpdatePageSetup(); UpdateUpperStatus(); }
public AnimeListFilterFlyoutItem(AnimeStatus status) : base((int)status, TextColorBase) { Status = (int)status; Text = XShared.Utils.Utilities.StatusToString(Status); }
public void TestStatus(AnimeStatus value) { _sut.AnimeStatus = value; Assert.Equal(value, _sut.AnimeStatus); }
public void PromptForStatusChange(AnimeStatus to) { try { if (MyStatus == to) return; if (!Settings.StatusPromptEnable) { if(!Settings.StatusPromptProceedOnDisabled) return; ChangeStatus(to); return; } ResourceLocator.MessageDialogProvider.ShowMessageDialogWithInput( $"From : {Utilities.StatusToString((int)MyStatus, !ParentAbstraction.RepresentsAnime)}\nTo : {Utilities.StatusToString((int)to,!ParentAbstraction.RepresentsAnime)}", "Would you like to change current status?","Yes","No",() => ChangeStatus(to)); } catch (Exception) { //TODO access denied excpetion? we can try that } }
private async void ChangeStatus(AnimeStatus status) { LoadingUpdate = true; var myPrevStatus = MyStatus; MyStatus = status; var stat = status; if (Settings.SetStartDateOnWatching && stat == AnimeStatus.Watching && (Settings.OverrideValidStartEndDate || ParentAbstraction.MyStartDate == AnimeItemViewModel.InvalidStartEndDate)) StartDate = DateTimeOffset.Now.ToString("yyyy-MM-dd"); else if (Settings.SetEndDateOnDropped && stat == AnimeStatus.Dropped && (Settings.OverrideValidStartEndDate || ParentAbstraction.MyEndDate == AnimeItemViewModel.InvalidStartEndDate)) EndDate = DateTimeOffset.Now.ToString("yyyy-MM-dd"); else if (Settings.SetEndDateOnCompleted && stat == AnimeStatus.Completed && (Settings.OverrideValidStartEndDate || ParentAbstraction.MyEndDate == AnimeItemViewModel.InvalidStartEndDate)) EndDate = DateTimeOffset.Now.ToString("yyyy-MM-dd"); //in case of series having one episode if(AllEpisodes == 1 && myPrevStatus == AnimeStatus.PlanToWatch && stat == AnimeStatus.Completed) if(Settings.SetStartDateOnWatching && (Settings.OverrideValidStartEndDate || ParentAbstraction.MyStartDate == "0000-00-00")) StartDate = DateTimeOffset.Now.ToString("yyyy-MM-dd"); if (IsRewatching) { if (AllEpisodes != 0 && MyStatus == AnimeStatus.Completed) MyEpisodes = AllEpisodes; IsRewatching = false; } ViewModelLocator.AnimeDetails.UpdateAnimeReferenceUiBindings(Id); var response = await GetAppropriateUpdateQuery().GetRequestResponse(); if (response != "Updated" && Settings.SelectedApiType == ApiType.Mal) MyStatus = myPrevStatus; if (MyStatus == AnimeStatus.Completed && _allEpisodes != 0) PromptForWatchedEpsChange(_allEpisodes); LoadingUpdate = false; }
private async void ChangeStatus(AnimeStatus status) { LoadingUpdate = true; var prevStatus = MyStatus; MyStatus = status; if (Settings.SetStartDateOnWatching && MyStatus == AnimeStatus.Watching && (Settings.OverrideValidStartEndDate || !StartDateValid)) { _startDateTimeOffset = DateTimeOffset.Now; _animeItemReference.StartDate = DateTimeOffset.Now.ToString("yyyy-MM-dd"); StartDateValid = true; RaisePropertyChanged(() => StartDateTimeOffset); RaisePropertyChanged(() => MyStartDate); } else if (Settings.SetEndDateOnDropped && MyStatus == AnimeStatus.Dropped && (Settings.OverrideValidStartEndDate || !EndDateValid)) { _endDateTimeOffset = DateTimeOffset.Now; _animeItemReference.EndDate = DateTimeOffset.Now.ToString("yyyy-MM-dd"); EndDateValid = true; RaisePropertyChanged(() => EndDateTimeOffset); RaisePropertyChanged(() => MyEndDate); } else if (Settings.SetEndDateOnCompleted && MyStatus == AnimeStatus.Completed && (Settings.OverrideValidStartEndDate || !EndDateValid)) { if (prevStatus == AnimeStatus.PlanToWatch) //we have just insta completed the series { _startDateTimeOffset = DateTimeOffset.Now; _animeItemReference.StartDate = DateTimeOffset.Now.ToString("yyyy-MM-dd"); StartDateValid = true; RaisePropertyChanged(() => StartDateTimeOffset); RaisePropertyChanged(() => MyStartDate); } _endDateTimeOffset = DateTimeOffset.Now; _animeItemReference.EndDate = DateTimeOffset.Now.ToString("yyyy-MM-dd"); EndDateValid = true; RaisePropertyChanged(() => EndDateTimeOffset); RaisePropertyChanged(() => MyEndDate); } //in case of series having one episode if (AllEpisodes == 1 && prevStatus == AnimeStatus.PlanToWatch && MyStatus == AnimeStatus.Completed) if (Settings.SetStartDateOnWatching && (Settings.OverrideValidStartEndDate || _animeItemReference.StartDate == "0000-00-00")) { _startDateTimeOffset = DateTimeOffset.Now; _animeItemReference.StartDate = DateTimeOffset.Now.ToString("yyyy-MM-dd"); StartDateValid = true; RaisePropertyChanged(() => StartDateTimeOffset); RaisePropertyChanged(() => MyStartDate); } if (_animeItemReference.IsRewatching) { if (_animeItemReference.AllEpisodes != 0) MyEpisodes = _animeItemReference.AllEpisodes; _animeItemReference.IsRewatching = false; RaisePropertyChanged(() => IsRewatching); RaisePropertyChanged(() => MyStatusBind); } if (_animeItemReference.IsRewatching) { if (_animeItemReference.MyStatus == AnimeStatus.Completed && _animeItemReference.AllEpisodes != 0) _animeItemReference.MyEpisodes = _animeItemReference.AllEpisodes; } var response = await GetAppropriateUpdateQuery().GetRequestResponse(); if (response != "Updated" && Settings.SelectedApiType == ApiType.Mal) MyStatus = prevStatus; if (_animeItemReference is AnimeItemViewModel) if (MyStatus == AnimeStatus.Completed && MyEpisodes != AllEpisodes && AllEpisodes != 0) { ((AnimeItemViewModel) _animeItemReference).PromptForWatchedEpsChange(AllEpisodes); RaisePropertyChanged(() => MyEpisodesBind); } LoadingUpdate = false; }
public async Task GetAnimeFull(ConcurrentBag <SpecialUserAnimeRate> outContainer, AnimeStatus status = AnimeStatus.None) { await GetAnime(outContainer, status).ConfigureAwait(false); await GetInfoForList(outContainer).ConfigureAwait(false); }
public async Task GetAnime(ConcurrentBag <SpecialUserAnimeRate> outContainer, AnimeStatus status = AnimeStatus.None) { try { await UserAnimeRequest.GetSpecialAnime(this.CurrentUser, this.AuthToken, outContainer, status).ConfigureAwait(false); } catch (TokenExpiredException e) { RefreshTokenEvent?.Invoke(this.AuthToken); ErrorTextEvent?.Invoke(e.Message); return; } catch (Exception e) { ErrorTextEvent?.Invoke(e.Message); return; } }
public static DroppyMenuPopup BuildForAnimeStatusSelection(Context context, View parent, Action <AnimeStatus> callback, AnimeStatus currentStatus, bool manga) { ParamRelativeLayout = new ViewGroup.LayoutParams(DimensionsHelper.DpToPx(150), DimensionsHelper.DpToPx(38)); var droppyBuilder = new DroppyMenuPopup.Builder(context, parent); InjectAnimation(droppyBuilder); var listener = new Action <int>(i => callback.Invoke((AnimeStatus)i)); foreach (AnimeStatus value in Enum.GetValues(typeof(AnimeStatus))) { if (value == currentStatus) { droppyBuilder.AddMenuItem( new DroppyMenuCustomItem(BuildItem(context, Utilities.StatusToString((int)value, manga), listener, (int)value, ResourceExtension.BrushSelectedDialogItem, ResourceExtension.AccentColour))); } else //highlighted { droppyBuilder.AddMenuItem( new DroppyMenuCustomItem(BuildItem(context, Utilities.StatusToString((int)value, manga), listener, (int)value))); } } droppyBuilder.SetYOffset(DimensionsHelper.DpToPx(30)); return(droppyBuilder.Build()); }
public AnimeBuilder WithAnimeStatus(AnimeStatus animeStatus) { _animeStatus = animeStatus; return(this); }
public AnimeSearchManager SetStatus(AnimeStatus status) { m_status = status; return(this); }
private void SetDisplayMode(AnimeStatus val) { if (_manuallySelectedViewMode == null) { switch (val) { case AnimeStatus.Watching: DisplayMode = Settings.WatchingDisplayMode; break; case AnimeStatus.Completed: DisplayMode = Settings.CompletedDisplayMode; break; case AnimeStatus.OnHold: DisplayMode = Settings.OnHoldDisplayMode; break; case AnimeStatus.Dropped: DisplayMode = Settings.DroppedDisplayMode; break; case AnimeStatus.PlanToWatch: DisplayMode = Settings.PlannedDisplayMode; break; case AnimeStatus.AllOrAiring: DisplayMode = Settings.AllDisplayMode; break; default: throw new ArgumentOutOfRangeException(nameof(val), val, null); } RaisePropertyChanged(() => DisplayMode); } }
internal static async Task GetSpecialAnime(User user, Token token, ConcurrentBag <SpecialUserAnimeRate> outContainer, AnimeStatus status = AnimeStatus.None) { using (HttpClient client = ClientWithHeaders(token.AccessToken)) { string url; if (!URI.ShikiUrls.TryGetValue(Link.AnimeListV2, out url)) { throw new NoUriDictionaryException(); } url = (status == AnimeStatus.None) ? string.Format(url, user.Id) : string.Concat(string.Format(url, user.Id), "&status=", AnimeParams.AnimeStatusString[status]); var response = await client.GetAsync(url).ConfigureAwait(false); if (response.IsSuccessStatusCode) { var str = await response.Content.ReadAsStringAsync().ConfigureAwait(false); var array = JsonConvert.DeserializeObject <List <SpecialUserAnimeRate> >(str); outContainer.AddRange(array); } else if (response.StatusCode == HttpStatusCode.Unauthorized) { throw new TokenExpiredException(); } else { throw new FailedRequestException(); } } }
internal static GenericStatus ToGeneric(this AnimeStatus @this) => (GenericStatus)@this;