code-push-server sae(新浪クラウド)のストレージの追加

3686 ワード

まずlisongのオープンソースコードに感謝します
https://github.com/lisong/code-push-server
もともと私もqiniuで保存していましたが、2018年10月、七牛からメールで通知が来て、テストドメイン名が回収されます
自分の登録済みドメイン名をバインドしない限り、涼しくなるしかありません.登録には時間がかかります.
新浪クラウドストレージの変更を決定
1、SDKのインストール
npm install scs-sdkの実行
2、二つのファイルを修正してgitを提出する
core/utils/common.js
ファイルの先頭にインポートを追加
var sinaCloud = require('scs-sdk');//2018-11-26

関数の追加

common.uploadFileToSae = function (key, filePath) {
  
  return (
    new Promise((resolve, reject) => {
      var saeconfig = new sinaCloud.Config({
        accessKeyId: _.get(config, "sae.accessKeyId"),
        secretAccessKey: _.get(config, "sae.secretKey"),
        sslEnabled: false
      });

      //   :
      var saeBucket = new sinaCloud.S3();
      saeBucket.config = saeconfig;

      fs.readFile(filePath, (err, data) => {
        var upSaeData = {
          ACL: 'public-read',
          Key: key,
          Body: data,
          Bucket: _.get(config, "sae.bucketName", "")
        };
        saeBucket.putObject(upSaeData, function(err, data) {
          if (err) {
            reject(new AppError.AppError(JSON.stringify(err)));
            //console.log("Error uploading data: ", err);
          } else {
            //console.log("Successfully uploaded data to myBucket/myKey");
            resolve(data)
          }
        });
      });
    })
  );
};

関数の更新
common.getBlobDownloadUrl = function (blobUrl) {
  var downloadUrl = '';
  var fileName = blobUrl;
  if (_.get(config, 'common.storageType') === 'local') {
    downloadUrl = _.get(config, 'local.downloadUrl');
    fileName = blobUrl.substr(0, 2).toLowerCase() + '/' + blobUrl;
  } else if (_.get(config, 'common.storageType') === 's3') {
    downloadUrl = _.get(config, 's3.downloadUrl');
  } else if (_.get(config, 'common.storageType') === 'oss') {
    downloadUrl = _.get(config, 'oss.downloadUrl');
  } else if (_.get(config, 'common.storageType') === 'qiniu') {
    downloadUrl = _.get(config, 'qiniu.downloadUrl');
  } else if (_.get(config, 'common.storageType') === 'sae') {
    downloadUrl = _.get(config, 'sae.downloadUrl');
  }
  return `${downloadUrl}/${fileName}`
};
common.uploadFileToStorage = function (key, filePath) {
  if (_.get(config, 'common.storageType') === 'local') {
    return common.uploadFileToLocal(key, filePath);
  } else if (_.get(config, 'common.storageType') === 's3') {
    return common.uploadFileToS3(key, filePath);
  } else if (_.get(config, 'common.storageType') === 'oss') {
    return common.uploadFileToOSS(key, filePath);
  } else if (_.get(config, 'common.storageType') === 'sae') {
    return common.uploadFileToSae(key, filePath);
  }
  return common.uploadFileToQiniu(key, filePath);
};

config/config.js
config.developmentに構造を追加
// Config for sae(sina) cloud storage when storageType value is "sae". 2018-11-26
  sae: {
    accessKeyId: process.env.SAE_ACCESS_KEY_ID || "",
    secretKey: process.env.SAE_SECRET_KEY || "",
    bucketName: process.env.SAE_BUCKET_NAME || "",
    downloadUrl: process.env.SAE_DOWNLOAD_URL || "" // Binary files download host address.
  },

3、環境変数の修正
4つの変数を追加
注意SAE_DOWNLOAD_URL 
bucket名が:my-bucketの場合は、
https://sinacloud.net/my-bucket,