private bool TryGetCacheImageStream(string id, string imageUrl, out Stream outImageStream) { id = $"$/{id}"; if (_fileStorage.Exists(id)) { var file = _fileStorage.FindById(id); var stream = new MemoryStream((int)file.Length); try { file.CopyTo(stream); stream.Seek(0, SeekOrigin.Begin); _fileStorage.SetMetadata(id, new BsonDocument(new Dictionary <string, BsonValue>() { { "updateAt", DateTime.Now } })); outImageStream = stream; return(true); } catch { stream.Dispose(); throw; } } else { outImageStream = null; return(false); } }
public async Task <Stream> GetImageAsync(string path) { try { if (path.StartsWith("/")) { return(await ImageClient.GetStreamAsync("original" + path)); } else if (!path.StartsWith("w")) { return(await YouTubeClient.GetStreamAsync(String.Format("{0}/0.jpg", path))); } string id = path.ComputeHash(); LiteFileInfo fileInfo = FileStorage.FindById(id); if (fileInfo == null) { try { using (Stream stream = await ImageClient.GetStreamAsync(path)) { if (stream != null) { using (MemoryStream memoryStream = new MemoryStream()) { stream.CopyTo(memoryStream); if (memoryStream.Length > 0) { memoryStream.Position = 0; fileInfo = FileStorage.Upload(id, path, memoryStream); } } } } } catch (Exception) { return(null); } } if (fileInfo == null) { return(null); } MemoryStream cachedStream = new MemoryStream(); fileInfo.CopyTo(cachedStream); cachedStream.Position = 0; return(cachedStream); } catch (Exception) { return(null); } }
public TFile Get(String idOrName) { LiteFileInfo fileInfo = _fileStorage.FindById(idOrName); if (fileInfo == null) { return(null); } return(fileInfo.ToStorageFile <TFile>()); }
public IEnumerable <BsonValue> Execute(StringScanner s, LiteEngine engine) { var fs = new LiteStorage(engine); var id = this.ReadId(s); var filename = s.Scan(@"\s*.*").Trim(); var file = fs.FindById(id); if (file != null) { file.SaveAs(filename); yield return(file.AsDocument); } }
public void Execute(LiteEngine engine, StringScanner s, Display display, InputCommand input, Env env) { var fs = new LiteStorage(engine); var id = this.ReadId(s); var filename = s.Scan(@"\s*.*").Trim(); var file = fs.FindById(id); if (file != null) { file.SaveAs(filename); display.WriteResult(file.AsDocument); } }