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

0 commit comments

Comments
 (0)