-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdatkey.go
136 lines (111 loc) · 3.1 KB
/
datkey.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package datkey
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
var baseUrl = "https://api.datkey.dev"
type Config struct {
apiKey string
}
type GenerateKeyPayload struct {
ApiId string `json:"api_id"`
Name string `json:"name"`
Prefix *string `json:"prefix,omitempty"`
Length int64 `json:"length"`
Meta *map[string]interface{} `json:"meta"`
ExpiresAt *int64 `json:"expires_at,omitempty"`
VerificationLimit *int64 `json:"verification_limit,omitempty"`
}
type UpdateKeyPayload struct {
ExpiresAt *int64 `json:"expires_at,omitempty"`
VerificationLimit *int64 `json:"verification_limit,omitempty"`
}
type VerifyKeyPayload struct {
ApiId string `json:"api_id"`
Key string `json:"key"`
}
func Init(apiKey string) Config {
return Config{apiKey: apiKey}
}
func (c Config) GenerateKey(payload GenerateKeyPayload) (*http.Response, error) {
body, err := json.Marshal(&payload)
if err != nil {
return nil, err
}
req, err := http.NewRequest("POST", fmt.Sprintf("%s/keys", baseUrl), bytes.NewBuffer(body))
if err != nil {
return nil, err
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("x-api-key", c.apiKey)
client := http.Client{}
generateKey, err := client.Do(req)
if err != nil {
return nil, err
}
return generateKey, nil
}
func (c Config) GetKey(keyId string) (*http.Response, error) {
req, err := http.NewRequest("GET", fmt.Sprintf("%s/keys/%s", baseUrl, keyId), nil)
if err != nil {
return nil, err
}
req.Header.Set("x-api-key", c.apiKey)
client := http.Client{}
getKey, err := client.Do(req)
if err != nil {
return nil, err
}
return getKey, nil
}
func (c Config) RevokeKey(keyId string) (*http.Response, error) {
req, err := http.NewRequest("DELETE", fmt.Sprintf("%s/keys/%s", baseUrl, keyId), nil)
if err != nil {
return nil, err
}
req.Header.Set("x-api-key", c.apiKey)
client := http.Client{}
deleteKey, err := client.Do(req)
if err != nil {
return nil, err
}
return deleteKey, nil
}
func (c Config) VerifyKey(payload VerifyKeyPayload) (*http.Response, error) {
body, err := json.Marshal(&payload)
if err != nil {
return nil, err
}
req, err := http.NewRequest("POST", fmt.Sprintf("%s/keys/verify", baseUrl), bytes.NewBuffer(body))
if err != nil {
return nil, err
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("x-api-key", c.apiKey)
client := http.Client{}
verifyKey, err := client.Do(req)
if err != nil {
return nil, err
}
return verifyKey, nil
}
func (c Config) UpdateKey(payload UpdateKeyPayload) (*http.Response, error) {
body, err := json.Marshal(&payload)
if err != nil {
return nil, err
}
req, err := http.NewRequest("PUT", fmt.Sprintf("%s/keys", baseUrl), bytes.NewBuffer(body))
if err != nil {
return nil, err
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("x-api-key", c.apiKey)
client := http.Client{}
updateKey, err := client.Do(req)
if err != nil {
return nil, err
}
return updateKey, nil
}