Skip to content

Commit a1aaeb5

Browse files
committed
Define lbryinc.Caller interface for easier drop-in replacement of lbryinc package in client code
1 parent ada0ce0 commit a1aaeb5

File tree

2 files changed

+34
-10
lines changed

2 files changed

+34
-10
lines changed

extras/lbryinc/client.go

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,18 @@ import (
1313
log "github.com/sirupsen/logrus"
1414
)
1515

16-
// Client stores data about internal-apis call it is about to make.
16+
// Caller interface defines currently supported internal-apis methods.
17+
type Caller interface {
18+
SetServerAddress(string)
19+
GetServerAddress() string
20+
UserMe() (ResponseData, error)
21+
}
22+
23+
// Client stores parameters common for internal-apis calls plus a logger.
1724
type Client struct {
18-
ServerAddress string
25+
serverAddress string
1926
AuthToken string
20-
Logger *log.Logger
27+
logger *log.Logger
2128
}
2229

2330
// APIResponse reflects internal-apis JSON response format.
@@ -38,16 +45,16 @@ const (
3845

3946
// NewClient returns a client instance for internal-apis. It requires authToken to be provided
4047
// for authentication.
41-
func NewClient(authToken string) Client {
42-
return Client{
43-
ServerAddress: defaultAPIHost,
48+
func NewClient(authToken string) Caller {
49+
return &Client{
50+
serverAddress: defaultAPIHost,
4451
AuthToken: authToken,
45-
Logger: log.StandardLogger(),
52+
logger: log.StandardLogger(),
4653
}
4754
}
4855

4956
func (c Client) getEndpointURL(object, method string) string {
50-
return fmt.Sprintf("%s/%s/%s", c.ServerAddress, object, method)
57+
return fmt.Sprintf("%s/%s/%s", c.GetServerAddress(), object, method)
5158
}
5259

5360
func (c Client) prepareParams(params map[string]interface{}) (string, error) {
@@ -62,9 +69,19 @@ func (c Client) prepareParams(params map[string]interface{}) (string, error) {
6269
return form.Encode(), nil
6370
}
6471

72+
// SetServerAddress overrides the default internal-apis server address.
73+
func (c *Client) SetServerAddress(s string) {
74+
c.serverAddress = s
75+
}
76+
77+
// GetServerAddress returns currently defined internal-apis server address.
78+
func (c Client) GetServerAddress() string {
79+
return c.serverAddress
80+
}
81+
6582
func (c Client) doCall(url string, payload string) ([]byte, error) {
6683
var body []byte
67-
c.Logger.Debugf("sending payload: %s", payload)
84+
c.logger.Debugf("sending payload: %s", payload)
6885
req, err := http.NewRequest(http.MethodPost, url, bytes.NewBuffer([]byte(payload)))
6986
if err != nil {
7087
return body, err

extras/lbryinc/client_test.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,17 @@ func launchDummyServer() {
5555
log.Fatal(s.ListenAndServe())
5656
}
5757

58+
func TestClient_Set_GetServerAddress(t *testing.T) {
59+
c := NewClient("realToken")
60+
assert.Equal(t, defaultAPIHost, c.GetServerAddress())
61+
c.SetServerAddress("http://host.com/api")
62+
assert.Equal(t, "http://host.com/api", c.GetServerAddress())
63+
}
64+
5865
func TestUserMe(t *testing.T) {
5966
go launchDummyServer()
6067
c := NewClient("realToken")
61-
c.ServerAddress = dummyServerURL
68+
c.SetServerAddress(dummyServerURL)
6269
r, err := c.UserMe()
6370
assert.Nil(t, err)
6471
assert.Equal(t, r["primary_email"], "[email protected]")

0 commit comments

Comments
 (0)