|
|
@@ -4,6 +4,8 @@ import (
|
|
|
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/errors"
|
|
|
"io"
|
|
|
"strings"
|
|
|
+ "bytes"
|
|
|
+ "fmt"
|
|
|
)
|
|
|
|
|
|
type CommonRequest struct {
|
|
|
@@ -29,6 +31,40 @@ func NewCommonRequest() (request *CommonRequest) {
|
|
|
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() {
|
|
|
if len(request.Version) == 0 {
|
|
|
errors.NewClientError(errors.MissingParamErrorCode, "Common request [version] is required", nil)
|