Exemplo n.º 1
0
        public Task <Result <Thumbnail, Error> > Get(Name gallery, ThumbnailId id)
        {
            if (_options.FileExtensions && id.FormatHint.IsNone)
            {
                return(Task.FromResult(Result.Failure <Thumbnail, Error>(new Error(ErrorCode.ImplementationError, "Format hint is required!"))));
            }

            var data = File.ReadAllBytes(GeneratePath(gallery, id));

            return(Task.FromResult(Result.Success <Thumbnail, Error>(new Thumbnail(id, data))));
        }
        public async Task <Result <Thumbnail, Error> > Get(Name gallery, ThumbnailId id)
        {
            var cursor = await _client.Thumbnails(gallery).FindAsync(s => s.Id.ImageId == id.ImageId.ToByteArray() && s.Id.Tag == id.Tag.ToString()).ConfigureAwait(false);

            var snapshot = await cursor.ToListAsync().ConfigureAwait(false);

            return(snapshot.Count == 1
                ? Result.Success <Thumbnail, Error>(new Thumbnail(
                                                        thumbnailId: new ThumbnailId(new Id(snapshot[0].Id.ImageId), Name.FromString(snapshot[0].Id.Tag).UnwrapOrThrow(), Option.None()),
                                                        data: snapshot[0].Data))
                : Result.Failure <Thumbnail, Error>(ErrorCode.NoSuchRecord));
        }
Exemplo n.º 3
0
        private string GeneratePath(Name gallery, ThumbnailId id)
        {
            var fileName = _options.FileExtensions
                ? $"{id.Tag}.{id.FormatHint.UnwrapOrThrow().FileExtension}"
                : id.Tag.ToString();

            fileName = (_options.TagDelimiter == '/')
                ? Path.Combine(id.ImageId.ToString(), fileName)
                : id.ImageId.ToString() + _options.TagDelimiter + fileName;

            return(Path.Combine(_options.Directory, gallery.ToString(), fileName));
        }
Exemplo n.º 4
0
 public Thumbnail(ThumbnailId thumbnailId, byte[] data)
 {
     ThumbnailId = thumbnailId;
     Data        = data;
 }