示例#1
0
        public async Task <MovieRequestResult> RequestMovieAsync(MovieUserRequester requester, Movie movie)
        {
            var retryCount = 0;

            while (retryCount <= 5)
            {
                try
                {
                    var ombiUser = await FindLinkedOmbiUserAsync(requester.UserId, requester.Username);

                    if (ombiUser.CanRequestMovies && ombiUser.MoviesQuotaRemaining > 0)
                    {
                        var response = await HttpPostAsync(ombiUser, $"{BaseURL}/api/v1/Request/Movie", JsonConvert.SerializeObject(new { theMovieDbId = movie.TheMovieDbId }));

                        await response.ThrowIfNotSuccessfulAsync("OmbiCreateMovieRequest failed", x => x.error);

                        return(new MovieRequestResult());
                    }

                    return(new MovieRequestResult
                    {
                        WasDenied = true
                    });
                }
                catch (System.Exception ex)
                {
                    _logger.LogError(ex, $"An error while requesting movie \"{movie.Title}\" from Ombi: " + ex.Message);
                    retryCount++;
                    await Task.Delay(1000);
                }
            }

            throw new System.Exception("An error occurred while requesting a movie from oOmbimbi");
        }
示例#2
0
        public async Task <MovieRequestResult> RequestMovieAsync(MovieUserRequester requester, Movie movie)
        {
            var retryCount = 0;

            while (retryCount <= 5)
            {
                try
                {
                    if (string.IsNullOrEmpty(movie.DownloadClientId))
                    {
                        await CreateMovieInRadarr(movie);
                    }
                    else
                    {
                        await UpdateExistingMovie(movie);
                    }

                    return(new MovieRequestResult());
                }
                catch (System.Exception ex)
                {
                    _logger.LogError(ex, $"An error while requesting movie \"{movie.Title}\" from Radarr: " + ex.Message);
                    retryCount++;
                    await Task.Delay(1000);
                }
            }

            throw new System.Exception("An error occurred while requesting a movie from Radarr");
        }
示例#3
0
        async Task <MovieRequestResult> IMovieRequester.RequestMovieAsync(MovieUserRequester requester, Movie movie)
        {
            try
            {
                var overseerrUser = await FindLinkedOverseerUserAsync(requester.UserId, requester.Username);

                var response = await HttpPostAsync(overseerrUser, $"{BaseURL}request", JsonConvert.SerializeObject(new
                {
                    mediaId   = int.Parse(movie.TheMovieDbId),
                    mediaType = "movie",
                }));

                if (response.StatusCode == System.Net.HttpStatusCode.Forbidden)
                {
                    return(new MovieRequestResult
                    {
                        WasDenied = true
                    });
                }

                await response.ThrowIfNotSuccessfulAsync("OverseerrRequestMovieRequest failed", x => x.error);

                return(new MovieRequestResult());
            }
            catch (System.Exception ex)
            {
                _logger.LogError(ex, $"An error while requesting movie \"{movie.Title}\" from Overseerr: " + ex.Message);
                throw new System.Exception($"An error while requesting movie \"{movie.Title}\" from Overseerr: " + ex.Message);
            }
        }
示例#4
0
 public MovieRequest(MovieUserRequester user, int categoryId)
 {
     User       = user;
     CategoryId = categoryId;
 }
示例#5
0
 public Task <MovieRequestResult> RequestMovieAsync(MovieUserRequester requester, Movie movie)
 {
     return(CreateInstance <IMovieRequester>().RequestMovieAsync(requester, movie));
 }