Ejemplo n.º 1
0
        private async Task <string> ImportImage(string fileName, string id, bool overwrite)
        {
            if (FileMetaDataStore.Contains(fileName))
            {
                return(fileName);
            }
            var prefix = this.GetType().Name;
            var result = default(string);

            if (overwrite || !FileMetaDataStore.Exists(prefix, id, out result))
            {
#if NET40
                Semaphore.Wait();
#else
                await Semaphore.WaitAsync().ConfigureAwait(false);
#endif
                try
                {
                    if (overwrite || !FileMetaDataStore.Exists(prefix, id, out result))
                    {
                        return(await FileMetaDataStore.WriteAsync(prefix, id, fileName).ConfigureAwait(false));
                    }
                }
                finally
                {
                    Semaphore.Release();
                }
            }
            return(result);
        }
Ejemplo n.º 2
0
        protected virtual async Task <string> ImportImage(Discogs.ReleaseLookup releaseLookup)
        {
            var urls = new[]
            {
                releaseLookup.Release.CoverUrl,
                releaseLookup.Release.ThumbUrl
            };

            foreach (var url in urls)
            {
                if (!string.IsNullOrEmpty(url))
                {
                    try
                    {
                        var fileName = await FileMetaDataStore.IfNotExistsAsync(PREFIX, url, async result =>
                        {
                            Logger.Write(this, LogLevel.Debug, "Downloading data from url: {0}", url);
                            var data = await this.Discogs.GetData(url).ConfigureAwait(false);
                            if (data == null)
                            {
                                Logger.Write(this, LogLevel.Error, "Failed to download data from url \"{0}\": Unknown error.", url);
                                return(string.Empty);
                            }
                            return(await FileMetaDataStore.WriteAsync(PREFIX, url, data).ConfigureAwait(false));
                        }).ConfigureAwait(false);

                        if (!string.IsNullOrEmpty(fileName))
                        {
                            return(fileName);
                        }
                    }
                    catch (Exception e)
                    {
                        Logger.Write(this, LogLevel.Error, "Failed to download data from url \"{0}\": {1}", url, e.Message);
                        releaseLookup.AddError(e.Message);
                    }
                }
            }
            return(string.Empty);
        }
Ejemplo n.º 3
0
 private static Task <string> ImportImage(IPicture value, string id, bool overwrite)
 {
     return(FileMetaDataStore.IfNotExistsAsync(PREFIX, id, result => FileMetaDataStore.WriteAsync(PREFIX, id, value.Data.Data), overwrite));
 }