ente/internal/api/client.go
2023-09-08 20:12:58 +05:30

66 lines
1.2 KiB
Go

package api
import (
"errors"
"github.com/go-resty/resty/v2"
)
const (
TokenHeader = "X-Auth-Token"
TokenQuery = "token"
)
var (
RedactedHeaders = []string{TokenHeader, " X-Request-Id"}
)
type Client struct {
restClient *resty.Client
authToken *string
}
type Params struct {
Debug bool
Trace bool
}
func NewClient(p Params) *Client {
c := resty.New()
if p.Trace {
c.EnableTrace()
}
if p.Debug {
c.OnBeforeRequest(func(c *resty.Client, req *resty.Request) error {
logRequest(req)
return nil
})
c.OnAfterResponse(func(c *resty.Client, resp *resty.Response) error {
logResponse(resp)
return nil
})
}
c.SetError(&Error{})
c.SetBaseURL("https://api.ente.io")
return &Client{
restClient: c,
}
}
// Error type for resty.Error{}
type Error struct{}
// Implement Error() method for the error interface
func (e *Error) Error() string {
return "Error: response status code is not in the 2xx range"
}
// OnAfterResponse Implement OnAfterResponse() method for the resty.Error interface
func (e *Error) OnAfterResponse(resp *resty.Response) error {
if resp.StatusCode() < 200 || resp.StatusCode() >= 300 {
return errors.New(e.Error())
}
return nil
}