Compare commits

...

1 Commits

Author SHA1 Message Date
peze 1a31a5bbfe add to writer 2025-03-10 19:04:00 +08:00
2 changed files with 64 additions and 2 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)