Example #1
0
        private async Task DownloadInternal(string fid, Action <Stream> writer)
        {
            ConnectionAddress connectionAddress;

            if (_option.RestOption.EnableReadJwt)
            {
                var lookupRequest  = new LookupRequest(fid, true);
                var lookupResponse = await _executer.ExecuteAsync(lookupRequest);

                var url = lookupResponse.Locations.FirstOrDefault().Url;
                connectionAddress = new ConnectionAddress(url);
            }
            else
            {
                var connection = _connectionManager.GetVolumeConnectionByVolumeIdOrFid(fid);
                connectionAddress = connection.ConnectionAddress;
            }
            await Task.Factory.StartNew(() =>
            {
                var client           = GetDownloadClient(connectionAddress);
                IRestRequest request = new RestRequest("/{fid}");
                request.AddUrlSegment("fid", fid);
                request.ResponseWriter = writer;
                var response           = client.DownloadData(request);
            });
        }
        /// <summary>根据Fid删除文件
        /// </summary>
        /// <param name="fid">文件Id</param>
        /// <returns><see cref="Seaweedfs.Client.Rest.DeleteFileResponse"/></returns>
        public async Task <DeleteFileResponse> DeleteFile(string fid)
        {
            if (_option.RestOption.EnableJwt)
            {
                var lookupRequest = new LookupRequest(fid);
                await _seaweedfsExecuter.ExecuteAsync(lookupRequest);
            }
            var request = new DeleteFileRequest(fid);

            return(await _seaweedfsExecuter.ExecuteAsync(request));
        }