From 180dda5b51fafcc972ece0f4cfedc25a615e3ecb Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Thu, 10 Dec 2015 13:32:14 +0100 Subject: Tweak methods --- client.go | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) (limited to 'client.go') diff --git a/client.go b/client.go index 5b178a8..b144e6f 100644 --- a/client.go +++ b/client.go @@ -9,20 +9,21 @@ import ( "net/textproto" "regexp" "time" + + "github.com/square/go-jose" ) type Solver interface { Solve() } -type NonceSigner interface { - Sign([]byte) ([]byte, error) - parseNonce(*http.Response) +type Signer interface { + Sign([]byte, jose.NonceSource) ([]byte, error) } type Client struct { - directory Directory - nonce chan string + Dir Directory + nonce chan string } // NewClient fetches directory and initializes nonce @@ -34,7 +35,7 @@ func NewClient(uri string) (*Client, error) { defer resp.Body.Close() c := &Client{nonce: make(chan string, 10)} c.nonce <- replyNonce(resp) - err = json.NewDecoder(resp.Body).Decode(&c.directory) + err = json.NewDecoder(resp.Body).Decode(&c.Dir) if err != nil { return nil, err } @@ -53,18 +54,6 @@ func (c Client) Nonce() (string, error) { } } -// Get is used for -// directory, authz, cert -func Get(s NonceSigner, uri string, v interface{}) error { - resp, err := http.Get(uri) - if err != nil { - return err - } - defer resp.Body.Close() - s.parseNonce(resp) - return json.NewDecoder(resp.Body).Decode(v) -} - // Important header fields // // Replay-Nonce each response, required for next request @@ -82,13 +71,13 @@ func Get(s NonceSigner, uri string, v interface{}) error { // Post is used for // new-reg, new-authz, challenge, new-cert -func Post(s NonceSigner, uri string, v interface{}) (*http.Response, error) { +func (c Client) Post(s Signer, uri string, v interface{}) (*http.Response, error) { body, err := json.Marshal(v) if err != nil { return nil, err } - signed, err := s.Sign(body) + signed, err := s.Sign(body, c) if err != nil { return nil, err } @@ -99,7 +88,7 @@ func Post(s NonceSigner, uri string, v interface{}) (*http.Response, error) { return nil, err } - s.parseNonce(resp) + c.nonce <- replyNonce(resp) if resp.StatusCode >= http.StatusBadRequest { return nil, handleError(resp) -- cgit v1.2.3