Skip to content

Commit 67f19c8

Browse files
committed
Update API clients and remove disused cmds
1 parent 858aafe commit 67f19c8

File tree

6 files changed

+76
-536
lines changed

6 files changed

+76
-536
lines changed

api/sailhouse.go

Lines changed: 44 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package api
33
import (
44
"context"
55
"fmt"
6+
"strings"
67

78
"github.com/carlmjohnson/requests"
89
"github.com/sailhouse/sailhouse/models"
@@ -19,34 +20,46 @@ func NewSailhouseClient(token string) *SailhouseClient {
1920
return &SailhouseClient{token, team}
2021
}
2122

23+
func (c *SailhouseClient) getTeamURL(components ...string) string {
24+
url := fmt.Sprintf("https://api.sailhouse.dev/teams/%s", c.team)
25+
combined := strings.Join(components, "/")
26+
27+
if combined != "" {
28+
url += "/" + combined
29+
}
30+
31+
return url
32+
}
33+
34+
func (c *SailhouseClient) req() *requests.Builder {
35+
return requests.
36+
URL("https://api.sailhouse.dev").
37+
Header("Authorization", c.token)
38+
}
39+
2240
func (c *SailhouseClient) GetTeams(ctx context.Context) ([]models.Team, error) {
2341
teams := []models.Team{}
2442

25-
err := requests.
26-
URL("https://api.sailhouse.dev/teams").
27-
Header("Authorization", c.token).
43+
err := c.req().
44+
Path("teams").
2845
ToJSON(&teams).
2946
Fetch(ctx)
3047

3148
return teams, err
3249
}
3350

3451
func (c *SailhouseClient) CreateApp(ctx context.Context, name string) error {
35-
return requests.
36-
URL("https://api.sailhouse.dev/apps").
37-
Header("Authorization", c.token).
38-
Header("sailhouse-team", c.team).
52+
return c.req().
53+
Pathf("/teams/%s/apps/%s", c.team, name).
3954
BodyJSON(map[string]string{"name": name, "slug": name}).
4055
Fetch(ctx)
4156
}
4257

4358
func (c *SailhouseClient) GetApps(ctx context.Context) ([]models.App, error) {
4459
apps := []models.App{}
4560

46-
err := requests.
47-
URL("https://api.sailhouse.dev/apps").
48-
Header("Authorization", c.token).
49-
Header("sailhouse-team", c.team).
61+
err := c.req().
62+
Pathf("/teams/%s/apps", c.team).
5063
ToJSON(&apps).
5164
Fetch(ctx)
5265

@@ -60,11 +73,8 @@ func (c *SailhouseClient) GetApps(ctx context.Context) ([]models.App, error) {
6073
func (c *SailhouseClient) GetTopics(ctx context.Context, appID string) ([]models.Topic, error) {
6174
topics := []models.Topic{}
6275

63-
err := requests.
64-
URL("https://api.sailhouse.dev/topics").
65-
Header("sailhouse-app", appID).
66-
Header("Authorization", c.token).
67-
Header("sailhouse-team", c.team).
76+
err := c.req().
77+
Pathf("/teams/%s/apps/%s/topics", c.team, appID).
6878
ToJSON(&topics).
6979
Fetch(ctx)
7080

@@ -82,11 +92,8 @@ type CreateTokenResponse struct {
8292
func (c *SailhouseClient) CreateToken(ctx context.Context, appID string) (string, error) {
8393
var resp CreateTokenResponse
8494

85-
err := requests.
86-
URL("https://api.sailhouse.dev/apps/tokens").
87-
Header("sailhouse-app", appID).
88-
Header("Authorization", c.token).
89-
Header("sailhouse-team", c.team).
95+
err := c.req().
96+
Pathf("/teams/%s/apps/%s/tokens", c.team, appID).
9097
Method("POST").
9198
ToJSON(&resp).
9299
Fetch(ctx)
@@ -101,11 +108,8 @@ func (c *SailhouseClient) CreateToken(ctx context.Context, appID string) (string
101108
func (c *SailhouseClient) GetTokens(ctx context.Context, appID string) ([]models.TokenPreview, error) {
102109
var resp []models.TokenPreview
103110

104-
err := requests.
105-
URL("https://api.sailhouse.dev/apps/tokens").
106-
Header("sailhouse-app", appID).
107-
Header("Authorization", c.token).
108-
Header("sailhouse-team", c.team).
111+
err := c.req().
112+
Pathf("/teams/%s/apps/%s/tokens", c.team, appID).
109113
ToJSON(&resp).
110114
Fetch(ctx)
111115

@@ -117,43 +121,31 @@ func (c *SailhouseClient) GetTokens(ctx context.Context, appID string) ([]models
117121
}
118122

119123
func (c *SailhouseClient) CreateTopic(ctx context.Context, appID, slug string) error {
120-
return requests.
121-
URL("https://api.sailhouse.dev/topics").
122-
Header("sailhouse-app", appID).
123-
Header("Authorization", c.token).
124-
Header("sailhouse-team", c.team).
124+
return c.req().
125+
Pathf("/teams/%s/apps/%s/topics", c.team, appID).
125126
BodyJSON(map[string]any{"slug": slug, "subscriptions": []string{}}).
126127
Fetch(ctx)
127128
}
128129

129130
func (c *SailhouseClient) DeleteTopic(ctx context.Context, appID, slug string) error {
130-
return requests.
131-
URL(fmt.Sprintf("https://api.sailhouse.dev/topics/%s", slug)).
132-
Header("sailhouse-app", appID).
133-
Header("Authorization", c.token).
134-
Header("sailhouse-team", c.team).
131+
return c.req().
132+
Pathf("/teams/%s/apps/%s/topics/%s", c.team, appID, slug).
135133
Method("DELETE").
136134
Fetch(ctx)
137135
}
138136

139137
func (c *SailhouseClient) CreateTopicWithKey(ctx context.Context, appID, slug, key string) error {
140-
return requests.
141-
URL("https://api.sailhouse.dev/topics").
142-
Header("sailhouse-app", appID).
143-
Header("Authorization", c.token).
144-
Header("sailhouse-team", c.team).
138+
return c.req().
139+
Pathf("/teams/%s/apps/%s/topics/%s", c.team, appID, slug).
145140
BodyJSON(map[string]any{"slug": slug, "subscriptions": []string{}, "schema_key": key}).
146141
Fetch(ctx)
147142
}
148143

149144
func (c *SailhouseClient) GetSubscriptions(ctx context.Context, appID, topicSlug string) ([]models.Subscription, error) {
150145
subscriptions := []models.Subscription{}
151146

152-
err := requests.
153-
URL(fmt.Sprintf("https://api.sailhouse.dev/topics/%s/subscriptions", topicSlug)).
154-
Header("sailhouse-app", appID).
155-
Header("Authorization", c.token).
156-
Header("sailhouse-team", c.team).
147+
err := c.req().
148+
Pathf("/teams/%s/apps/%s/topics/%s/subscriptions", c.team, appID, topicSlug).
157149
ToJSON(&subscriptions).
158150
Fetch(ctx)
159151

@@ -167,11 +159,8 @@ func (c *SailhouseClient) GetSubscriptions(ctx context.Context, appID, topicSlug
167159
func (c *SailhouseClient) GetSubscription(ctx context.Context, appID, topicSlug, subscriptionSlug string) (*models.Subscription, error) {
168160
subscription := models.Subscription{}
169161

170-
err := requests.
171-
URL(fmt.Sprintf("https://api.sailhouse.dev/topics/%s/subscriptions/%s", topicSlug, subscriptionSlug)).
172-
Header("sailhouse-app", appID).
173-
Header("Authorization", c.token).
174-
Header("sailhouse-team", c.team).
162+
err := c.req().
163+
Pathf("/teams/%s/apps/%s/topics/%s/subscriptions/%s", c.team, appID, topicSlug, subscriptionSlug).
175164
ToJSON(&subscription).
176165
Fetch(ctx)
177166

@@ -217,11 +206,8 @@ func (c *SailhouseClient) CreateSubscription(ctx context.Context, appID string,
217206
}
218207

219208
var sub models.Subscription
220-
err := requests.
221-
URL(fmt.Sprintf("https://api.sailhouse.dev/topics/%s/subscriptions", newSub.TopicSlug)).
222-
Header("sailhouse-app", appID).
223-
Header("Authorization", c.token).
224-
Header("sailhouse-team", c.team).
209+
err := c.req().
210+
Pathf("/teams/%s/apps/%s/topics/%s/subscriptions", c.team, appID, newSub.TopicSlug).
225211
BodyJSON(body).
226212
ToJSON(&sub).
227213
Fetch(ctx)
@@ -230,11 +216,8 @@ func (c *SailhouseClient) CreateSubscription(ctx context.Context, appID string,
230216
}
231217

232218
func (c *SailhouseClient) DeleteSubscription(ctx context.Context, appID, topicSlug, subscriptionSlug string) error {
233-
return requests.
234-
URL(fmt.Sprintf("https://api.sailhouse.dev/topics/%s/subscriptions/%s", topicSlug, subscriptionSlug)).
235-
Header("sailhouse-app", appID).
236-
Header("Authorization", c.token).
237-
Header("sailhouse-team", c.team).
219+
return c.req().
220+
Pathf("/teams/%s/apps/%s/topics/%s/subscriptions/%s", c.team, appID, topicSlug, subscriptionSlug).
238221
Method("DELETE").
239222
Fetch(ctx)
240223
}
@@ -243,36 +226,3 @@ type GetSchema struct {
243226
Topics []models.Topic `json:"topics"`
244227
Subscriptions []models.Subscription `json:"subscriptions"`
245228
}
246-
247-
func (c *SailhouseClient) GetResourcesForSchema(ctx context.Context, appSlug, schemaKey string) (GetSchema, error) {
248-
var resp GetSchema
249-
250-
err := requests.
251-
URL(fmt.Sprintf("https://api.sailhouse.dev/schema/%s/resources", schemaKey)).
252-
Header("sailhouse-app", appSlug).
253-
Header("Authorization", c.token).
254-
Header("sailhouse-team", c.team).
255-
ToJSON(&resp).
256-
Fetch(ctx)
257-
258-
return resp, err
259-
}
260-
261-
type GetAppUsage struct {
262-
AppID string `json:"app_id"`
263-
Count int `json:"count"`
264-
}
265-
266-
func (c *SailhouseClient) GetAppUsage(ctx context.Context, appSlug string) (GetAppUsage, error) {
267-
var resp GetAppUsage
268-
269-
err := requests.
270-
URL("https://api.sailhouse.dev/app/usage").
271-
Header("sailhouse-app", appSlug).
272-
Header("Authorization", c.token).
273-
Header("sailhouse-team", c.team).
274-
ToJSON(&resp).
275-
Fetch(ctx)
276-
277-
return resp, err
278-
}

cmd/apps.go

Lines changed: 2 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@ func init() {
3737
out.SetData(apps)
3838

3939
table := output.NewTable()
40-
table.AddColumns("ID", "Slug")
40+
table.AddColumns("Slug")
4141

4242
for _, app := range apps {
4343
slug := lipgloss.NewStyle().Foreground(lipgloss.Color("205")).Render(app.Slug)
44-
table.AddRow(app.ID, slug)
44+
table.AddRow(slug)
4545
}
4646

4747
out.SetTable(table)
@@ -107,54 +107,5 @@ func init() {
107107

108108
appCmd.AddCommand(addAppCommand)
109109

110-
appCmd.AddCommand(&cobra.Command{
111-
Use: "usage [app-slug]",
112-
Short: "Get app usage",
113-
Args: cobra.MaximumNArgs(1),
114-
Run: output.WithOutput(func(cmd *cobra.Command, args []string, out *output.Output[models.AppUsage]) {
115-
token := viper.GetString("token")
116-
117-
client := api.NewSailhouseClient(token)
118-
119-
apps, err := client.GetApps(context.Background())
120-
if err != nil {
121-
panic(err)
122-
}
123-
124-
var selectedApp string
125-
if len(args) > 0 {
126-
selectedApp = args[0]
127-
} else {
128-
var appNames []string
129-
for _, app := range apps {
130-
appNames = append(appNames, app.Slug)
131-
}
132-
133-
survey.AskOne(
134-
&survey.Select{
135-
Message: "Select an app",
136-
Options: appNames,
137-
},
138-
&selectedApp,
139-
)
140-
}
141-
142-
usage, err := client.GetAppUsage(context.Background(), selectedApp)
143-
if err != nil {
144-
out.AddError("Failed to get app usage", err)
145-
return
146-
}
147-
148-
out.SetData(models.AppUsage{
149-
AppID: usage.AppID,
150-
Count: usage.Count,
151-
})
152-
153-
appSlug := lipgloss.NewStyle().Foreground(lipgloss.Color("205")).Render(selectedApp)
154-
eventCount := lipgloss.NewStyle().Foreground(lipgloss.Color("205")).Render(fmt.Sprintf("%d", usage.Count))
155-
out.AddMessage(fmt.Sprintf("App %s has sent %s events", appSlug, eventCount))
156-
}),
157-
})
158-
159110
rootCmd.AddCommand(appCmd)
160111
}

cmd/auth.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func init() {
4242

4343
tokenResponse := map[string]string{}
4444

45-
err := requests.URL("https://api.sailhouse.dev/auth/token").Param("code", code).ToJSON(&tokenResponse).Fetch(ctx)
45+
err := requests.URL("https://api.sailhouse.dev/user/auth/token").Param("code", code).ToJSON(&tokenResponse).Fetch(ctx)
4646
if err != nil {
4747
respError := &requests.ResponseError{}
4848
errors.As(err, &respError)

0 commit comments

Comments
 (0)