aboutsummaryrefslogtreecommitdiff
path: root/provider.go
diff options
context:
space:
mode:
Diffstat (limited to 'provider.go')
-rw-r--r--provider.go40
1 files changed, 18 insertions, 22 deletions
diff --git a/provider.go b/provider.go
index d160c94..551f8dc 100644
--- a/provider.go
+++ b/provider.go
@@ -69,17 +69,18 @@ func (p *Provider) postJson(uri string, s Signer, v interface{}) (nextStep, erro
if err != nil {
return nextStep{}, err
}
- return p.parseJson(resp, v)
+ return parseHeader(resp), parseJson(resp, v)
}
-func (p *Provider) postCert(uri string, s Signer, v interface{}) (*x509.Certificate, nextStep, error) {
+func (p *Provider) postCert(uri string, s Signer, v interface{}) (nextStep, *x509.Certificate, error) {
log.Println("post cert", uri)
resp, err := p.post(uri, s, v)
if err != nil {
- return nil, nextStep{}, err
+ return nextStep{}, nil, err
}
log.Println("post len", resp.ContentLength)
- return p.parseCert(resp)
+ cert, err := parseCert(resp)
+ return parseHeader(resp), cert, err
}
func (p *Provider) getJson(uri string, v interface{}) error {
@@ -88,8 +89,7 @@ func (p *Provider) getJson(uri string, v interface{}) error {
return err
}
p.nonce(resp)
- _, err = p.parseJson(resp, v)
- return err
+ return parseJson(resp, v)
}
func (p *Provider) getCert(uri string) (*x509.Certificate, error) {
@@ -99,8 +99,7 @@ func (p *Provider) getCert(uri string) (*x509.Certificate, error) {
}
p.nonce(resp)
log.Println("get len", resp.ContentLength)
- crt, _, err := p.parseCert(resp)
- return crt, err
+ return parseCert(resp)
}
type nextStep struct {
@@ -125,30 +124,27 @@ func parseHeader(resp *http.Response) nextStep {
return ns
}
-func (p *Provider) parseJson(resp *http.Response, v interface{}) (nextStep, error) {
- ns := parseHeader(resp)
+func parseJson(resp *http.Response, v interface{}) error {
defer resp.Body.Close()
switch resp.Header.Get("Content-Type") {
case "application/problem+json":
- return ns, problem(resp.Body)
+ return problem(resp.Body)
case "application/json":
- return ns, json.NewDecoder(resp.Body).Decode(v)
+ return json.NewDecoder(resp.Body).Decode(v)
default:
- return ns, errContentType
+ return errContentType
}
}
-func (p *Provider) parseCert(resp *http.Response) (*x509.Certificate, nextStep, error) {
- ns := parseHeader(resp)
+func parseCert(resp *http.Response) (*x509.Certificate, error) {
defer resp.Body.Close()
switch resp.Header.Get("Content-Type") {
case "application/problem+json":
- return nil, ns, problem(resp.Body)
+ return nil, problem(resp.Body)
case "application/pkix-cert":
- c, err := readCert(resp.Body)
- return c, ns, err
+ return readCert(resp.Body)
default:
- return nil, ns, errContentType
+ return nil, errContentType
}
}
@@ -253,10 +249,10 @@ func (p *Provider) queryStatus(url string) (bool, error) {
return r.Status == StatusValid, nil
}
-func (p *Provider) newCert(uri string, s Signer, d *Desire) (*x509.Certificate, nextStep, error) {
+func (p *Provider) newCert(uri string, s Signer, d *Desire) (nextStep, *x509.Certificate, error) {
csr, err := d.newCSR()
if err != nil {
- return nil, nextStep{}, err
+ return nextStep{}, nil, err
}
r := &CSR{
Resource: ResNewCert,
@@ -266,7 +262,7 @@ func (p *Provider) newCert(uri string, s Signer, d *Desire) (*x509.Certificate,
}
func (p *Provider) Cert(s Signer, d *Desire) error {
- crt, ns, err := p.newCert(p.NewCert, s, d)
+ ns, crt, err := p.newCert(p.NewCert, s, d)
if err != nil {
return err
}