/// <summary> /// Download Object /// </summary> /// <param name="request"></param> /// <param name="savePath"></param> /// <param name="filename"></param> public async Task DownloadObject(GetObjectRequest request, string savePath, string filename) { var uri = new Uri($"{GetEndPointNoneVersion(ObjectStorageServices.Object(request.NamespaceName, request.BucketName), this.Region)}/{request.ObjectName}"); var httpRequestHeaderParam = new HttpRequestHeaderParam() { IfMatch = request.IfMatch, IfNoneMatch = request.IfNoneMatch, OpcClientRequestId = request.OpcClientRequestId, Range = request.Range }; var webResponse = await this.RestClientAsync.Get(uri, httpRequestHeaderParam); using (var stream = webResponse.GetResponseStream()) using (var fs = new FileStream($"{savePath}/{filename}", FileMode.Create, FileAccess.Write)) { byte[] readData = new byte[1024]; while (true) { int readSize = stream.Read(readData, 0, readData.Length); if (readSize == 0) { break; } fs.Write(readData, 0, readSize); } } }
/// <summary> /// To use this and other API operations, you must be authorized in an IAM policy. If you are not authorized, talk to an administrator. /// If you are an administrator who needs to write policies to give users access, see Getting Started with Policies. /// </summary> /// <param name="request"></param> /// <returns></returns> public ListObjectsResponse ListObjects(ListObjectsRequest request) { var uri = new Uri($"{GetEndPointNoneVersion(ObjectStorageServices.Object(request.NamespaceName, request.BucketName), this.Region)}?{request.GetOptionQuery()}"); var webResponse = this.RestClient.Get(uri, new HttpRequestHeaderParam { OpcClientRequestId = request.OpcClientRequestId }); using (var stream = webResponse.GetResponseStream()) using (var reader = new StreamReader(stream)) { var response = reader.ReadToEnd(); return(new ListObjectsResponse() { ListObjects = JsonSerializer.Deserialize <ListObjectDetails>(response), OpcRequestId = webResponse.Headers.Get("opc-request-id"), OpcClientRequestId = webResponse.Headers.Get("opc-client-request-id") }); } }
/// <summary> /// Gets the metadata and body of an object. /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <GetObjectResponse> GetObject(GetObjectRequest request) { var uri = new Uri($"{GetEndPointNoneVersion(ObjectStorageServices.Object(request.NamespaceName, request.BucketName), this.Region)}/{request.ObjectName}"); var httpRequestHeaderParam = new HttpRequestHeaderParam() { IfMatch = request.IfMatch, IfNoneMatch = request.IfNoneMatch, OpcClientRequestId = request.OpcClientRequestId, Range = request.Range }; var webResponse = await this.RestClientAsync.Get(uri, httpRequestHeaderParam); using (var stream = webResponse.GetResponseStream()) using (var reader = new StreamReader(stream)) { var response = reader; var contentRange = webResponse.Headers.Get("content-range"); var opcMeta = webResponse.Headers.Get("opc-meta-*"); return(new GetObjectResponse() { FileURL = uri.ToString(), ETag = webResponse.Headers.Get("ETag"), OpcRequestId = webResponse.Headers.Get("opc-request-id"), OpcClientRequestId = webResponse.Headers.Get("opc-client-request-id"), ArchivalState = webResponse.Headers.Get("archival-state"), ContentType = webResponse.Headers.Get("content-type"), ContentLanguage = webResponse.Headers.Get("content-language"), ContentEncoding = webResponse.Headers.Get("content-encoding"), ContentLength = long.Parse(webResponse.Headers.Get("content-length")), ContentMd5 = webResponse.Headers.Get("content-md5"), LastModified = webResponse.Headers.Get("last-modified"), OpcMultipartMd5 = webResponse.Headers.Get("opc-multipart-md5"), TimeOfArchival = webResponse.Headers.Get("time-of-archival") }); } }