import stampit from 'stampit'; import {Meta, Model} from './base'; import _ from 'lodash'; import {BaseQuerySet, Get, Create, Update, Delete, List} from '../querySet'; const HostingFileQuerySet = stampit().compose( BaseQuerySet, Get, Create, Delete, Update, List ) .methods({ upload(properties = {}, payload = {}) { this.properties = _.assign({}, this.properties, properties); this.method = 'POST'; this.endpoint = 'list'; this.payload = payload; this.raw(); return this.then((response) => { return this.model.fromJSON(response, this.properties); }); } }) const HostingFileMeta = Meta({ name: 'hostingfile', pluralName: 'hostingfiles', endpoints: { 'detail': { 'methods': ['get', 'put', 'patch', 'delete'], 'path': '/v1.1/instances/{instanceName}/hosting/{hostingId}/files/{id}/' }, 'list': { 'methods': ['post', 'get'], 'path': '/v1.1/instances/{instanceName}/hosting/{hostingId}/files/' } } }); const HostingFileConstraints = { instanceName: { presence: true, length: { minimum: 5 } }, hostingId: { presence: true, numericality: true }, path: { presence: true, string: true }, file: { presence: true } } /** * OO wrapper around HostingFile. * @constructor * @type {Hosting} * @property {Number} hostingId * @property {String} path * @property {Object} file_object */ const HostingFile = stampit() .compose(Model) .setQuerySet(HostingFileQuerySet) .setMeta(HostingFileMeta) .setConstraints(HostingFileConstraints); export default HostingFile;