Просмотр исходного кода

AWS を新Configで使えるように

Sotaro KARASAWA 11 лет назад
Родитель
Сommit
2b90489e29
3 измененных файлов с 34 добавлено и 13 удалено
  1. 1 1
      form/admin/aws.js
  2. 32 11
      lib/fileUploader.js
  3. 1 1
      routes/me.js

+ 1 - 1
form/admin/aws.js

@@ -6,7 +6,7 @@ var form = require('express-form')
 module.exports = form(
 module.exports = form(
   field('settingForm[aws:region]', 'リージョン').trim().is(/^[a-z]+-[a-z]+-\d+$/, 'リージョンには、AWSリージョン名を入力してください。 例: ap-northeast-1'),
   field('settingForm[aws:region]', 'リージョン').trim().is(/^[a-z]+-[a-z]+-\d+$/, 'リージョンには、AWSリージョン名を入力してください。 例: ap-northeast-1'),
   field('settingForm[aws:bucket]', 'バケット名').trim(),
   field('settingForm[aws:bucket]', 'バケット名').trim(),
-  field('settingForm[aws:accessKeyId]', 'Access Key Id').trim().is(/^[\da-zA-Z]$/),
+  field('settingForm[aws:accessKeyId]', 'Access Key Id').trim().is(/^[\da-zA-Z]+$/),
   field('settingForm[aws:secretAccessKey]', 'Secret Access Key').trim()
   field('settingForm[aws:secretAccessKey]', 'Secret Access Key').trim()
 );
 );
 
 

+ 32 - 11
lib/fileUploader.js

@@ -2,15 +2,33 @@
  * fileUploader
  * fileUploader
  */
  */
 
 
-var aws = require('aws-sdk');
-var config = require('config');
 
 
-module.exports = {
-  // deleteFile: function(filePath, callback) {
+module.exports = function(app) {
+  'use strict';
+
+  var aws = require('aws-sdk')
+    , debug = require('debug')('crowi:lib:fileUploader')
+    , config = app.set('config')
+    , lib = {}
+    ;
+
+  function getAwsConfig ()
+  {
+    return {
+      accessKeyId: config.crowi['aws:accessKeyId'],
+      secretAccessKey: config.crowi['aws:secretAccessKey'],
+      region: config.crowi['aws:region'],
+      bucket: config.crowi['aws:bucket']
+    };
+  }
+
+  // lib.deleteFile = function(filePath, callback) {
   //   // TODO 実装する
   //   // TODO 実装する
-  // },
-  uploadFile: function(filePath, contentType, fileStream, options, callback) {
-    var awsConfig = config.aws;
+  // };
+
+  lib.uploadFile = function(filePath, contentType, fileStream, options, callback) {
+    var awsConfig = getAwsConfig();
+
     aws.config.update({
     aws.config.update({
       accessKeyId: awsConfig.accessKeyId,
       accessKeyId: awsConfig.accessKeyId,
       secretAccessKey: awsConfig.secretAccessKey,
       secretAccessKey: awsConfig.secretAccessKey,
@@ -27,11 +45,14 @@ module.exports = {
     s3.putObject(params, function(err, data) {
     s3.putObject(params, function(err, data) {
       callback(err, data);
       callback(err, data);
     });
     });
-  },
-  generateS3FillUrl: function(filePath) {
-    var awsConfig = config.aws;
+  };
+
+  lib.generateS3FillUrl = function(filePath) {
+    var awsConfig = getAwsConfig();
     var url = 'https://' + awsConfig.bucket +'.s3.amazonaws.com/' + filePath;
     var url = 'https://' + awsConfig.bucket +'.s3.amazonaws.com/' + filePath;
 
 
     return url;
     return url;
-  }
+  };
+
+  return lib;
 };
 };

+ 1 - 1
routes/me.js

@@ -12,7 +12,7 @@ module.exports = function(app) {
   actions.api = api;
   actions.api = api;
 
 
   api.uploadPicture = function (req, res) {
   api.uploadPicture = function (req, res) {
-    var fileUploader = require('../lib/fileUploader');
+    var fileUploader = require('../lib/fileUploader')(app);
     var tmpFile = req.files.userPicture || null;
     var tmpFile = req.files.userPicture || null;
     if (!tmpFile) {
     if (!tmpFile) {
       return res.json({
       return res.json({