const stripe = require('stripe')('pk_live_alyEi3lN0kSwbdevK0nrGwTw') const Now = require('../lib') module.exports = class CreditCards extends Now { async ls() { const res = await this._fetch('/cards') const body = await res.json() if (res.status !== 200) { const e = new Error(body.error.message) e.code = body.error.code throw e } return body } async setDefault(cardId) { await this._fetch('/cards/default', { method: 'PUT', body: { cardId } }) return true } async rm(cardId) { await this._fetch(`/cards/${encodeURIComponent(cardId)}`, { method: 'DELETE' }) return true } /* eslint-disable camelcase */ add(card) { return new Promise(async (resolve, reject) => { const expDateParts = card.expDate.split(' / ') card = { name: card.name, number: card.cardNumber, cvc: card.ccv, address_country: card.country, address_zip: card.zipCode, address_state: card.state, address_city: card.city, address_line1: card.address1 } card.exp_month = expDateParts[0] card.exp_year = expDateParts[1] try { const stripeToken = (await stripe.tokens.create({ card })).id const res = await this._fetch('/cards', { method: 'POST', body: { stripeToken } }) const body = await res.json() if (body && body.id) { resolve({ last4: body.last4 }) } else if (body.error && body.error.message) { reject(new Error(body.error.message)) } else { reject(new Error('Unknown error')) } } catch (err) { reject(new Error(err.message || 'Unknown error')) } }) } }