aboutsummaryrefslogtreecommitdiff
path: root/provider.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-01-29 19:32:11 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-01-29 19:32:11 +0100
commit7fbc4ac74bc925d99d5380dbeb7346341d70dee2 (patch)
treefdf457a03f46234360c3cc092c9ca7f14adce1c1 /provider.go
parent267f38f4ac903c26d9c4b98556a9943a98e7fe7f (diff)
kiss
Diffstat (limited to 'provider.go')
-rw-r--r--provider.go35
1 files changed, 14 insertions, 21 deletions
diff --git a/provider.go b/provider.go
index b803101..45ac842 100644
--- a/provider.go
+++ b/provider.go
@@ -48,14 +48,6 @@ func (p Provider) RoundTrip(req *http.Request) (*http.Response, error) {
return resp, nil
}
-func hasProblem(resp *http.Response) error {
- if resp.Header.Get("Content-Type") == mimeProblem {
- defer resp.Body.Close()
- return problem(resp.Body)
- }
- return nil
-}
-
// Nonce implements jose nonce provider
func (p Provider) Nonce() (string, error) {
select {
@@ -92,14 +84,7 @@ func (p *Provider) post(uri string, s Signer, v interface{}) (*http.Response, er
if err != nil {
return nil, err
}
- 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
+ return p.Post(uri, mimeJose, signed)
}
type nextStep struct {
@@ -126,18 +111,26 @@ func parseHeader(resp *http.Response) nextStep {
func parseJson(resp *http.Response, v interface{}) error {
defer resp.Body.Close()
- if resp.Header.Get("Content-Type") != mimeJson {
+ switch resp.Header.Get("Content-Type") {
+ case mimeJson:
+ return json.NewDecoder(resp.Body).Decode(v)
+ case mimeProblem:
+ return problem(resp.Body)
+ default:
return errContentType
}
- return json.NewDecoder(resp.Body).Decode(v)
}
func parseCert(resp *http.Response) (*x509.Certificate, error) {
defer resp.Body.Close()
- if resp.Header.Get("Content-Type") != mimePkix {
+ switch resp.Header.Get("Content-Type") {
+ case mimePkix:
+ return readCert(resp.Body)
+ case mimeProblem:
+ return nil, problem(resp.Body)
+ default:
return nil, errContentType
}
- return readCert(resp.Body)
}
func (p *Provider) Register(s Signer, c Contacts) error {
@@ -147,7 +140,7 @@ func (p *Provider) Register(s Signer, c Contacts) error {
Contact: c,
}
resp, err := p.post(p.NewReg, s, req)
- if err != nil && err.(Problem).Err != ErrMalformed {
+ if err != nil {
return err
}
ns := parseHeader(resp)