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)); } }
// 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)); } }
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" }); }