@@ -132,7 +132,32 @@ func (c *Client) CreateImage(ctx context.Context, request ImageRequest) (respons
132
132
return
133
133
}
134
134
135
+ // WrapReader wraps an io.Reader with filename and Content-type.
136
+ func WrapReader (rdr io.Reader , filename string , contentType string ) io.Reader {
137
+ return file {rdr , filename , contentType }
138
+ }
139
+
140
+ type file struct {
141
+ io.Reader
142
+ name string
143
+ contentType string
144
+ }
145
+
146
+ func (f file ) Name () string {
147
+ if f .name != "" {
148
+ return f .name
149
+ } else if named , ok := f .Reader .(interface { Name () string }); ok {
150
+ return named .Name ()
151
+ }
152
+ return ""
153
+ }
154
+
155
+ func (f file ) ContentType () string {
156
+ return f .contentType
157
+ }
158
+
135
159
// ImageEditRequest represents the request structure for the image API.
160
+ // Use WrapReader to wrap an io.Reader with filename and Content-type.
136
161
type ImageEditRequest struct {
137
162
Image io.Reader `json:"image,omitempty"`
138
163
Mask io.Reader `json:"mask,omitempty"`
@@ -150,15 +175,15 @@ func (c *Client) CreateEditImage(ctx context.Context, request ImageEditRequest)
150
175
body := & bytes.Buffer {}
151
176
builder := c .createFormBuilder (body )
152
177
153
- // image, filename is not required
178
+ // image, filename verification can be postponed
154
179
err = builder .CreateFormFileReader ("image" , request .Image , "" )
155
180
if err != nil {
156
181
return
157
182
}
158
183
159
184
// mask, it is optional
160
185
if request .Mask != nil {
161
- // mask, filename is not required
186
+ // filename verification can be postponed
162
187
err = builder .CreateFormFileReader ("mask" , request .Mask , "" )
163
188
if err != nil {
164
189
return
@@ -206,6 +231,7 @@ func (c *Client) CreateEditImage(ctx context.Context, request ImageEditRequest)
206
231
}
207
232
208
233
// ImageVariRequest represents the request structure for the image API.
234
+ // Use WrapReader to wrap an io.Reader with filename and Content-type.
209
235
type ImageVariRequest struct {
210
236
Image io.Reader `json:"image,omitempty"`
211
237
Model string `json:"model,omitempty"`
@@ -221,7 +247,7 @@ func (c *Client) CreateVariImage(ctx context.Context, request ImageVariRequest)
221
247
body := & bytes.Buffer {}
222
248
builder := c .createFormBuilder (body )
223
249
224
- // image, filename is not required
250
+ // image, filename verification can be postponed
225
251
err = builder .CreateFormFileReader ("image" , request .Image , "" )
226
252
if err != nil {
227
253
return
0 commit comments