aboutsummaryrefslogtreecommitdiff
path: root/client.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-12-23 17:05:03 +0100
committerDimitri Sokolyuk <demon@dim13.org>2015-12-23 17:05:03 +0100
commit650415dbf290bc8f4dc0d475da05e30619574153 (patch)
treece1ee6c05beb6487ec514735ee9059a029162510 /client.go
parent6415a2c9bdf8fc1310268f705c9ef67f76e3416d (diff)
Add webroot solver
Diffstat (limited to 'client.go')
-rw-r--r--client.go21
1 files changed, 15 insertions, 6 deletions
diff --git a/client.go b/client.go
index 4be5bdf..84906b5 100644
--- a/client.go
+++ b/client.go
@@ -228,31 +228,40 @@ func (c *Client) Authorize(a *Account, domain []string) error {
_, err = c.post(ch.URI, a, ans)
switch ch.Type {
case ChallengeHTTP:
- httpChallenge{Addr: ":80", Challenge: *ans}.Solve()
+ httpChallenge{Addr: ":8080", Challenge: *ans}.Solve()
}
}
}
for {
- az, err := c.Status(ns.Location.String())
+ az, ra, err := c.Status(ns.Location.String())
if err != nil {
return err
}
log.Println(az)
- time.Sleep(time.Second)
+ log.Println(ra)
+ for _, ch := range az.Challenges {
+ switch ch.Status {
+ case StatusPending, StatusProcessing:
+ default:
+ return nil
+ }
+ }
+ time.Sleep(ra)
}
}
return err
}
-func (c *Client) Status(url string) (*Authorization, error) {
+func (c *Client) Status(url string) (*Authorization, time.Duration, error) {
r := &Authorization{}
resp, err := http.Get(url)
if err != nil {
- return nil, err
+ return nil, time.Second, err
}
defer resp.Body.Close()
defer c.replyNonce(resp)
- return r, json.NewDecoder(resp.Body).Decode(r)
+ ns := parseHeader(resp)
+ return r, ns.RetryAfter, json.NewDecoder(resp.Body).Decode(r)
}
////////////////////////////////////////////////////////////////////////