Skip to content

Commit 4111a59

Browse files
committed
Updated API's
1 parent fa83cc2 commit 4111a59

File tree

16 files changed

+92
-46
lines changed

16 files changed

+92
-46
lines changed

cmd/cli/main.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313

1414
func main() {
1515
name := path.Base(os.Args[0])
16-
flags, err := NewFlags(name, os.Args[1:], OpenAIFlags, MistralFlags, ElevenlabsFlags, HomeAssistantFlags, NewsAPIFlags)
16+
flags, err := NewFlags(name, os.Args[1:], OpenAIFlags, MistralFlags, ElevenlabsFlags, HomeAssistantFlags, NewsAPIFlags, OllamaFlags)
1717
if err != nil {
1818
if err != flag.ErrHelp {
1919
fmt.Fprintln(os.Stderr, err)
@@ -71,6 +71,12 @@ func main() {
7171
os.Exit(1)
7272
}
7373

74+
cmd, err = OllamaRegister(cmd, opts, flags)
75+
if err != nil {
76+
fmt.Fprintln(os.Stderr, err)
77+
os.Exit(1)
78+
}
79+
7480
// Run command
7581
if err := Run(cmd, flags); err != nil {
7682
if errors.Is(err, flag.ErrHelp) {

cmd/cli/ollama.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package main
2+
3+
import (
4+
// Package imports
5+
"github.com/mutablelogic/go-client/pkg/client"
6+
"github.com/mutablelogic/go-client/pkg/ollama"
7+
)
8+
9+
/////////////////////////////////////////////////////////////////////
10+
// REGISTER FUNCTIONS
11+
12+
func OllamaFlags(flags *Flags) {
13+
flags.String("ollama-endpoint", "${OLLAMA_ENDPOINT}", "Ollama endpoint url")
14+
}
15+
16+
func OllamaRegister(cmd []Client, opts []client.ClientOpt, flags *Flags) ([]Client, error) {
17+
ollama, err := ollama.New(flags.GetString("ollama-endpoint"), opts...)
18+
if err != nil {
19+
return nil, err
20+
}
21+
22+
// Register commands
23+
cmd = append(cmd, Client{
24+
ns: "ollama",
25+
cmd: []Command{
26+
{Name: "models", Description: "List local models", MinArgs: 2, MaxArgs: 2, Fn: ollamaListModels(ollama, flags)},
27+
},
28+
})
29+
30+
// Return success
31+
return cmd, nil
32+
}
33+
34+
/////////////////////////////////////////////////////////////////////
35+
// API CALL FUNCTIONS
36+
37+
func ollamaListModels(client *ollama.Client, flags *Flags) CommandFn {
38+
return func() error {
39+
if models, err := client.ListModels(); err != nil {
40+
return err
41+
} else {
42+
return flags.Write(models)
43+
}
44+
}
45+
}

pkg/client/payload.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,14 @@ type Payload interface {
2828
Type() string
2929
}
3030

31+
///////////////////////////////////////////////////////////////////////////////
32+
// GLOBALS
33+
34+
var (
35+
MethodGet = NewRequestEx(http.MethodGet, ContentTypeAny)
36+
MethodDelete = NewRequestEx(http.MethodDelete, ContentTypeAny)
37+
)
38+
3139
///////////////////////////////////////////////////////////////////////////////
3240
// LIFECYCLE
3341

pkg/elevenlabs/text_to_speech.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ func (c *Client) TextToSpeech(w io.Writer, voice, text string, opts ...Opt) (int
4141
}
4242

4343
// Make a response object, write the data
44-
if payload, err := client.NewJSONRequest(request, client.ContentTypeBinary); err != nil {
44+
if payload, err := client.NewJSONRequest(request); err != nil {
4545
return 0, err
46-
} else if err := c.Do(payload.Post(), &response, client.OptPath("text-to-speech", voice)); err != nil {
46+
} else if err := c.Do(payload, &response, client.OptPath("text-to-speech", voice)); err != nil {
4747
return 0, err
4848
}
4949

pkg/homeassistant/events.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ type Event struct {
1616
// Events returns all the events and number of listeners
1717
func (c *Client) Events() ([]Event, error) {
1818
var response []Event
19-
payload := client.NewRequest(client.ContentTypeJson)
20-
if err := c.Do(payload, &response, client.OptPath("events")); err != nil {
19+
if err := c.Do(nil, &response, client.OptPath("events")); err != nil {
2120
return nil, err
2221
}
2322

pkg/homeassistant/health.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package homeassistant
22

3-
import "github.com/mutablelogic/go-client/pkg/client"
4-
53
///////////////////////////////////////////////////////////////////////////////
64
// API CALLS
75

@@ -14,8 +12,7 @@ func (c *Client) Health() (string, error) {
1412

1513
// Return the response
1614
var response responseHealth
17-
payload := client.NewRequest(client.ContentTypeJson)
18-
if err := c.Do(payload, &response); err != nil {
15+
if err := c.Do(nil, &response); err != nil {
1916
return "", err
2017
}
2118

pkg/homeassistant/states.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ type Sensor struct {
3434
func (c *Client) States() ([]State, error) {
3535
// Return the response
3636
var response []State
37-
payload := client.NewRequest(client.ContentTypeJson)
38-
if err := c.Do(payload, &response, client.OptPath("states")); err != nil {
37+
if err := c.Do(nil, &response, client.OptPath("states")); err != nil {
3938
return nil, err
4039
}
4140

@@ -47,8 +46,7 @@ func (c *Client) States() ([]State, error) {
4746
func (c *Client) Sensors() ([]Sensor, error) {
4847
// Return the response
4948
var response []State
50-
payload := client.NewRequest(client.ContentTypeJson)
51-
if err := c.Do(payload, &response, client.OptPath("states")); err != nil {
49+
if err := c.Do(nil, &response, client.OptPath("states")); err != nil {
5250
return nil, err
5351
}
5452

@@ -76,8 +74,7 @@ func (c *Client) Sensors() ([]Sensor, error) {
7674
func (c *Client) Actuators() ([]Sensor, error) {
7775
// Return the response
7876
var response []State
79-
payload := client.NewRequest(client.ContentTypeJson)
80-
if err := c.Do(payload, &response, client.OptPath("states")); err != nil {
77+
if err := c.Do(nil, &response, client.OptPath("states")); err != nil {
8178
return nil, err
8279
}
8380

@@ -104,8 +101,7 @@ func (c *Client) Actuators() ([]Sensor, error) {
104101
func (c *Client) Lights() ([]Sensor, error) {
105102
// Return the response
106103
var response []State
107-
payload := client.NewRequest(client.ContentTypeJson)
108-
if err := c.Do(payload, &response, client.OptPath("states")); err != nil {
104+
if err := c.Do(nil, &response, client.OptPath("states")); err != nil {
109105
return nil, err
110106
}
111107

pkg/ipify/client.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@ type Client struct {
1818
*client.Client
1919
}
2020

21-
type Request struct {
22-
client.Request
23-
}
24-
2521
type Response struct {
2622
IP string `json:"ip"`
2723
}
@@ -54,7 +50,7 @@ func New(opts ...client.ClientOpt) (*Client, error) {
5450
// Get returns the current IP address from the API
5551
func (c *Client) Get() (Response, error) {
5652
var response Response
57-
if err := c.Do(client.NewRequest(client.ContentTypeJson), &response, client.OptQuery(url.Values{"format": []string{"json"}})); err != nil {
53+
if err := c.Do(client.NewRequest(), &response, client.OptQuery(url.Values{"format": []string{"json"}})); err != nil {
5854
return Response{}, err
5955
}
6056
return response, nil

pkg/mistral/chat.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,9 @@ func (c *Client) Chat(messages []schema.Message) (schema.Message, error) {
5353
request.Messages = messages
5454

5555
// Return the response
56-
if payload, err := client.NewJSONRequest(request, client.ContentTypeJson); err != nil {
56+
if payload, err := client.NewJSONRequest(request); err != nil {
5757
return schema.Message{}, err
58-
} else if err := c.Do(payload.Post(), &response, client.OptPath("chat/completions")); err != nil {
58+
} else if err := c.Do(payload, &response, client.OptPath("chat/completions")); err != nil {
5959
return schema.Message{}, err
6060
} else if len(response.Choices) == 0 {
6161
return schema.Message{}, ErrNotFound

pkg/mistral/embedding.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ func (c *Client) CreateEmbedding(content any) (schema.Embeddings, error) {
4848
}
4949

5050
// Request->Response
51-
if payload, err := client.NewJSONRequest(request, client.ContentTypeJson); err != nil {
51+
if payload, err := client.NewJSONRequest(request); err != nil {
5252
return response, err
53-
} else if err := c.Do(payload.Post(), &response, client.OptPath("embeddings")); err != nil {
53+
} else if err := c.Do(payload, &response, client.OptPath("embeddings")); err != nil {
5454
return response, err
5555
}
5656

pkg/mistral/model.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func (c *Client) ListModels() ([]Model, error) {
2323
var response responseListModels
2424

2525
// Request the models, populate the response
26-
payload := client.NewRequest(client.ContentTypeJson)
26+
payload := client.NewRequest()
2727
if err := c.Do(payload, &response, client.OptPath("models")); err != nil {
2828
return nil, err
2929
}

pkg/openai/audio.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,9 @@ func (c *Client) Speech(w io.Writer, voice, text string, opts ...Opt) (int64, er
9595
}
9696

9797
// Make a response object, write the data
98-
if payload, err := client.NewJSONRequest(request, client.ContentTypeBinary); err != nil {
98+
if payload, err := client.NewJSONRequest(request); err != nil {
9999
return 0, err
100-
} else if err := c.Do(payload.Post(), &response, client.OptPath("audio/speech")); err != nil {
100+
} else if err := c.Do(payload, &response, client.OptPath("audio/speech")); err != nil {
101101
return 0, err
102102
}
103103

pkg/openai/chat.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,22 +68,23 @@ func (arr MessageContentArray) Flatten() string {
6868

6969
// Chat creates a model response for the given chat conversation.
7070
func (c *Client) Chat(messages []*Message, opts ...Opt) (Chat, error) {
71-
// Create the request
7271
var request reqChat
72+
var response Chat
73+
74+
// Create the request
7375
request.Model = defaultChatCompletion
7476
request.Messages = messages
7577
for _, opt := range opts {
7678
if err := opt(&request); err != nil {
77-
return Chat{}, err
79+
return response, err
7880
}
7981
}
8082

8183
// Return the response
82-
var response Chat
83-
if payload, err := client.NewJSONRequest(request, client.ContentTypeJson); err != nil {
84-
return Chat{}, err
85-
} else if err := c.Do(payload.Post(), &response, client.OptPath("chat/completions")); err != nil {
86-
return Chat{}, err
84+
if payload, err := client.NewJSONRequest(request); err != nil {
85+
return response, err
86+
} else if err := c.Do(payload, &response, client.OptPath("chat/completions")); err != nil {
87+
return response, err
8788
}
8889

8990
// Return success

pkg/openai/embedding.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ func (c *Client) CreateEmbedding(content any, opts ...Opt) (schema.Embeddings, e
3535

3636
// Return the response
3737
var response schema.Embeddings
38-
if payload, err := client.NewJSONRequest(request, client.ContentTypeJson); err != nil {
38+
if payload, err := client.NewJSONRequest(request); err != nil {
3939
return schema.Embeddings{}, err
40-
} else if err := c.Do(payload.Post(), &response, client.OptPath("embeddings")); err != nil {
40+
} else if err := c.Do(payload, &response, client.OptPath("embeddings")); err != nil {
4141
return schema.Embeddings{}, err
4242
}
4343

pkg/openai/image.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ func (c *Client) CreateImages(prompt string, opts ...Opt) ([]*Image, error) {
3737
}
3838

3939
// Return the response
40-
if payload, err := client.NewJSONRequest(request, client.ContentTypeJson); err != nil {
40+
if payload, err := client.NewJSONRequest(request); err != nil {
4141
return nil, err
42-
} else if err := c.Do(payload.Post(), &response, client.OptPath("images/generations")); err != nil {
42+
} else if err := c.Do(payload, &response, client.OptPath("images/generations")); err != nil {
4343
return nil, err
4444
}
4545

pkg/openai/model.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package openai
22

33
import (
44
// Packages
5+
56
client "github.com/mutablelogic/go-client/pkg/client"
67
schema "github.com/mutablelogic/go-client/pkg/openai/schema"
78
)
@@ -13,8 +14,7 @@ import (
1314
func (c *Client) ListModels() ([]schema.Model, error) {
1415
// Return the response
1516
var response responseListModels
16-
payload := client.NewRequest(client.ContentTypeJson)
17-
if err := c.Do(payload, &response, client.OptPath("models")); err != nil {
17+
if err := c.Do(nil, &response, client.OptPath("models")); err != nil {
1818
return nil, err
1919
}
2020

@@ -26,8 +26,7 @@ func (c *Client) ListModels() ([]schema.Model, error) {
2626
func (c *Client) GetModel(model string) (schema.Model, error) {
2727
// Return the response
2828
var response schema.Model
29-
payload := client.NewRequest(client.ContentTypeJson)
30-
if err := c.Do(payload, &response, client.OptPath("models", model)); err != nil {
29+
if err := c.Do(nil, &response, client.OptPath("models", model)); err != nil {
3130
return schema.Model{}, err
3231
}
3332

@@ -37,8 +36,7 @@ func (c *Client) GetModel(model string) (schema.Model, error) {
3736

3837
// Delete a fine-tuned model. You must have the Owner role in your organization to delete a model.
3938
func (c *Client) DeleteModel(model string) error {
40-
payload := client.NewRequest(client.ContentTypeJson)
41-
if err := c.Do(payload.Delete(), nil, client.OptPath("models", model)); err != nil {
39+
if err := c.Do(client.MethodDelete, nil, client.OptPath("models", model)); err != nil {
4240
return err
4341
}
4442

0 commit comments

Comments
 (0)