aboutsummaryrefslogtreecommitdiff
path: root/provider.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-01-29 19:12:05 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-01-29 19:12:05 +0100
commit267f38f4ac903c26d9c4b98556a9943a98e7fe7f (patch)
tree8035cc9edc9bd6422d220020b0c3a97bf453a8de /provider.go
parentb1a922113dc711e395672a5c8945f451308f9f4c (diff)
Flag registered acc, move problem out of RoundTrip
Diffstat (limited to 'provider.go')
-rw-r--r--provider.go36
1 files changed, 16 insertions, 20 deletions
diff --git a/provider.go b/provider.go
index f2ab923..b803101 100644
--- a/provider.go
+++ b/provider.go
@@ -6,7 +6,6 @@ import (
"errors"
"log"
"net/http"
- "net/url"
"regexp"
"time"
)
@@ -46,14 +45,15 @@ func (p Provider) RoundTrip(req *http.Request) (*http.Response, error) {
}
p.nonces <- nonce
}
- // not sure if it belongs here
- /*
+ return resp, nil
+}
+
+func hasProblem(resp *http.Response) error {
if resp.Header.Get("Content-Type") == mimeProblem {
defer resp.Body.Close()
- return nil, problem(resp.Body)
+ return problem(resp.Body)
}
- */
- return resp, nil
+ return nil
}
// Nonce implements jose nonce provider
@@ -92,7 +92,14 @@ func (p *Provider) post(uri string, s Signer, v interface{}) (*http.Response, er
if err != nil {
return nil, err
}
- return p.Post(uri, mimeJose, signed)
+ resp, err := p.Post(uri, mimeJose, signed)
+ if err != nil {
+ return nil, err
+ }
+ if err := hasProblem(resp); err != nil {
+ return resp, err
+ }
+ return resp, nil
}
type nextStep struct {
@@ -140,19 +147,8 @@ func (p *Provider) Register(s Signer, c Contacts) error {
Contact: c,
}
resp, err := p.post(p.NewReg, s, req)
- if err != nil {
- switch e := err.(type) {
- case Problem:
- log.Println("problem")
- if e.Err != ErrMalformed {
- return err
- }
- case *url.Error:
- log.Println("url error")
- default:
- log.Println("other problem")
- return err
- }
+ if err != nil && err.(Problem).Err != ErrMalformed {
+ return err
}
ns := parseHeader(resp)