/
kontenbase.go
53 lines (39 loc) · 1.1 KB
/
kontenbase.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
package kontenbase
import "github.com/kontenbase/kontenbase-go/client"
type Client struct {
apiKey string
queryUrl string
headers map[string]string
Auth *client.AuthClient
Storage *client.StorageClient
Realtime *client.RealtimeClient
}
const defaultDomain = "https://api.kontenbase.com"
func DefaultURL() string {
return defaultDomain + "/query/api/v1"
}
func NewClient(apiKey string, url string) *Client {
if url == "" {
url = DefaultURL()
}
c := &Client{
apiKey: apiKey,
headers: map[string]string{},
queryUrl: url + "/" + apiKey,
}
c.Auth = client.NewAuthClient(c.queryUrl+"/auth", c.headers)
c.Storage = client.NewStorageClient(c.queryUrl+"/storage", c.Auth)
c.Realtime = client.NewRealtimeClient(defaultDomain+"/stream", c.apiKey, c.Auth)
return c
}
func (c *Client) getHeaders() map[string]string {
headers := c.headers
authBearer := c.Auth.Token()
if authBearer != "" {
headers["Authorization"] = "Bearer " + authBearer
}
return headers
}
func (c *Client) Service(name string) *client.QueryClient {
return client.NewQueryClient(c.queryUrl+"/"+name, c.getHeaders())
}