public IFileInfo GetFileInfo(string subpath) { string url = $"{_baseAddress}/{subpath.TrimStart('/')}?file-meta"; string content = _httpClient.GetStringAsync(url).Result; HttpFileDescriptor descriptor = JsonConvert.DeserializeObject <HttpFileDescriptor>(content); return(descriptor.ToFileInfo(_httpClient)); }
public HttpFileInfo(HttpFileDescriptor descriptor, HttpClient httpClient) { Exists = descriptor.Exist; IsDirectory = descriptor.IsDirctory; LastModified = descriptor.LastModified; Length = descriptor.Length; Name = descriptor.Name; PhysicalPath = descriptor.PhysicalPath; _httpClient = httpClient; }
public async Task InvokeAsync(HttpContext httpcontext) { if (httpcontext.Request.Query.ContainsKey("dir-meta")) { var dirContent = _fileProvider.GetDirectoryContents(httpcontext.Request.Path); var dirDiriptor = new HttpDirectoryContentDescriptor(dirContent, CreatePhysicalPathResolver(httpcontext, true)); await httpcontext.Response.WriteAsync(JsonConvert.SerializeObject(dirDiriptor)); } else if (httpcontext.Request.Query.ContainsKey("file-meta")) { var fileInfo = _fileProvider.GetFileInfo(httpcontext.Request.Path); var fileDescriptor = new HttpFileDescriptor(fileInfo, CreatePhysicalPathResolver(httpcontext, false)); await httpcontext.Response.WriteAsync(JsonConvert.SerializeObject(fileDescriptor)); } else { await httpcontext.Response.SendFileAsync(_fileProvider.GetFileInfo(httpcontext.Request.Path)); } }