예제 #1
0
        /// <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);
                }
            }
        }
예제 #2
0
 /// <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;
예제 #3
0
 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);
        }