// 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; }); } };