aboutsummaryrefslogtreecommitdiff
path: root/client.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-12-12 15:29:06 +0100
committerDimitri Sokolyuk <demon@dim13.org>2015-12-12 15:29:06 +0100
commit6ccca7c4e8a6efa649a6b7d96463d30498406bdf (patch)
tree481bf6f50707c66142751ead3df6e6e42ebf59e3 /client.go
parente59ab03dcd92d068081800d57cafc3053c1cdbc6 (diff)
Combine request and response
Diffstat (limited to 'client.go')
-rw-r--r--client.go47
1 files changed, 18 insertions, 29 deletions
diff --git a/client.go b/client.go
index 0422a39..aef6ec0 100644
--- a/client.go
+++ b/client.go
@@ -66,28 +66,29 @@ func (c Client) Nonce() (string, error) {
// Request issuance POST new-cert 201 -> cert
// Check for new cert GET cert 200
-// post is used for
+// request is used for
// new-reg, new-authz, challenge, new-cert
-func (c *Client) post(url string, s Signer, v interface{}) (*http.Response, error) {
- body, err := json.Marshal(v)
+func (c *Client) request(url string, s Signer, rq, re interface{}) error {
+ body, err := json.Marshal(rq)
if err != nil {
- return nil, err
+ return err
}
log.Println(string(body))
signed, err := s.Sign(body, c)
if err != nil {
- return nil, err
+ return err
}
resp, err := http.Post(url, "application/jose+json",
bytes.NewReader(signed))
if err != nil {
- return nil, err
+ return err
}
+ defer resp.Body.Close()
if resp.StatusCode >= http.StatusBadRequest {
- return nil, handleError(resp)
+ return handleError(resp)
}
c.nonce <- replyNonce(resp)
@@ -96,12 +97,7 @@ func (c *Client) post(url string, s Signer, v interface{}) (*http.Response, erro
c.Location = location(resp)
}
- return resp, nil
-}
-
-func (c *Client) response(r *http.Response, v interface{}) error {
- defer r.Body.Close()
- return json.NewDecoder(r.Body).Decode(v)
+ return json.NewDecoder(resp.Body).Decode(re)
}
func location(r *http.Response) string {
@@ -153,49 +149,42 @@ func replyNonce(r *http.Response) string {
*/
func (c *Client) Register(a *Account) error {
- r := Registration{
+ rq := Registration{
Resource: ResNewReg,
Contact: a.Contact,
}
- resp, err := c.post(c.Dir.NewReg, a, r)
- if err != nil {
- return err
- }
re := RegistrationResp{}
- err = c.response(resp, &re)
+ err := c.request(c.Dir.NewReg, a, rq, &re)
if err != nil {
return err
}
log.Println(re)
// Agree to TOS
- r.Resource = ResRegister
- r.Agreement = c.Link["terms-of-service"]
- aresp, err := c.post(c.Location, a, r)
+ rq.Resource = ResRegister
+ rq.Agreement = c.Link["terms-of-service"]
+ err = c.request(c.Location, a, rq, &re)
if err != nil {
return err
}
- err = c.response(aresp, &re)
log.Println(re)
return err
}
func (c *Client) Authorize(a *Account, domain string) error {
- az := Authorization{
+ rq := Authorization{
Resource: ResNewAuthz,
Identifier: Identifier{
Type: IdentDNS,
Value: domain,
},
}
- resp, err := c.post(c.Dir.NewAuthz, a, az)
+ re := AuthorizationResp{}
+ err := c.request(c.Dir.NewAuthz, a, rq, &re)
if err != nil {
return err
}
- defer resp.Body.Close()
- ae := AuthorizationResp{}
- err = json.NewDecoder(resp.Body).Decode(&ae)
- log.Println(ae)
+ log.Println(re)
return err
}