const Now = require('../lib') module.exports = class Teams extends Now { async create({ slug }) { return this.retry(async (bail, attempt) => { if (this._debug) { console.time(`> [debug] #${attempt} POST /teams}`) } const res = await this._fetch(`/teams`, { method: 'POST', body: { slug } }) if (this._debug) { console.timeEnd(`> [debug] #${attempt} POST /teams`) } if (res.status === 403) { return bail(new Error('Unauthorized')) } const body = await res.json() if (res.status === 400) { const e = new Error(body.error.message) e.code = body.error.code return bail(e) } else if (res.status !== 200) { const e = new Error(body.error.message) e.code = body.error.code throw e } return body }) } async edit({ id, slug, name }) { return this.retry(async (bail, attempt) => { if (this._debug) { console.time(`> [debug] #${attempt} PATCH /teams/${id}}`) } const payload = {} if (name) { payload.name = name } if (slug) { payload.slug = slug } const res = await this._fetch(`/teams/${id}`, { method: 'PATCH', body: payload }) if (this._debug) { console.timeEnd(`> [debug] #${attempt} PATCH /teams/${id}`) } if (res.status === 403) { return bail(new Error('Unauthorized')) } const body = await res.json() if (res.status === 400) { const e = new Error(body.error.message) e.code = body.error.code return bail(e) } else if (res.status !== 200) { const e = new Error(body.error.message) e.code = body.error.code throw e } return body }) } async inviteUser({ teamId, email }) { return this.retry(async (bail, attempt) => { if (this._debug) { console.time(`> [debug] #${attempt} POST /teams/${teamId}/members}`) } const res = await this._fetch(`/teams/${teamId}/members`, { method: 'POST', body: { email } }) if (this._debug) { console.timeEnd(`> [debug] #${attempt} POST /teams/${teamId}/members}`) } if (res.status === 403) { return bail(new Error('Unauthorized')) } const body = await res.json() if (res.status === 400) { const e = new Error(body.error.message) e.code = body.error.code return bail(e) } else if (res.status !== 200) { const e = new Error(body.error.message) e.code = body.error.code throw e } return body }) } async ls() { return this.retry(async (bail, attempt) => { if (this._debug) { console.time(`> [debug] #${attempt} GET /teams}`) } const res = await this._fetch(`/teams`) if (this._debug) { console.timeEnd(`> [debug] #${attempt} GET /teams`) } if (res.status === 403) { return bail(new Error('Unauthorized')) } return res.json() }) } }