/// <summary> /// Attach Get Episode Commands /// </summary> /// <param name="client">Spotify Sdk Client</param> /// <param name="response">Episode Response</param> /// <param name="overrideIsAttach">Override Is Attach?</param> public static void AttachGetEpisodeCommands( this ISpotifySdkClient client, EpisodeResponse response, bool?overrideIsAttach = null) { var isAttach = GetConfig(client.Config.IsAttachGetEpisodeCommands, overrideIsAttach); if (response != null) { // Episode Command if (client.CommandActions.Episode != null) { response.Command = new GenericCommand <EpisodeResponse>( client.CommandActions.Episode); } // Add User Playback Command response.AddUserPlaybackCommand = new GenericCommand <IPlaybackResponse>( client.AddUserPlaybackHandler); // Add User Playback Queue Command response.AddUserPlaybackQueueCommand = new GenericCommand <IPlayItemResponse>( client.AddUserPlaybackQueueHandler); // Add Playlist Item Command if (client.CommandActions.AddPlaylistItem != null) { response.AddPlaylistItemCommand = new GenericCommand <IPlayItemResponse>( client.CommandActions.AddPlaylistItem); } // Show Command if (response?.Show != null) { client.AttachGetShowCommands(response.Show, isAttach); } } }
/// <summary> /// Get Progress Percentage /// </summary> /// <param name="response">Episode Response</param> /// <returns>Episode Progress</returns> public static int GetProgressPercentage(this EpisodeResponse response) => response?.ResumePoint != null ? response.ResumePoint.FullyPlayed ? percentage : (int)((double)response.ResumePoint.ResumePosition / response.Duration * percentage) : zero_percent;
public Episode(EpisodeResponse response) { Id = response.Id; Title = response.Title; Description = response.Description; Published = response.Published; Duration = response.Duration; Url = response.Url; listenLaterService = ServicesProvider.GetService <ListenLaterService>(); IsInListenLater = listenLaterService.IsInListenLater(this); }
/// <summary> /// Attach Get Episode Toggles /// </summary> /// <param name="client">Spotify Sdk Client</param> /// <param name="response">Show Response</param> public static async Task AttachGetEpisodeToggles( this ISpotifySdkClient client, EpisodeResponse response) { if (client.Config.IsAttachGetEpisodeToggles && response != null) { // Toggle Favourites response.ToggleFavourite = await client.GetToggleAsync( ToggleType.Favourites, response.Id, (byte)FavouriteType.Episode); } }
public async Task LoadMore() { if (!IsLoading) { IsLoading = true; StateHasChanged(); //await Task.Delay(1000); EpisodeResponse ep = await _data.GetEpisodes(PageSize, PageNumber); if (ep == null) { return; } for (int j = 0; j < ep.Data.Count; j++) { EpisodeClient episodeClient = new EpisodeClient(ep.Data[j]); episodeClient.AnimationDelay = _cssDelay + j * 100; Episodes.Add(episodeClient); if (Episodes[Episodes.Count - 1].Image == null || Episodes[Episodes.Count - 1].Image == "") { Episodes[Episodes.Count - 1].Image = "assets/WhiteThemenschaedel.png"; if (random.Next(1, 10001) > 9995) { Episodes[Episodes.Count - 1].Image = "assets/WhiteThemenschaedel3.png"; } if (random.Next(1, 10001) > 9900) { Episodes[Episodes.Count - 1].Image = "assets/WhiteThemenschaedel2.png"; } } } PageNumber++; IsLoading = false; StateHasChanged(); //at the end of pages or results stop loading anymore if (PageNumber > ep.Meta.EpisodeMaxPageCount) { await StopListener(); } } }
public async Task <ActionResult <EpisodeResponse> > GetEpisodes(int page, int per_page) { if (page == 0) { page = 1; } int userId = 0; try { User user = await _authenticationService.GetUserFromValidToken(Request); userId = user.Id; } catch (TokenDoesNotExistException e) { // ignore lol -> could happen all the time } catch (Exception e) { SentrySdk.CaptureException(e); _logger.LogError(e.Message); } try { EpisodeResponse episodeResponse = new EpisodeResponse(); episodeResponse.Data = await _databaseService.GetEpisodesAsync(page, per_page, userId); episodeResponse.Meta.EpisodeCount = await _databaseService.GetEpisodeCountAsync(); episodeResponse.Meta.EpisodeMaxPageCount = (int)Math.Ceiling((decimal)episodeResponse.Meta.EpisodeCount / per_page); if (episodeResponse.Data.Count == 0) { return(NoContent()); } return(Ok(episodeResponse)); } catch (Exception e) { SentrySdk.CaptureException(e); _logger.LogError(e.Message); return(Problem()); } }
public async Task <EpisodeResponse> GetEpisodes(int count, int page) { try { HttpResponseMessage response = null; using (var requestMessage = new HttpRequestMessage(HttpMethod.Get, $"{_httpClient.BaseAddress}episodes?page={page.ToString()}&per_page={count.ToString()}")) { LoginResponseExtended token = await _userSession.GetToken(); if (token != null) { requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken); } response = await _httpClient.SendAsync(requestMessage); } if (response.IsSuccessStatusCode) { string json = response.Content.ReadAsStringAsync().Result; EpisodeResponse ep = JsonSerializer.Deserialize <EpisodeResponse>(json); return(ep); } if (response.StatusCode == HttpStatusCode.NotFound) { _toastService.ShowError("Error 404: Backend server is offline."); SentrySdk.CaptureMessage("API: Error 404"); } } catch (Exception e) { SentrySdk.CaptureException(e); } return(null); }