package acme import "encoding/json" type Client struct { Location string Link map[string]string Directory Signer } func NewClient(p Provider, s Signer) (*Client, error) { var dir Directory resp, err := p.Get(p.dir) if err != nil { return nil, err } p.nonce(resp) // get first nonce err = json.NewDecoder(resp.Body).Decode(&dir) if err != nil { return nil, err } return &Client{Directory: dir, Signer: s}, nil } func (c *Client) newReg(p Provider, s Signer, con Contacts) error { r := &Registration{ Resource: ResNewReg, Contact: con, } resp, err := p.post(c.NewReg, s, r) if err != nil { return err } p.nonce(resp) r = &Registration{ Resource: ResReg, Agreement: c.Link["terms-of-service"], } if _, err := p.postJson(c.Location, s, r); err != nil { return err } return nil }