// Ours const Now = require('../lib') module.exports = class Certs extends Now { ls() { return this.retry(async (bail, attempt) => { if (this._debug) { console.time(`> [debug] #${attempt} GET now/certs`) } const res = await this._fetch('/now/certs') if (this._debug) { console.timeEnd(`> [debug] #${attempt} GET now/certs`) } const body = await res.json() return body.certs }) } create(cn) { return this.createCert(cn) } renew(cn) { return this.createCert(cn, { renew: true }) } put(cn, crt, key, ca) { return this.retry(async (bail, attempt) => { if (this._debug) { console.time(`> [debug] #${attempt} PUT now/certs`) } const res = await this._fetch('/now/certs', { method: 'PUT', body: { domains: [cn], ca, cert: crt, key } }) if (this._debug) { console.timeEnd(`> [debug] #${attempt} PUT now/certs`) } if (res.status === 403) { return bail(new Error('Unauthorized')) } const body = await res.json() if (res.status !== 200) { if (res.status === 404 || res.status === 400) { const err = new Error(body.error.message) err.userError = true return bail(err) } throw new Error(body.error.message) } return body }) } delete(cn) { return this.retry(async (bail, attempt) => { if (this._debug) { console.time(`> [debug] #${attempt} DELETE now/certs/${cn}`) } const res = await this._fetch(`/now/certs/${cn}`, { method: 'DELETE' }) if (this._debug) { console.timeEnd(`> [debug] #${attempt} DELETE now/certs/${cn}`) } if (res.status === 403) { return bail(new Error('Unauthorized')) } const body = await res.json() if (res.status !== 200) { if (res.status === 404 || res.status === 400) { const err = new Error(body.error.message) err.userError = true return bail(err) } throw new Error(body.error.message) } return body }) } }