aboutsummaryrefslogtreecommitdiff
path: root/provider.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-01-16 03:39:51 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-01-16 03:39:51 +0100
commite7174c090a23fe437d717d01fce44196305dea5f (patch)
treed6e2cf2d80e3ea7cad2cc55bc902af2beea3ecaa /provider.go
parent5af20841fa5c341ea4d18c4c1e99946d12fffb08 (diff)
Experimantal
Diffstat (limited to 'provider.go')
-rw-r--r--provider.go19
1 files changed, 14 insertions, 5 deletions
diff --git a/provider.go b/provider.go
index 79aa959..755e8c6 100644
--- a/provider.go
+++ b/provider.go
@@ -16,6 +16,7 @@ type Provider struct {
Directory
nonces chan string
http.Client
+ dir string
}
var (
@@ -35,6 +36,13 @@ func (p Provider) Nonce() (string, error) {
}
}
+func (p Provider) nonce(resp *http.Response) {
+ if rn := resp.Header.Get("Replay-Nonce"); rn != "" {
+ p.nonces <- rn
+ }
+ log.Println("# nonces", len(p.nonces))
+}
+
// NewProvider fetches directory and initializes nonce
func NewProvider(directory string) (*Provider, error) {
p := &Provider{
@@ -42,6 +50,7 @@ func NewProvider(directory string) (*Provider, error) {
Client: http.Client{
Timeout: time.Duration(5 * time.Second),
},
+ dir: directory,
}
return p, p.getJson(directory, &p.Directory)
}
@@ -51,7 +60,9 @@ func (p *Provider) post(uri string, s Signer, v interface{}) (*http.Response, er
if err != nil {
return nil, err
}
- return p.Post(uri, "application/jose+json", signed)
+ resp, err := p.Post(uri, "application/jose+json", signed)
+ p.nonce(resp)
+ return resp, err
}
func (p *Provider) postJson(uri string, s Signer, v interface{}) (nextStep, error) {
@@ -78,6 +89,7 @@ func (p *Provider) getJson(uri string, v interface{}) error {
if err != nil {
return err
}
+ p.nonce(resp)
_, err = p.parseJson(resp, v)
return err
}
@@ -87,6 +99,7 @@ func (p *Provider) getCert(uri string) (*x509.Certificate, error) {
if err != nil {
return nil, err
}
+ p.nonce(resp)
log.Println("get len", resp.ContentLength)
crt, _, err := p.parseCert(resp)
return crt, err
@@ -111,10 +124,6 @@ func (p *Provider) parseHeader(resp *http.Response) nextStep {
ns.Link[re[2]] = re[1]
}
}
- if rn := resp.Header.Get("Replay-Nonce"); rn != "" {
- log.Println("# nonces", len(p.nonces))
- p.nonces <- rn
- }
return ns
}