소스 검색

refactory client.go for xml handling

mingzai.ym 8 년 전
부모
커밋
adfd0f67ab
1개의 변경된 파일34개의 추가작업 그리고 88개의 파일을 삭제
  1. 34 88
      oss/client.go

+ 34 - 88
oss/client.go

@@ -97,23 +97,19 @@ func (client Client) CreateBucket(bucketName string, options ...Option) error {
 	headers := make(map[string]string)
 	handleOptions(headers, options)
 
-	buffer := new(bytes.Buffer)
+	params := map[string]interface{}{}
+	var err error
+	var resp *Response
 
 	isOptSet, val, _ := isOptionSet(options, storageClass)
 	if isOptSet {
 		cbConfig := createBucketConfiguration{StorageClass: val.(StorageClassType)}
-		bs, err := xml.Marshal(cbConfig)
-		if err != nil {
-			return err
-		}
-		buffer.Write(bs)
-
-		contentType := http.DetectContentType(buffer.Bytes())
-		headers[HTTPHeaderContentType] = contentType
+		resp, err = client.doXml("PUT", bucketName, params, headers, cbConfig)
+	} else {
+		buffer := new(bytes.Buffer)
+		resp, err = client.do("PUT", bucketName, params, headers, buffer)
 	}
 
-	params := map[string]interface{}{}
-	resp, err := client.do("PUT", bucketName, params, headers, buffer)
 	if err != nil {
 		return err
 	}
@@ -290,20 +286,9 @@ func (client Client) GetBucketACL(bucketName string) (GetBucketACLResult, error)
 //
 func (client Client) SetBucketLifecycle(bucketName string, rules []LifecycleRule) error {
 	lxml := lifecycleXML{Rules: convLifecycleRule(rules)}
-	bs, err := xml.Marshal(lxml)
-	if err != nil {
-		return err
-	}
-	buffer := new(bytes.Buffer)
-	buffer.Write(bs)
-
-	contentType := http.DetectContentType(buffer.Bytes())
-	headers := map[string]string{}
-	headers[HTTPHeaderContentType] = contentType
 
-	params := map[string]interface{}{}
-	params["lifecycle"] = nil
-	resp, err := client.do("PUT", bucketName, params, headers, buffer)
+	params := map[string]interface{}{"lifecycle": nil}
+	resp, err := client.doXml("PUT", bucketName, params, nil, lxml)
 	if err != nil {
 		return err
 	}
@@ -379,20 +364,8 @@ func (client Client) SetBucketReferer(bucketName string, referers []string, allo
 		}
 	}
 
-	bs, err := xml.Marshal(rxml)
-	if err != nil {
-		return err
-	}
-	buffer := new(bytes.Buffer)
-	buffer.Write(bs)
-
-	contentType := http.DetectContentType(buffer.Bytes())
-	headers := map[string]string{}
-	headers[HTTPHeaderContentType] = contentType
-
-	params := map[string]interface{}{}
-	params["referer"] = nil
-	resp, err := client.do("PUT", bucketName, params, headers, buffer)
+	params := map[string]interface{}{"referer": nil}
+	resp, err := client.doXml("PUT", bucketName, params, nil, rxml)
 	if err != nil {
 		return err
 	}
@@ -437,32 +410,21 @@ func (client Client) GetBucketReferer(bucketName string) (GetBucketRefererResult
 //
 func (client Client) SetBucketLogging(bucketName, targetBucket, targetPrefix string,
 	isEnable bool) error {
-	var err error
-	var bs []byte
-	if isEnable {
-		lxml := LoggingXML{}
-		lxml.LoggingEnabled.TargetBucket = targetBucket
-		lxml.LoggingEnabled.TargetPrefix = targetPrefix
-		bs, err = xml.Marshal(lxml)
-	} else {
-		lxml := loggingXMLEmpty{}
-		bs, err = xml.Marshal(lxml)
-	}
+	var lxml interface{}
 
-	if err != nil {
-		return err
-	}
+	params := map[string]interface{}{"logging": nil}
 
-	buffer := new(bytes.Buffer)
-	buffer.Write(bs)
+	if isEnable {
+		xmlLogging := LoggingXML{}
+		xmlLogging.LoggingEnabled.TargetBucket = targetBucket
+		xmlLogging.LoggingEnabled.TargetPrefix = targetPrefix
 
-	contentType := http.DetectContentType(buffer.Bytes())
-	headers := map[string]string{}
-	headers[HTTPHeaderContentType] = contentType
+		lxml = xmlLogging
+	} else {
+		lxml = loggingXMLEmpty{}
+	}
 
-	params := map[string]interface{}{}
-	params["logging"] = nil
-	resp, err := client.do("PUT", bucketName, params, headers, buffer)
+	resp, err := client.doXml("PUT", bucketName, params, nil, lxml)
 	if err != nil {
 		return err
 	}
@@ -527,20 +489,8 @@ func (client Client) SetBucketWebsite(bucketName, indexDocument, errorDocument s
 	wxml.IndexDocument.Suffix = indexDocument
 	wxml.ErrorDocument.Key = errorDocument
 
-	bs, err := xml.Marshal(wxml)
-	if err != nil {
-		return err
-	}
-	buffer := new(bytes.Buffer)
-	buffer.Write(bs)
-
-	contentType := http.DetectContentType(buffer.Bytes())
-	headers := make(map[string]string)
-	headers[HTTPHeaderContentType] = contentType
-
-	params := map[string]interface{}{}
-	params["website"] = nil
-	resp, err := client.do("PUT", bucketName, params, headers, buffer)
+	params := map[string]interface{}{"website": nil}
+	resp, err := client.doXml("PUT", bucketName, params, nil, wxml)
 	if err != nil {
 		return err
 	}
@@ -610,20 +560,8 @@ func (client Client) SetBucketCORS(bucketName string, corsRules []CORSRule) erro
 		corsxml.CORSRules = append(corsxml.CORSRules, cr)
 	}
 
-	bs, err := xml.Marshal(corsxml)
-	if err != nil {
-		return err
-	}
-	buffer := new(bytes.Buffer)
-	buffer.Write(bs)
-
-	contentType := http.DetectContentType(buffer.Bytes())
-	headers := map[string]string{}
-	headers[HTTPHeaderContentType] = contentType
-
-	params := map[string]interface{}{}
-	params["cors"] = nil
-	resp, err := client.do("PUT", bucketName, params, headers, buffer)
+	params := map[string]interface{}{"cors": nil}
+	resp, err := client.doXml("PUT", bucketName, params, nil, corsxml)
 	if err != nil {
 		return err
 	}
@@ -715,6 +653,14 @@ func (client Client) SetBucketStorageCapacity(bucketName string, storageCapacity
 	return nil
 }
 
+//
+// GetBucketStorageCapacity 获取Bucket容量限额
+//
+// bucketName 存储空间名
+//
+// int64 存储限额,以GB为单位
+// error 操作无错误为 nil,非nil为错误信息
+//
 func (client Client) GetBucketStorageCapacity(bucketName string) (int64, error) {
 	var out getBucketStorageCapacityResult