From 279cb4feb0a17b1125245cf459ea60c91ce2b7ea Mon Sep 17 00:00:00 2001
From: keroming <keroming@tencent.com>
Date: Thu, 7 May 2020 17:12:38 +0800
Subject: [PATCH 1/2] =?UTF-8?q?feat:=20Object.Delete=20=E5=A2=9E=E5=8A=A0?=
 =?UTF-8?q?=20optHeader=20=E4=BC=A0=E9=80=92?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 example/object/delete.go |  2 +-
 object.go                | 11 ++++++++++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/example/object/delete.go b/example/object/delete.go
index 55d4902..ed227c9 100644
--- a/example/object/delete.go
+++ b/example/object/delete.go
@@ -29,7 +29,7 @@ func main() {
 
 	name := "test/objectPut.go"
 
-	_, err := c.Object.Delete(context.Background(), name)
+	_, err := c.Object.Delete(context.Background(), name, nil)
 	if err != nil {
 		panic(err)
 	}
diff --git a/object.go b/object.go
index fd8285b..dd9c358 100644
--- a/object.go
+++ b/object.go
@@ -272,10 +272,18 @@ func (s *ObjectService) Copy(ctx context.Context, name, sourceURL string, opt *O
 	return &res, resp, err
 }
 
+type ObjectDeleteOptions struct {
+	// SSE-C
+	XCosSSECustomerAglo   string `header:"x-cos-server-side-encryption-customer-algorithm,omitempty" url:"-" xml:"-"`
+	XCosSSECustomerKey    string `header:"x-cos-server-side-encryption-customer-key,omitempty" url:"-" xml:"-"`
+	XCosSSECustomerKeyMD5 string `header:"x-cos-server-side-encryption-customer-key-MD5,omitempty" url:"-" xml:"-"`
+	//兼容其他自定义头部
+	XOptionHeader *http.Header `header:"-,omitempty" url:"-" xml:"-"`
+}
 // Delete Object请求可以将一个文件(Object)删除。
 //
 // https://www.qcloud.com/document/product/436/7743
-func (s *ObjectService) Delete(ctx context.Context, name string) (*Response, error) {
+func (s *ObjectService) Delete(ctx context.Context, name string, opt *ObjectDeleteOptions) (*Response, error) {
 	// When use "" string might call the delete bucket interface
 	if len(name) == 0 {
 		return nil, errors.New("empty object name")
@@ -285,6 +293,7 @@ func (s *ObjectService) Delete(ctx context.Context, name string) (*Response, err
 		baseURL: s.client.BaseURL.BucketURL,
 		uri:     "/" + encodeURIComponent(name),
 		method:  http.MethodDelete,
+		optHeader: opt,
 	}
 	resp, err := s.client.send(ctx, &sendOpt)
 	return resp, err

From 2eee5149d727a045e80d28729bb60c90614e8275 Mon Sep 17 00:00:00 2001
From: keroming <keroming@tencent.com>
Date: Thu, 7 May 2020 17:46:43 +0800
Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E6=94=B9=E4=B8=BA=E5=8F=AF?=
 =?UTF-8?q?=E9=80=89=E5=8F=82=E6=95=B0=EF=BC=8C=E5=90=91=E4=B8=8B=E5=85=BC?=
 =?UTF-8?q?=E5=AE=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 object.go | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/object.go b/object.go
index dd9c358..255c0d1 100644
--- a/object.go
+++ b/object.go
@@ -283,17 +283,21 @@ type ObjectDeleteOptions struct {
 // Delete Object请求可以将一个文件(Object)删除。
 //
 // https://www.qcloud.com/document/product/436/7743
-func (s *ObjectService) Delete(ctx context.Context, name string, opt *ObjectDeleteOptions) (*Response, error) {
+func (s *ObjectService) Delete(ctx context.Context, name string, opt ...*ObjectDeleteOptions) (*Response, error) {
+	var optHeader *ObjectDeleteOptions
 	// When use "" string might call the delete bucket interface
 	if len(name) == 0 {
 		return nil, errors.New("empty object name")
 	}
+	if len(opt) > 0 {
+		optHeader = opt[0]
+	}
 
 	sendOpt := sendOptions{
 		baseURL: s.client.BaseURL.BucketURL,
 		uri:     "/" + encodeURIComponent(name),
 		method:  http.MethodDelete,
-		optHeader: opt,
+		optHeader: optHeader,
 	}
 	resp, err := s.client.send(ctx, &sendOpt)
 	return resp, err