UNPKG

@actonate/mirkwood

Version:

GraphQL based Rapid Server-side Development framework

151 lines (117 loc) 4.26 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _graphql = require('graphql'); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _mime = require('mime'); var _mime2 = _interopRequireDefault(_mime); var _awsSdk = require('aws-sdk'); var _awsSdk2 = _interopRequireDefault(_awsSdk); var _types = require('../../lib/types'); var _types2 = _interopRequireDefault(_types); var _resolver = require('../../lib/resolver'); var _resolver2 = _interopRequireDefault(_resolver); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var AWSS3Utility = function () { function AWSS3Utility(_ref) { var config = _ref.config; _classCallCheck(this, AWSS3Utility); this.resolvers = {}; var envConfig = config[process.env['NODE_ENV'] || 'development']; // update AWS credentials _awsSdk2.default.config.update({ accessKeyId: envConfig.key, secretAccessKey: envConfig.secret }); // Create bucket instance if (envConfig.bucket && envConfig.bucket.name) { this.s3bucket = new _awsSdk2.default.S3({ params: { Bucket: envConfig.bucket.name } }); } } _createClass(AWSS3Utility, [{ key: 'putResolver', value: function putResolver(resolverName, type, model, inputSchema) { var s3bucket = this.s3bucket; var args = inputSchema.args; args = _extends({ cwd: { type: _types2.default.String, defaultValue: 'tmp' }, src: { type: _types2.default.String, required: true }, dest: { type: _types2.default.String, required: true }, acl: { type: _types2.default.String, defaultValue: 'public-read' }, cache: { type: _types2.default.String } }, args); var argsObjects = _types2.default.generateArgs(args, inputSchema.name); return { type: type || _types2.default.Boolean, args: argsObjects, resolve: new _resolver2.default(resolverName, function (_, args, ctx) { var srcPath = _path2.default.resolve(args.cwd, args.src); var dest = args.dest; return new Promise(function (resolve, reject) { _fs2.default.readFile(srcPath, function (err, res) { if (err) { reject(err); return; } var data = { // Bucket: sails.config.globals.awsBucketName, Key: dest, ACL: args.acl, Body: res, ContentType: _mime2.default.getType(srcPath), CacheControl: args.cache }; s3bucket.putObject(data, function (err, res) { if (err) { reject(err); return; } resolve(true); }); }); }); }) }; } }, { key: 'mutations', value: function mutations(type, inputType, model) { var schema = model.schema; var modelName = schema.name; return new _graphql.GraphQLObjectType({ name: [modelName, 'AWSS3_Mutation'].join(''), fields: { upload: this.putResolver('awsS3.upload', _types2.default.Boolean, model, { args: {} }) } }); } }, { key: 'queries', value: function queries(type, inputType, model) { return false; } }]); return AWSS3Utility; }(); exports.default = AWSS3Utility;