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)); }
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)); }
public Thumbnail(ThumbnailId thumbnailId, byte[] data) { ThumbnailId = thumbnailId; Data = data; }