Skip to content

Commit

Permalink
Revert "Feature client transport config"
Browse files Browse the repository at this point in the history
  • Loading branch information
muratmirgun authored Jan 6, 2024
1 parent 907a6dd commit 7df0aaa
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 28 deletions.
53 changes: 26 additions & 27 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ var (
)

type Client struct {
ClientError error
session http.Client
Transport *transport
ClientError error
session http.Client
clientTransport transport
}

// NewClient constructs a new client given a URL to a Postgrest instance.
Expand All @@ -31,35 +31,34 @@ func NewClient(rawURL, schema string, headers map[string]string) *Client {
t := transport{
header: http.Header{},
baseURL: *baseURL,
Parent: nil,
}

c := Client{
session: http.Client{Transport: &t},
Transport: &t,
session: http.Client{Transport: t},
clientTransport: t,
}

if schema == "" {
schema = "public"
}

// Set required headers
c.Transport.header.Set("Accept", "application/json")
c.Transport.header.Set("Content-Type", "application/json")
c.Transport.header.Set("Accept-Profile", schema)
c.Transport.header.Set("Content-Profile", schema)
c.Transport.header.Set("X-Client-Info", "postgrest-go/"+version)
c.clientTransport.header.Set("Accept", "application/json")
c.clientTransport.header.Set("Content-Type", "application/json")
c.clientTransport.header.Set("Accept-Profile", schema)
c.clientTransport.header.Set("Content-Profile", schema)
c.clientTransport.header.Set("X-Client-Info", "postgrest-go/"+version)

// Set optional headers if they exist
for key, value := range headers {
c.Transport.header.Set(key, value)
c.clientTransport.header.Set(key, value)
}

return &c
}

func (c *Client) Ping() bool {
req, err := http.NewRequest("GET", path.Join(c.Transport.baseURL.Path, ""), nil)
req, err := http.NewRequest("GET", path.Join(c.clientTransport.baseURL.Path, ""), nil)
if err != nil {
c.ClientError = err

Expand All @@ -82,16 +81,23 @@ func (c *Client) Ping() bool {
return true
}

// TokenAuth sets authorization headers for subsequent requests.
func (c *Client) TokenAuth(token string) *Client {
c.Transport.header.Set("Authorization", "Bearer "+token)
c.Transport.header.Set("apikey", token)
// SetApiKey sets api key header for subsequent requests.
func (c *Client) SetApiKey(apiKey string) *Client {
c.clientTransport.header.Set("apikey", apiKey)
return c
}


// SetAuthToken sets authorization header for subsequent requests.
func (c *Client) SetAuthToken(authToken string) *Client {
c.clientTransport.header.Set("Authorization", "Bearer "+authToken)
return c
}

// ChangeSchema modifies the schema for subsequent requests.
func (c *Client) ChangeSchema(schema string) *Client {
c.Transport.header.Set("Accept-Profile", schema)
c.Transport.header.Set("Content-Profile", schema)
c.clientTransport.header.Set("Accept-Profile", schema)
c.clientTransport.header.Set("Content-Profile", schema)
return c
}

Expand All @@ -115,7 +121,7 @@ func (c *Client) Rpc(name string, count string, rpcBody interface{}) string {
}

readerBody := bytes.NewBuffer(byteBody)
url := path.Join(c.Transport.baseURL.Path, "rpc", name)
url := path.Join(c.clientTransport.baseURL.Path, "rpc", name)
req, err := http.NewRequest("POST", url, readerBody)
if err != nil {
c.ClientError = err
Expand Down Expand Up @@ -152,7 +158,6 @@ func (c *Client) Rpc(name string, count string, rpcBody interface{}) string {
type transport struct {
header http.Header
baseURL url.URL
Parent http.RoundTripper
}

func (t transport) RoundTrip(req *http.Request) (*http.Response, error) {
Expand All @@ -163,11 +168,5 @@ func (t transport) RoundTrip(req *http.Request) (*http.Response, error) {
}

req.URL = t.baseURL.ResolveReference(req.URL)

// This is only needed with usage of httpmock in testing. It would be better to initialize
// t.Parent with http.DefaultTransport and then use t.Parent.RoundTrip(req)
if t.Parent != nil {
return t.Parent.RoundTrip(req)
}
return http.DefaultTransport.RoundTrip(req)
}
2 changes: 1 addition & 1 deletion execute.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func executeHelper(client *Client, method string, body []byte, urlFragments []st
}

readerBody := bytes.NewBuffer(body)
baseUrl := path.Join(append([]string{client.Transport.baseURL.Path}, urlFragments...)...)
baseUrl := path.Join(append([]string{client.clientTransport.baseURL.Path}, urlFragments...)...)
req, err := http.NewRequest(method, baseUrl, readerBody)
if err != nil {
return nil, 0, fmt.Errorf("error creating request: %s", err.Error())
Expand Down

0 comments on commit 7df0aaa

Please sign in to comment.