import stampit from 'stampit'; import {Meta, Model} from './base'; import {BaseQuerySet, Get, List} from '../querySet'; const SubscriptionQuerySet = stampit().compose( BaseQuerySet, Get, List ).methods({ cancel(properties = {}, payload = {}) { this.properties = _.assign({}, this.properties, properties); this.method = 'POST'; this.payload = {payload} this.endpoint = 'cancel'; return this; } }); const SubscriptionMeta = Meta({ name: 'subscription', pluralName: 'subscriptions', endpoints: { 'detail': { 'methods': ['get'], 'path': '/v1.1/billing/subscriptions/{id}/' }, 'list': { 'methods': ['get'], 'path': '/v1.1/billing/subscriptions/' }, 'cancel': { 'methods': ['post'], 'path': '/v1.1/billing/subscriptions/{id}/cancel/' } } }); /** * OO wrapper around Subscription. * @constructor * @type {Subscription} * @property {String} end * @property {String} commitment * @property {String} start * @property {String} pricing * @property {Number} id * @property {String} plan */ const Subscription = stampit() .compose(Model) .setQuerySet(SubscriptionQuerySet) .setMeta(SubscriptionMeta) .methods({ cancel(payload = {}) { const meta = this.getMeta(); const path = meta.resolveEndpointPath('cancel', this); return this.makeRequest('POST', path, {payload}); } }); export default Subscription;