@@ -58,31 +58,51 @@ func newHttpClient(dialer agent.Dialer) *http.Client {
58
58
return & http.Client {Transport : logging }
59
59
}
60
60
61
- func (c * Client ) Do (ctx context.Context , method , path string , in , out interface {}) error {
61
+ func (c * Client ) doRequest (ctx context.Context , method , path string , in interface {}) (io. ReadCloser , error ) {
62
62
req , err := c .NewRequest (path , method , in )
63
63
if err != nil {
64
- return err
64
+ return nil , err
65
65
}
66
66
67
67
req = req .WithContext (ctx )
68
68
69
69
res , err := c .httpClient .Do (req )
70
70
if err != nil {
71
- return err
71
+ return nil , err
72
72
}
73
73
defer res .Body .Close ()
74
74
75
75
if res .StatusCode > 299 {
76
- return newError (res .StatusCode , res )
76
+ return nil , newError (res .StatusCode , res )
77
77
}
78
78
79
- if out != nil {
80
- if err := json .NewDecoder (res .Body ).Decode (out ); err != nil {
81
- return err
82
- }
79
+ return res .Body , nil
80
+ }
81
+
82
+ func (c * Client ) Do (ctx context.Context , method , path string , in , out interface {}) error {
83
+
84
+ body , err := c .doRequest (ctx , method , path , in )
85
+
86
+ if err != nil {
87
+ return err
83
88
}
89
+ if out == nil {
90
+ return nil
91
+ }
92
+
93
+ return json .NewDecoder (body ).Decode (out )
94
+ }
84
95
85
- return nil
96
+ func (c * Client ) DoPlaintext (ctx context.Context , method , path string , in interface {}) (string , error ) {
97
+ body , err := c .doRequest (ctx , method , path , in )
98
+ if err != nil {
99
+ return "" , err
100
+ }
101
+ data , err := io .ReadAll (body )
102
+ if err != nil {
103
+ return "" , err
104
+ }
105
+ return string (data ), nil
86
106
}
87
107
88
108
func (c * Client ) NewRequest (path string , method string , in interface {}) (* http.Request , error ) {
0 commit comments