示例#1
0
        private async Task <FileOperationResult <IImage> > ReleaseSecondaryImageAction(Guid id, int imageId, EntityTagHeaderValue etag = null)
        {
            try
            {
                var release = await GetRelease(id);

                if (release == null)
                {
                    return(new FileOperationResult <IImage>(true, string.Format("Release Not Found [{0}]", id)));
                }
                byte[] imageBytes    = null;
                string artistFolder  = null;
                string releaseFolder = null;
                try
                {
                    // See if cover art file exists in release folder
                    artistFolder = release.Artist.ArtistFileFolder(Configuration);
                    if (!Directory.Exists(artistFolder))
                    {
                        Logger.LogWarning($"Artist Folder [{artistFolder}], Not Found For Artist `{release.Artist}`");
                    }
                    else
                    {
                        releaseFolder = release.ReleaseFileFolder(artistFolder);
                        if (!Directory.Exists(releaseFolder))
                        {
                            Logger.LogWarning($"Release Folder [{releaseFolder}], Not Found For Release `{release}`");
                        }
                        else
                        {
                            var releaseSecondaryImages = ImageHelper
                                                         .FindImageTypeInDirectory(new DirectoryInfo(releaseFolder), ImageType.ReleaseSecondary)
                                                         .ToArray();
                            if (releaseSecondaryImages.Length >= imageId && releaseSecondaryImages[imageId] != null)
                            {
                                imageBytes = File.ReadAllBytes(releaseSecondaryImages[imageId].FullName);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.LogError(ex,
                                    $"Error Reading Release Folder [{releaseFolder}] Artist Folder [{artistFolder}] For Artist `{release.Artist.Id}`");
                }

                IImage image = new Library.Imaging.Image(id)
                {
                    Bytes       = imageBytes,
                    CreatedDate = release.CreatedDate
                };
                return(GenerateFileOperationResult(id, image, etag));
            }
            catch (Exception ex)
            {
                Logger.LogError($"Error fetching Release Thumbnail [{id}]", ex);
            }

            return(new FileOperationResult <IImage>(OperationMessages.ErrorOccured));
        }
示例#2
0
        private async Task <FileOperationResult <IImage> > TrackImageAction(Guid id, int?width, int?height, EntityTagHeaderValue etag = null)
        {
            try
            {
                var track = await GetTrack(id);

                if (track == null)
                {
                    return(new FileOperationResult <IImage>(true, string.Format("Track Not Found [{0}]", id)));
                }
                IImage image = new Library.Imaging.Image(id)
                {
                    CreatedDate = track.CreatedDate
                };
                var trackImageFileName = track.PathToTrackThumbnail(Configuration);
                if (File.Exists(trackImageFileName))
                {
                    image.Bytes = File.ReadAllBytes(trackImageFileName);
                }
                if (image.Bytes == null || !image.Bytes.Any())
                {
                    // If no track image is found then return image for release
                    return(await ReleaseImage(track.ReleaseMedia.Release.RoadieId, width, height, etag));
                }
                return(GenerateFileOperationResult(id, image, etag));
            }
            catch (Exception ex)
            {
                Logger.LogError($"Error fetching Track Thumbnail [{id}]", ex);
            }

            return(new FileOperationResult <IImage>(OperationMessages.ErrorOccured));
        }
示例#3
0
        /// <summary>
        /// Get image for an artist, see if the artist has an image in their folder and use that else use Artist.Thumbnail, is also not found use Artist DefaultNotFound image.
        /// </summary>
        private async Task <FileOperationResult <IImage> > ArtistImageAction(Guid id, EntityTagHeaderValue etag = null)
        {
            try
            {
                var artist = await GetArtist(id);

                if (artist == null)
                {
                    return(new FileOperationResult <IImage>(true, string.Format("Artist Not Found [{0}]", id)));
                }
                byte[] imageBytes   = null;
                string artistFolder = null;
                try
                {
                    // See if artist images exists in artist folder
                    artistFolder = artist.ArtistFileFolder(Configuration);
                    if (!Directory.Exists(artistFolder))
                    {
                        Logger.LogWarning($"Artist Folder [{artistFolder}], Not Found For Artist `{artist}`");
                    }
                    else
                    {
                        var artistImages = ImageHelper.FindImageTypeInDirectory(new DirectoryInfo(artistFolder), ImageType.Artist);
                        if (artistImages.Any())
                        {
                            imageBytes = File.ReadAllBytes(artistImages.First().FullName);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.LogError(ex, $"Error Reading Folder [{artistFolder}] For Artist [{artist.Id}]");
                }

                IImage image = new Library.Imaging.Image(id)
                {
                    Bytes = imageBytes,
                };
                if (imageBytes == null || !imageBytes.Any())
                {
                    image = DefaultNotFoundImages.Artist;
                }
                return(GenerateFileOperationResult(id, image, etag));
            }
            catch (Exception ex)
            {
                Logger.LogError($"Error fetching Artist Thumbnail [{id}]", ex);
            }

            return(new FileOperationResult <IImage>(OperationMessages.ErrorOccured));
        }
示例#4
0
        private async Task <FileOperationResult <IImage> > UserImageAction(Guid id, EntityTagHeaderValue etag = null)
        {
            try
            {
                var user = await GetUser(id);

                if (user == null)
                {
                    return(new FileOperationResult <IImage>(true, string.Format("User Not Found [{0}]", id)));
                }
                IImage image = new Library.Imaging.Image(id)
                {
                    CreatedDate = user.CreatedDate.Value
                };
                var userImageFilename = user.PathToImage(Configuration);
                try
                {
                    if (File.Exists(userImageFilename))
                    {
                        image.Bytes = File.ReadAllBytes(userImageFilename);
                    }
                }
                catch (Exception ex)
                {
                    Logger.LogError(ex, $"Error Reading Image File [{userImageFilename}]");
                }
                if (image.Bytes == null || !image.Bytes.Any())
                {
                    image = DefaultNotFoundImages.User;
                }
                return(GenerateFileOperationResult(id, image, etag, "image/png"));
            }
            catch (Exception ex)
            {
                Logger.LogError($"Error fetching User Thumbnail [{id}]", ex);
            }

            return(new FileOperationResult <IImage>(OperationMessages.ErrorOccured));
        }