Browse Source

Merge pull request #1499 from bcwaldon/client_clean

client: pass around statuscode instead of Response
Brian Waldon 11 years ago
parent
commit
3f6e584702
4 changed files with 19 additions and 19 deletions
  1. 4 4
      client/http.go
  2. 3 3
      client/http_test.go
  3. 6 6
      client/keys.go
  4. 6 6
      client/members.go

+ 4 - 4
client/http.go

@@ -53,13 +53,13 @@ type httpClient struct {
 	timeout   time.Duration
 	timeout   time.Duration
 }
 }
 
 
-func (c *httpClient) doWithTimeout(act httpAction) (*http.Response, []byte, error) {
+func (c *httpClient) doWithTimeout(act httpAction) (int, []byte, error) {
 	ctx, cancel := context.WithTimeout(context.Background(), c.timeout)
 	ctx, cancel := context.WithTimeout(context.Background(), c.timeout)
 	defer cancel()
 	defer cancel()
 	return c.do(ctx, act)
 	return c.do(ctx, act)
 }
 }
 
 
-func (c *httpClient) do(ctx context.Context, act httpAction) (*http.Response, []byte, error) {
+func (c *httpClient) do(ctx context.Context, act httpAction) (int, []byte, error) {
 	req := act.httpRequest(c.endpoint)
 	req := act.httpRequest(c.endpoint)
 
 
 	rtchan := make(chan roundTripResponse, 1)
 	rtchan := make(chan roundTripResponse, 1)
@@ -91,9 +91,9 @@ func (c *httpClient) do(ctx context.Context, act httpAction) (*http.Response, []
 	}()
 	}()
 
 
 	if err != nil {
 	if err != nil {
-		return nil, nil, err
+		return 0, nil, err
 	}
 	}
 
 
 	body, err := ioutil.ReadAll(resp.Body)
 	body, err := ioutil.ReadAll(resp.Body)
-	return resp, body, err
+	return resp.StatusCode, body, err
 }
 }

+ 3 - 3
client/http_test.go

@@ -78,14 +78,14 @@ func TestHTTPClientDoSuccess(t *testing.T) {
 		Body:       ioutil.NopCloser(strings.NewReader("foo")),
 		Body:       ioutil.NopCloser(strings.NewReader("foo")),
 	}
 	}
 
 
-	resp, body, err := c.do(context.Background(), &fakeAction{})
+	code, body, err := c.do(context.Background(), &fakeAction{})
 	if err != nil {
 	if err != nil {
 		t.Fatalf("incorrect error value: want=nil got=%v", err)
 		t.Fatalf("incorrect error value: want=nil got=%v", err)
 	}
 	}
 
 
 	wantCode := http.StatusTeapot
 	wantCode := http.StatusTeapot
-	if wantCode != resp.StatusCode {
-		t.Fatalf("invalid response code: want=%d got=%d", wantCode, resp.StatusCode)
+	if wantCode != code {
+		t.Fatalf("invalid response code: want=%d got=%d", wantCode, code)
 	}
 	}
 
 
 	wantBody := []byte("foo")
 	wantBody := []byte("foo")

+ 6 - 6
client/keys.go

@@ -114,12 +114,12 @@ func (k *httpKeysAPI) Create(key, val string, ttl time.Duration) (*Response, err
 		create.TTL = &uttl
 		create.TTL = &uttl
 	}
 	}
 
 
-	httpresp, body, err := k.client.doWithTimeout(create)
+	code, body, err := k.client.doWithTimeout(create)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
 
 
-	return unmarshalHTTPResponse(httpresp.StatusCode, body)
+	return unmarshalHTTPResponse(code, body)
 }
 }
 
 
 func (k *httpKeysAPI) Get(key string) (*Response, error) {
 func (k *httpKeysAPI) Get(key string) (*Response, error) {
@@ -128,12 +128,12 @@ func (k *httpKeysAPI) Get(key string) (*Response, error) {
 		Recursive: false,
 		Recursive: false,
 	}
 	}
 
 
-	httpresp, body, err := k.client.doWithTimeout(get)
+	code, body, err := k.client.doWithTimeout(get)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
 
 
-	return unmarshalHTTPResponse(httpresp.StatusCode, body)
+	return unmarshalHTTPResponse(code, body)
 }
 }
 
 
 func (k *httpKeysAPI) Watch(key string, idx uint64) Watcher {
 func (k *httpKeysAPI) Watch(key string, idx uint64) Watcher {
@@ -165,12 +165,12 @@ type httpWatcher struct {
 
 
 func (hw *httpWatcher) Next() (*Response, error) {
 func (hw *httpWatcher) Next() (*Response, error) {
 	//TODO(bcwaldon): This needs to be cancellable by the calling user
 	//TODO(bcwaldon): This needs to be cancellable by the calling user
-	httpresp, body, err := hw.client.do(context.Background(), &hw.nextWait)
+	code, body, err := hw.client.do(context.Background(), &hw.nextWait)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
 
 
-	resp, err := unmarshalHTTPResponse(httpresp.StatusCode, body)
+	resp, err := unmarshalHTTPResponse(code, body)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}

+ 6 - 6
client/members.go

@@ -64,12 +64,12 @@ type httpMembersAPI struct {
 }
 }
 
 
 func (m *httpMembersAPI) List() ([]httptypes.Member, error) {
 func (m *httpMembersAPI) List() ([]httptypes.Member, error) {
-	httpresp, body, err := m.client.doWithTimeout(&membersAPIActionList{})
+	code, body, err := m.client.doWithTimeout(&membersAPIActionList{})
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
 
 
-	if err := assertStatusCode(http.StatusOK, httpresp.StatusCode); err != nil {
+	if err := assertStatusCode(http.StatusOK, code); err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
 
 
@@ -83,12 +83,12 @@ func (m *httpMembersAPI) List() ([]httptypes.Member, error) {
 
 
 func (m *httpMembersAPI) Add(peerURL string) (*httptypes.Member, error) {
 func (m *httpMembersAPI) Add(peerURL string) (*httptypes.Member, error) {
 	req := &membersAPIActionAdd{peerURL: peerURL}
 	req := &membersAPIActionAdd{peerURL: peerURL}
-	httpresp, body, err := m.client.doWithTimeout(req)
+	code, body, err := m.client.doWithTimeout(req)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
 
 
-	if err := assertStatusCode(http.StatusCreated, httpresp.StatusCode); err != nil {
+	if err := assertStatusCode(http.StatusCreated, code); err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
 
 
@@ -102,12 +102,12 @@ func (m *httpMembersAPI) Add(peerURL string) (*httptypes.Member, error) {
 
 
 func (m *httpMembersAPI) Remove(memberID string) error {
 func (m *httpMembersAPI) Remove(memberID string) error {
 	req := &membersAPIActionRemove{memberID: memberID}
 	req := &membersAPIActionRemove{memberID: memberID}
-	httpresp, _, err := m.client.doWithTimeout(req)
+	code, _, err := m.client.doWithTimeout(req)
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
 
 
-	return assertStatusCode(http.StatusNoContent, httpresp.StatusCode)
+	return assertStatusCode(http.StatusNoContent, code)
 }
 }
 
 
 type membersAPIActionList struct{}
 type membersAPIActionList struct{}