Compare commits

..

3 Commits

Author SHA1 Message Date
peze 6d4007344d compatible with old err 2025-03-12 14:48:05 +08:00
peze 171239d819 compatible with old err 2025-03-11 21:08:20 +08:00
peze 4f3624270b add to writer 2025-03-11 21:08:20 +08:00
3 changed files with 66 additions and 6 deletions
+28 -2
View File
@@ -24,8 +24,8 @@ import (
"time"
"github.com/alibabacloud-go/debug/debug"
"github.com/alibabacloud-go/tea/utils"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/utils"
"golang.org/x/net/proxy"
)
@@ -202,7 +202,7 @@ func getDaraClient(tag string) *daraClient {
// DoRequest is used send request to server
func DoRequest(request *Request, runtimeObject *RuntimeObject) (response *Response, err error) {
if(runtimeObject == nil) {
if runtimeObject == nil {
runtimeObject = &RuntimeObject{}
}
fieldMap := make(map[string]string)
@@ -429,6 +429,32 @@ func ToReader(obj interface{}) io.Reader {
}
}
func ToWriter(obj interface{}) io.Writer {
switch obj.(type) {
case string:
var buf bytes.Buffer
buf.WriteString(obj.(string))
return &buf
case *string:
var buf bytes.Buffer
tmp := obj.(*string)
buf.WriteString(*tmp)
return &buf
case []byte:
var buf bytes.Buffer
buf.Write(obj.([]byte))
return &buf
case io.Writer:
return obj.(io.Writer)
case *bytes.Buffer:
return obj.(*bytes.Buffer)
case *os.File:
return obj.(*os.File)
default:
panic("Invalid Writer. Please provide a valid Writer.")
}
}
func ToString(val interface{}) string {
switch v := val.(type) {
case []byte:
+36
View File
@@ -735,6 +735,42 @@ func Test_ToReader(t *testing.T) {
utils.AssertEqual(t, "", string(byt))
}
func Test_ToWriter(t *testing.T) {
str := "abc"
writer := ToWriter(str).(*bytes.Buffer)
utils.AssertEqual(t, "abc", writer.String())
strPtr := new(string)
*strPtr = "def"
writer = ToWriter(strPtr).(*bytes.Buffer)
utils.AssertEqual(t, "def", writer.String())
bytesData := []byte("ghi")
writer = ToWriter(bytesData).(*bytes.Buffer)
utils.AssertEqual(t, "ghi", writer.String())
buffer := new(bytes.Buffer)
writer = ToWriter(buffer).(*bytes.Buffer)
utils.AssertEqual(t, buffer, writer)
fileWriter := ToWriter(os.Stdout)
utils.AssertEqual(t, os.Stdout, fileWriter)
var buf bytes.Buffer
writer2 := ToWriter(&buf)
writer2.Write([]byte("test"))
utils.AssertEqual(t, "test", buf.String())
// Test a non-writer to trigger panic
defer func() {
if r := recover(); r != nil {
utils.AssertEqual(t, "Invalid Writer. Please provide a valid Writer.", r)
}
}()
num := 10
ToWriter(num) // This should cause a panic
}
func Test_ToString(t *testing.T) {
str := ToString(10)
utils.AssertEqual(t, "10", str)
+2 -4
View File
@@ -41,7 +41,7 @@ type CastError struct {
Message *string
}
func TeaSDKError(err error) *tea.SDKError {
func TeaSDKError(err error) error {
if(err == nil) {
return nil
}
@@ -72,9 +72,7 @@ func TeaSDKError(err error) *tea.SDKError {
})
}
return tea.NewSDKError(map[string]interface{}{
"message": err.Error(),
})
return err
}
// NewSDKError is used for shortly create SDKError object