From e7174c090a23fe437d717d01fce44196305dea5f Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 16 Jan 2016 03:39:51 +0100 Subject: Experimantal --- client.go | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 client.go (limited to 'client.go') diff --git a/client.go b/client.go new file mode 100644 index 0000000..45562bc --- /dev/null +++ b/client.go @@ -0,0 +1,44 @@ +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 +} -- cgit v1.2.3