Esempio n. 1
0
        public Task <ArtistResult> AddArtist(ArtistAdd artist, string apiKey, string baseUrl)
        {
            var request = new Request($"{ApiVersion}/artist", baseUrl, HttpMethod.Post);

            request.AddJsonBody(artist);
            AddHeaders(request, apiKey);
            return(_api.Request <ArtistResult>(request));
        }
        public ArtistBase AddNew(ArtistAdd newItem)
        {
            // Ensure that we can continue
            if (newItem == null)
            {
                return(null);
            }
            else
            {
                // Add the new object
                Artist addedItem = RAdd(Mapper.Map <Artist>(newItem));

                // Return the object
                return(Mapper.Map <ArtistBase>(addedItem));
            }
        }
Esempio n. 3
0
        // POST: api/Artists
        public IHttpActionResult Post([FromBody] ArtistAdd newItem)
        {
            // Ensure that the URI is clean (and does not have an id parameter)
            if (Request.GetRouteData().Values["id"] != null)
            {
                return(BadRequest("Invalid request URI"));
            }

            // Ensure that a "newItem" is in the entity body
            if (newItem == null)
            {
                return(BadRequest("Must send an entity body with the request"));
            }

            // Ensure that we can use the incoming data
            if (ModelState.IsValid)
            {
                // Attempt to add the new object
                var addedItem = m.Artists.AddNew(newItem);

                // Notice the ApiController convenience methods
                if (addedItem == null)
                {
                    // HTTP 400
                    return(BadRequest("Cannot add the object"));
                }
                else
                {
                    // HTTP 201 with the new object in the entity body
                    // Notice how to create the URI for the Location header

                    var uri = Url.Link("DefaultApi", new { id = addedItem.Id });
                    return(Created <ArtistBase>(uri, addedItem));
                }
            }
            else
            {
                // HTTP 400
                return(BadRequest(ModelState));
            }
        }
Esempio n. 4
0
        private async Task <SenderResult> SendToLidarr(AlbumRequest model, LidarrSettings settings)
        {
            var qualityToUse = int.Parse(settings.DefaultQualityProfile);
            //if (model.QualityOverride > 0)
            //{
            //    qualityToUse = model.QualityOverride;
            //}

            var rootFolderPath = /*model.RootPathOverride <= 0 ?*/ settings.DefaultRootPath /*: await RadarrRootPath(model.RootPathOverride, settings)*/;

            // Need to get the artist
            var artist = await _lidarrApi.GetArtistByForeignId(model.ForeignArtistId, settings.ApiKey, settings.FullUri);

            if (artist == null || artist.id <= 0)
            {
                // Create artist
                var newArtist = new ArtistAdd
                {
                    foreignArtistId = model.ForeignArtistId,
                    addOptions      = new Addoptions
                    {
                        monitored = true,
                        searchForMissingAlbums = false,
                        selectedOption         = 6, // None
                        AlbumsToMonitor        = new[] { model.ForeignAlbumId }
                    },
                    added             = DateTime.Now,
                    monitored         = true,
                    albumFolder       = settings.AlbumFolder,
                    artistName        = model.ArtistName,
                    cleanName         = model.ArtistName.ToLowerInvariant().RemoveSpaces(),
                    images            = new Image[] { },
                    languageProfileId = settings.LanguageProfileId,
                    links             = new Link[] {},
                    metadataProfileId = settings.MetadataProfileId,
                    qualityProfileId  = qualityToUse,
                    rootFolderPath    = rootFolderPath,
                };

                var result = await _lidarrApi.AddArtist(newArtist, settings.ApiKey, settings.FullUri);

                if (result != null && result.id > 0)
                {
                    // Search for it
                    if (!settings.AddOnly)
                    {
                        // get the album
                        var album = await _lidarrApi.GetAllAlbumsByArtistId(result.id, settings.ApiKey, settings.FullUri);

                        var albumToSearch = album.FirstOrDefault(x =>
                                                                 x.foreignAlbumId.Equals(model.ForeignAlbumId, StringComparison.InvariantCultureIgnoreCase));
                        var maxRetryCount = 10; // 5 seconds
                        var currentRetry  = 0;
                        while (albumToSearch != null)
                        {
                            if (currentRetry >= maxRetryCount)
                            {
                                break;
                            }
                            currentRetry++;
                            await Task.Delay(500);

                            album = await _lidarrApi.GetAllAlbumsByArtistId(result.id, settings.ApiKey, settings.FullUri);

                            albumToSearch = album.FirstOrDefault(x =>
                                                                 x.foreignAlbumId.Equals(model.ForeignAlbumId, StringComparison.InvariantCultureIgnoreCase));
                        }


                        if (albumToSearch != null)
                        {
                            await _lidarrApi.AlbumSearch(new[] { albumToSearch.id }, settings.ApiKey, settings.FullUri);
                        }
                    }
                    return(new SenderResult {
                        Message = "Album has been requested!", Sent = true, Success = true
                    });
                }
            }
            else
            {
                SenderResult result = await SetupAlbum(model, artist, settings);

                return(result);
            }

            return(new SenderResult {
                Success = false, Sent = false, Message = "Album is already monitored"
            });
        }