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));
        }
Example #2
0
 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;
 }
Example #3
0
        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));
            }
        }