Compare commits
1 Commits
timeout
...
add-to-writer
| Author | SHA1 | Date | |
|---|---|---|---|
| 1a31a5bbfe |
+28
-2
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user