浏览代码

common_request method String()

jxyowen 7 年之前
父节点
当前提交
0b2d7472be
共有 2 个文件被更改,包括 48 次插入0 次删除
  1. 12 0
      .gitignore
  2. 36 0
      sdk/requests/common_request.go

+ 12 - 0
.gitignore

@@ -0,0 +1,12 @@
+workspace.xml
+.DS_Store
+.tmp
+.settings
+*~
+.pyc
+*.py[co]
+# IDEA IDE
+.idea*
+build/
+dist/
+out/

+ 36 - 0
sdk/requests/common_request.go

@@ -4,6 +4,8 @@ import (
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors"
 	"io"
 	"io"
 	"strings"
 	"strings"
+	"bytes"
+	"fmt"
 )
 )
 
 
 type CommonRequest struct {
 type CommonRequest struct {
@@ -29,6 +31,40 @@ func NewCommonRequest() (request *CommonRequest) {
 	return
 	return
 }
 }
 
 
+func (request *CommonRequest) String() string {
+	request.TransToAcsRequest()
+	request.BuildQueries()
+	request.BuildUrl()
+
+	resultBuilder := bytes.Buffer{}
+
+	mapOutput := func (m map[string]string) {
+		if len(m) > 0 {
+			for key, value := range m {
+				resultBuilder.WriteString(key + ": " + value + "\n")
+			}
+		}
+	}
+
+	// Request Line
+	resultBuilder.WriteString("\n")
+	resultBuilder.WriteString(fmt.Sprintf("%s %s %s/1.1\n", request.Method, request.GetQueries(), strings.ToUpper(request.Scheme)))
+
+	// Headers
+	resultBuilder.WriteString( "Host" + ": " + request.Domain + "\n")
+	mapOutput(request.Headers)
+
+	resultBuilder.WriteString("\n")
+	// Body
+	if len(request.Content) > 0 {
+		resultBuilder.WriteString(string(request.Content) + "\n")
+	} else {
+		mapOutput(request.FormParams)
+	}
+
+	return resultBuilder.String()
+}
+
 func (request *CommonRequest) TransToAcsRequest() {
 func (request *CommonRequest) TransToAcsRequest() {
 	if len(request.Version) == 0 {
 	if len(request.Version) == 0 {
 		errors.NewClientError(errors.MissingParamErrorCode, "Common request [version] is required", nil)
 		errors.NewClientError(errors.MissingParamErrorCode, "Common request [version] is required", nil)