@@ -12,8 +12,20 @@ import (
12
12
"github.com/ipfs/go-ipfs-files"
13
13
)
14
14
15
- // RequestBuilder is an IPFS commands request builder.
16
- type RequestBuilder struct {
15
+ type RequestBuilder interface {
16
+ Arguments (args ... string ) RequestBuilder
17
+ BodyString (body string ) RequestBuilder
18
+ BodyBytes (body []byte ) RequestBuilder
19
+ Body (body io.Reader ) RequestBuilder
20
+ FileBody (body io.Reader ) RequestBuilder
21
+ Option (key string , value interface {}) RequestBuilder
22
+ Header (name , value string ) RequestBuilder
23
+ Send (ctx context.Context ) (* Response , error )
24
+ Exec (ctx context.Context , res interface {}) error
25
+ }
26
+
27
+ // requestBuilder is an IPFS commands request builder.
28
+ type requestBuilder struct {
17
29
command string
18
30
args []string
19
31
opts map [string ]string
@@ -24,29 +36,29 @@ type RequestBuilder struct {
24
36
}
25
37
26
38
// Arguments adds the arguments to the args.
27
- func (r * RequestBuilder ) Arguments (args ... string ) * RequestBuilder {
39
+ func (r * requestBuilder ) Arguments (args ... string ) RequestBuilder {
28
40
r .args = append (r .args , args ... )
29
41
return r
30
42
}
31
43
32
44
// BodyString sets the request body to the given string.
33
- func (r * RequestBuilder ) BodyString (body string ) * RequestBuilder {
45
+ func (r * requestBuilder ) BodyString (body string ) RequestBuilder {
34
46
return r .Body (strings .NewReader (body ))
35
47
}
36
48
37
49
// BodyBytes sets the request body to the given buffer.
38
- func (r * RequestBuilder ) BodyBytes (body []byte ) * RequestBuilder {
50
+ func (r * requestBuilder ) BodyBytes (body []byte ) RequestBuilder {
39
51
return r .Body (bytes .NewReader (body ))
40
52
}
41
53
42
54
// Body sets the request body to the given reader.
43
- func (r * RequestBuilder ) Body (body io.Reader ) * RequestBuilder {
55
+ func (r * requestBuilder ) Body (body io.Reader ) RequestBuilder {
44
56
r .body = body
45
57
return r
46
58
}
47
59
48
60
// FileBody sets the request body to the given reader wrapped into multipartreader.
49
- func (r * RequestBuilder ) FileBody (body io.Reader ) * RequestBuilder {
61
+ func (r * requestBuilder ) FileBody (body io.Reader ) RequestBuilder {
50
62
pr , _ := files .NewReaderPathFile ("/dev/stdin" , ioutil .NopCloser (body ), nil )
51
63
d := files .NewMapDirectory (map [string ]files.Node {"" : pr })
52
64
r .body = files .NewMultiFileReader (d , false )
@@ -55,7 +67,7 @@ func (r *RequestBuilder) FileBody(body io.Reader) *RequestBuilder {
55
67
}
56
68
57
69
// Option sets the given option.
58
- func (r * RequestBuilder ) Option (key string , value interface {}) * RequestBuilder {
70
+ func (r * requestBuilder ) Option (key string , value interface {}) RequestBuilder {
59
71
var s string
60
72
switch v := value .(type ) {
61
73
case bool :
@@ -76,7 +88,7 @@ func (r *RequestBuilder) Option(key string, value interface{}) *RequestBuilder {
76
88
}
77
89
78
90
// Header sets the given header.
79
- func (r * RequestBuilder ) Header (name , value string ) * RequestBuilder {
91
+ func (r * requestBuilder ) Header (name , value string ) RequestBuilder {
80
92
if r .headers == nil {
81
93
r .headers = make (map [string ]string , 1 )
82
94
}
@@ -85,7 +97,7 @@ func (r *RequestBuilder) Header(name, value string) *RequestBuilder {
85
97
}
86
98
87
99
// Send sends the request and return the response.
88
- func (r * RequestBuilder ) Send (ctx context.Context ) (* Response , error ) {
100
+ func (r * requestBuilder ) Send (ctx context.Context ) (* Response , error ) {
89
101
r .shell .applyGlobal (r )
90
102
91
103
req := NewRequest (ctx , r .shell .url , r .command , r .args ... )
@@ -96,7 +108,7 @@ func (r *RequestBuilder) Send(ctx context.Context) (*Response, error) {
96
108
}
97
109
98
110
// Exec sends the request a request and decodes the response.
99
- func (r * RequestBuilder ) Exec (ctx context.Context , res interface {}) error {
111
+ func (r * requestBuilder ) Exec (ctx context.Context , res interface {}) error {
100
112
httpRes , err := r .Send (ctx )
101
113
if err != nil {
102
114
return err
@@ -112,3 +124,5 @@ func (r *RequestBuilder) Exec(ctx context.Context, res interface{}) error {
112
124
113
125
return httpRes .decode (res )
114
126
}
127
+
128
+ var _ RequestBuilder = & requestBuilder {}
0 commit comments