Skip to content

Commit 79e2cd8

Browse files
authored
Merge pull request #9 from hooksie1/requests
add request type with client to make it easier to call service
2 parents ca0cab8 + e94722b commit 79e2cd8

File tree

5 files changed

+68
-43
lines changed

5 files changed

+68
-43
lines changed

.gitignore

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
*.db
22
deployment/
3-
piggybank
4-
piggybank.exe
5-
piggybank-darwin
3+
piggybankctl
4+
piggybankctl.exe
5+
piggybankctl-darwin
66
piggybank*.tar.gz
77
piggybank*.zip
88

cmd/secrets.go

+9-10
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package cmd
33
import (
44
"fmt"
55
"strings"
6-
"time"
76

7+
"github.com/hooksie1/piggybank/service"
88
"github.com/spf13/cobra"
99
"github.com/spf13/viper"
1010
)
@@ -38,35 +38,34 @@ func secrets(cmd *cobra.Command, args []string) error {
3838
}
3939
id := viper.GetString("id")
4040

41+
client := service.Client{Conn: nc}
42+
4143
switch args[0] {
4244
case "get":
43-
subject := fmt.Sprintf("piggybank.secrets.GET.%s", id)
44-
msg, err := nc.Request(subject, nil, 1*time.Second)
45+
msg, err := client.Get(id)
4546
if err != nil {
4647
return err
4748
}
4849

49-
fmt.Println(string(msg.Data))
50+
fmt.Println(msg)
5051
case "add":
5152
val := viper.GetString("value")
5253
if val == "" {
5354
return fmt.Errorf("value flag is required to add a secret")
5455
}
55-
subject := fmt.Sprintf("piggybank.secrets.POST.%s", id)
56-
msg, err := nc.Request(subject, []byte(val), 1*time.Second)
56+
msg, err := client.Post(id, []byte(val))
5757
if err != nil {
5858
return err
5959
}
6060

61-
fmt.Println(string(msg.Data))
61+
fmt.Println(msg)
6262
case "delete":
63-
subject := fmt.Sprintf("piggybank.secrets.DELETE.%s", id)
64-
msg, err := nc.Request(subject, nil, 1*time.Second)
63+
msg, err := client.Delete(id)
6564
if err != nil {
6665
return err
6766
}
6867

69-
fmt.Println(string(msg.Data))
68+
fmt.Println(msg)
7069
}
7170

7271
return nil

piggybankctl

-9.99 MB
Binary file not shown.

service/client.go

+24-25
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,6 @@ import (
88
"github.com/nats-io/nats.go"
99
)
1010

11-
type DBVerb string
12-
13-
const (
14-
DBInit DBVerb = "init"
15-
DBLock DBVerb = "lock"
16-
DBUnlock DBVerb = "unlock"
17-
DBStatus DBVerb = "status"
18-
)
19-
20-
var subjectVerbs = map[DBVerb]string{
21-
DBInit: fmt.Sprintf("%s.%s", databaseSubject, databaseInitSubject),
22-
DBLock: fmt.Sprintf("%s.%s", databaseSubject, databaseLockSubject),
23-
DBUnlock: fmt.Sprintf("%s.%s", databaseSubject, databaseUnlockSubject),
24-
DBStatus: fmt.Sprintf("%s.%s", databaseSubject, databaseStatusSubject),
25-
}
26-
2711
type Client struct {
2812
Conn *nats.Conn
2913
}
@@ -38,16 +22,8 @@ type Request struct {
3822
Data []byte
3923
}
4024

41-
func (d DBVerb) String() string {
42-
return string(d)
43-
}
44-
45-
func GetClientDBVerbs() []string {
46-
return []string{DBInit.String(), DBLock.String(), DBUnlock.String(), DBStatus.String()}
47-
}
48-
4925
func NewDBRequest(verb DBVerb, key string) (Request, error) {
50-
subject, ok := subjectVerbs[verb]
26+
subject, ok := SubjectVerbs[verb]
5127
if !ok {
5228
return Request{}, fmt.Errorf("invalid verb")
5329
}
@@ -63,6 +39,29 @@ func NewDBRequest(verb DBVerb, key string) (Request, error) {
6339
}, nil
6440
}
6541

42+
func NewRequest(verb Verb, key string) (Request, error) {
43+
subject := fmt.Sprintf("%s.%s", verb, key)
44+
return Request{
45+
Subject: subject,
46+
Data: nil,
47+
}, nil
48+
}
49+
50+
func (c *Client) Get(key string) (string, error) {
51+
subject := fmt.Sprintf("%s.%s.%s", secretSubject, GET, key)
52+
return c.Do(Request{Subject: subject, Data: nil})
53+
}
54+
55+
func (c *Client) Post(key string, data []byte) (string, error) {
56+
subject := fmt.Sprintf("%s.%s.%s", secretSubject, POST, key)
57+
return c.Do(Request{Subject: subject, Data: data})
58+
}
59+
60+
func (c *Client) Delete(key string) (string, error) {
61+
subject := fmt.Sprintf("%s.%s.%s", secretSubject, DELETE, key)
62+
return c.Do(Request{Subject: subject, Data: nil})
63+
}
64+
6665
func (c *Client) Do(request Request) (string, error) {
6766
msg, err := c.Conn.Request(request.Subject, request.Data, 1*time.Second)
6867
if err != nil {

service/database.go

+32-5
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,36 @@ import (
99
)
1010

1111
const (
12-
databaseSubject = "piggybank.database"
13-
databaseInitSubject = "initialize"
14-
databaseUnlockSubject = "unlock"
15-
databaseLockSubject = "lock"
16-
databaseStatusSubject = "status"
12+
databaseSubject = "piggybank.database"
13+
databaseInitSubject = "initialize"
14+
databaseUnlockSubject = "unlock"
15+
databaseLockSubject = "lock"
16+
databaseStatusSubject = "status"
17+
DBInit DBVerb = "init"
18+
DBLock DBVerb = "lock"
19+
DBUnlock DBVerb = "unlock"
20+
DBStatus DBVerb = "status"
21+
GET Verb = "GET"
22+
POST Verb = "POST"
23+
DELETE Verb = "DELETE"
24+
secretSubject = "piggybank.secrets"
1725
)
1826

27+
var SubjectVerbs = map[DBVerb]string{
28+
DBInit: fmt.Sprintf("%s.%s", databaseSubject, databaseInitSubject),
29+
DBLock: fmt.Sprintf("%s.%s", databaseSubject, databaseLockSubject),
30+
DBUnlock: fmt.Sprintf("%s.%s", databaseSubject, databaseUnlockSubject),
31+
DBStatus: fmt.Sprintf("%s.%s", databaseSubject, databaseStatusSubject),
32+
}
33+
34+
type DBVerb string
35+
36+
type Verb string
37+
38+
func (d DBVerb) String() string {
39+
return string(d)
40+
}
41+
1942
type KV interface {
2043
Bucket() string
2144
Key() string
@@ -31,6 +54,10 @@ type Backend interface {
3154
Watcher
3255
}
3356

57+
func GetClientDBVerbs() []string {
58+
return []string{DBInit.String(), DBLock.String(), DBUnlock.String(), DBStatus.String()}
59+
}
60+
3461
// initialize sets the initialization key. Once this is set it does not need to be run again, unless you lose the encryption key.
3562
// If you lose the encryption key, everything is lost.
3663
func (a *AppContext) initialize() ([]byte, error) {

0 commit comments

Comments
 (0)