diff --git a/image.go b/image.go index bda23f7..21703bd 100644 --- a/image.go +++ b/image.go @@ -55,11 +55,12 @@ func (c *Client) CreateImage(ctx context.Context, request ImageRequest) (respons // ImageEditRequest represents the request structure for the image API. type ImageEditRequest struct { - Image *os.File `json:"image,omitempty"` - Mask *os.File `json:"mask,omitempty"` - Prompt string `json:"prompt,omitempty"` - N int `json:"n,omitempty"` - Size string `json:"size,omitempty"` + Image *os.File `json:"image,omitempty"` + Mask *os.File `json:"mask,omitempty"` + Prompt string `json:"prompt,omitempty"` + N int `json:"n,omitempty"` + Size string `json:"size,omitempty"` + ResponseFormat string `json:"response_format,omitempty"` } // CreateEditImage - API call to create an image. This is the main endpoint of the DALL-E API. @@ -85,14 +86,22 @@ func (c *Client) CreateEditImage(ctx context.Context, request ImageEditRequest) if err != nil { return } + err = builder.writeField("n", strconv.Itoa(request.N)) if err != nil { return } + err = builder.writeField("size", request.Size) if err != nil { return } + + err = builder.writeField("response_format", request.ResponseFormat) + if err != nil { + return + } + err = builder.close() if err != nil { return @@ -111,9 +120,10 @@ func (c *Client) CreateEditImage(ctx context.Context, request ImageEditRequest) // ImageVariRequest represents the request structure for the image API. type ImageVariRequest struct { - Image *os.File `json:"image,omitempty"` - N int `json:"n,omitempty"` - Size string `json:"size,omitempty"` + Image *os.File `json:"image,omitempty"` + N int `json:"n,omitempty"` + Size string `json:"size,omitempty"` + ResponseFormat string `json:"response_format,omitempty"` } // CreateVariImage - API call to create an image variation. This is the main endpoint of the DALL-E API. @@ -132,10 +142,17 @@ func (c *Client) CreateVariImage(ctx context.Context, request ImageVariRequest) if err != nil { return } + err = builder.writeField("size", request.Size) if err != nil { return } + + err = builder.writeField("response_format", request.ResponseFormat) + if err != nil { + return + } + err = builder.close() if err != nil { return diff --git a/image_test.go b/image_test.go index 34367b8..4a7dad5 100644 --- a/image_test.go +++ b/image_test.go @@ -118,11 +118,12 @@ func TestImageEdit(t *testing.T) { }() req := ImageEditRequest{ - Image: origin, - Mask: mask, - Prompt: "There is a turtle in the pool", - N: 3, - Size: CreateImageSize1024x1024, + Image: origin, + Mask: mask, + Prompt: "There is a turtle in the pool", + N: 3, + Size: CreateImageSize1024x1024, + ResponseFormat: CreateImageResponseFormatURL, } _, err = client.CreateEditImage(ctx, req) checks.NoError(t, err, "CreateImage error") @@ -154,10 +155,11 @@ func TestImageEditWithoutMask(t *testing.T) { }() req := ImageEditRequest{ - Image: origin, - Prompt: "There is a turtle in the pool", - N: 3, - Size: CreateImageSize1024x1024, + Image: origin, + Prompt: "There is a turtle in the pool", + N: 3, + Size: CreateImageSize1024x1024, + ResponseFormat: CreateImageResponseFormatURL, } _, err = client.CreateEditImage(ctx, req) checks.NoError(t, err, "CreateImage error") @@ -220,9 +222,10 @@ func TestImageVariation(t *testing.T) { }() req := ImageVariRequest{ - Image: origin, - N: 3, - Size: CreateImageSize1024x1024, + Image: origin, + N: 3, + Size: CreateImageSize1024x1024, + ResponseFormat: CreateImageResponseFormatURL, } _, err = client.CreateVariImage(ctx, req) checks.NoError(t, err, "CreateImage error") @@ -336,6 +339,10 @@ func TestImageFormBuilderFailures(t *testing.T) { _, err = client.CreateEditImage(ctx, req) checks.ErrorIs(t, err, mockFailedErr, "CreateImage should return error if form builder fails") + failForField = "response_format" + _, err = client.CreateEditImage(ctx, req) + checks.ErrorIs(t, err, mockFailedErr, "CreateImage should return error if form builder fails") + failForField = "" mockBuilder.mockClose = func() error { return mockFailedErr @@ -384,6 +391,10 @@ func TestVariImageFormBuilderFailures(t *testing.T) { _, err = client.CreateVariImage(ctx, req) checks.ErrorIs(t, err, mockFailedErr, "CreateVariImage should return error if form builder fails") + failForField = "response_format" + _, err = client.CreateVariImage(ctx, req) + checks.ErrorIs(t, err, mockFailedErr, "CreateVariImage should return error if form builder fails") + failForField = "" mockBuilder.mockClose = func() error { return mockFailedErr