From 93fcca1a5f678f1d438313bcfbe9f6d944ee07aa Mon Sep 17 00:00:00 2001 From: franklin Date: Fri, 30 Jul 2021 17:37:10 +0200 Subject: [PATCH] feat: make http transport client exchangeable --- client/client.go | 15 +++++++++++++-- client/httptransport.go | 4 ++-- client/sockettransport.go | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/client/client.go b/client/client.go index 8659e1a..d7fbfa4 100644 --- a/client/client.go +++ b/client/client.go @@ -1,6 +1,7 @@ package client import ( + "net/http" "time" "github.com/foomo/contentserver/content" @@ -18,16 +19,26 @@ func NewClient( server string, connectionPoolSize int, waitTimeout time.Duration, +) (c *Client, err error) { + return NewClientWithTransport(NewSocketTransport(server, connectionPoolSize, waitTimeout)) +} + +func NewClientWithTransport( + transport transport, ) (c *Client, err error) { c = &Client{ - t: newSocketTransport(server, connectionPoolSize, waitTimeout), + t: transport, } return } func NewHTTPClient(server string) (c *Client, err error) { + return NewHTTPClientWithTransport(NewHTTPTransport(server, http.DefaultClient)) +} + +func NewHTTPClientWithTransport(transport transport) (c *Client, err error) { c = &Client{ - t: newHTTPTransport(server), + t: transport, } return } diff --git a/client/httptransport.go b/client/httptransport.go index a63c21d..0e6c6c1 100644 --- a/client/httptransport.go +++ b/client/httptransport.go @@ -14,10 +14,10 @@ type httpTransport struct { endpoint string } -func newHTTPTransport(server string) transport { +func NewHTTPTransport(server string, client *http.Client) transport { return &httpTransport{ endpoint: server, - client: http.DefaultClient, + client: client, } } diff --git a/client/sockettransport.go b/client/sockettransport.go index ff4707f..84ff550 100644 --- a/client/sockettransport.go +++ b/client/sockettransport.go @@ -24,7 +24,7 @@ type socketTransport struct { connPool *connectionPool } -func newSocketTransport(server string, connectionPoolSize int, waitTimeout time.Duration) transport { +func NewSocketTransport(server string, connectionPoolSize int, waitTimeout time.Duration) transport { return &socketTransport{ connPool: newConnectionPool(server, connectionPoolSize, waitTimeout), }