1
1
package openai
2
2
3
3
import (
4
+ "encoding/base64"
5
+ "io"
6
+
4
7
// Packages
5
8
"github.com/mutablelogic/go-client/pkg/client"
9
+
10
+ // Namespace imports
11
+ . "github.com/djthorpe/go-errors"
6
12
)
7
13
8
14
///////////////////////////////////////////////////////////////////////////////
9
15
// TYPES
10
16
11
17
type responseImages struct {
12
- Created int64 `json:"created"`
13
- Data []Image `json:"data"`
18
+ Created int64 `json:"created"`
19
+ Data []* Image `json:"data"`
14
20
}
15
21
16
22
///////////////////////////////////////////////////////////////////////////////
17
23
// API CALLS
18
24
19
25
// CreateImage generates one or more images from a prompt
20
- func (c * Client ) CreateImages (prompt string , opts ... Opt ) ([]Image , error ) {
26
+ func (c * Client ) CreateImages (prompt string , opts ... Opt ) ([]* Image , error ) {
21
27
var request reqImage
22
28
var response responseImages
23
29
@@ -39,3 +45,23 @@ func (c *Client) CreateImages(prompt string, opts ...Opt) ([]Image, error) {
39
45
// Return success
40
46
return response .Data , nil
41
47
}
48
+
49
+ // WriteImage writes an image and returns the number of bytes written
50
+ func (c * Client ) WriteImage (w io.Writer , image * Image ) (int , error ) {
51
+ if image == nil {
52
+ return 0 , ErrBadParameter .With ("WriteImage" )
53
+ }
54
+ // Handle url or data
55
+ switch {
56
+ case image .Data != "" :
57
+ if data , err := base64 .StdEncoding .DecodeString (image .Data ); err != nil {
58
+ return 0 , err
59
+ } else if n , err := w .Write (data ); err != nil {
60
+ return 0 , err
61
+ } else {
62
+ return n , nil
63
+ }
64
+ default :
65
+ return 0 , ErrNotImplemented .With ("WriteImage" )
66
+ }
67
+ }
0 commit comments