@@ -132,7 +132,32 @@ func (c *Client) CreateImage(ctx context.Context, request ImageRequest) (respons
132132 return
133133}
134134
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+
135159// ImageEditRequest represents the request structure for the image API.
160+ // Use WrapReader to wrap an io.Reader with filename and Content-type.
136161type ImageEditRequest struct {
137162 Image io.Reader `json:"image,omitempty"`
138163 Mask io.Reader `json:"mask,omitempty"`
@@ -150,15 +175,15 @@ func (c *Client) CreateEditImage(ctx context.Context, request ImageEditRequest)
150175 body := & bytes.Buffer {}
151176 builder := c .createFormBuilder (body )
152177
153- // image, filename is not required
178+ // image, filename verification can be postponed
154179 err = builder .CreateFormFileReader ("image" , request .Image , "" )
155180 if err != nil {
156181 return
157182 }
158183
159184 // mask, it is optional
160185 if request .Mask != nil {
161- // mask, filename is not required
186+ // filename verification can be postponed
162187 err = builder .CreateFormFileReader ("mask" , request .Mask , "" )
163188 if err != nil {
164189 return
@@ -206,6 +231,7 @@ func (c *Client) CreateEditImage(ctx context.Context, request ImageEditRequest)
206231}
207232
208233// ImageVariRequest represents the request structure for the image API.
234+ // Use WrapReader to wrap an io.Reader with filename and Content-type.
209235type ImageVariRequest struct {
210236 Image io.Reader `json:"image,omitempty"`
211237 Model string `json:"model,omitempty"`
@@ -221,7 +247,7 @@ func (c *Client) CreateVariImage(ctx context.Context, request ImageVariRequest)
221247 body := & bytes.Buffer {}
222248 builder := c .createFormBuilder (body )
223249
224- // image, filename is not required
250+ // image, filename verification can be postponed
225251 err = builder .CreateFormFileReader ("image" , request .Image , "" )
226252 if err != nil {
227253 return
0 commit comments