UNPKG

ks3

Version:

本代码库为`金山云存储KS3`服务.主要提供`KS3 nodejs SDK`和`命令行工具`.

91 lines (78 loc) 2.16 kB
var debug = require('debug')('app') var auth = require('./auth') var iam = require('./api/iam') var config = require('./../config') var util = require('./util') var sts = require('./sts') var initOptions = require('./initOptions') var advance = require('./advance') function checkRegionValid (region) { return Object.keys(config.ENDPOINT).indexOf(region) > -1 } // 原参数:ak, sk, bucket, region function KS3(opts = {}) { let options = {} const args = arguments // 参数大于2个时为旧版创建方式 否则是新版的创建方式 if (args.length >= 2) { const [ ak = '', sk = '', bucket = '', region = config.region ] = arguments options = { ak, sk, bucket, region } if (region) { if (!checkRegionValid(region)) throw new Error('region is not legal, please check params') options.endpoint = config.ENDPOINT[region] } } else { options = opts } if (!options.inited) options = initOptions(options) const { region, endpoint, secure } = options var core = this; for (let v in options) { core[v] = options[v] } if (region) { config.setRegion(region); } config.baseUrl = endpoint config.protocol = secure ? 'https' : 'http' const arr = ['service', 'bucket', 'object', 'upload', 'download', 'advance'] arr.forEach(function(name) { var api = ['advance'].indexOf(name) > -1 ? require('./' + name) : require('./api/' + name); core[name] = {}; // 绑定this到各自函数身上 for (var attr in api) { core[name][attr] = (function(attr) { return function() { var args = Array.prototype.slice.call(arguments); return util.apiWrapper.call(core, name, api[attr], args) } })(attr) } }); } /** * 填充信息 */ KS3.version = require('../package.json').version; KS3.prototype = { // 进行配置 config: function(cfg) { for (var it in cfg) { // 全局配置 需要当前版本信息 if (it == 'ua') { config[it] += (cfg[it]? ` ${cfg[it]}` : '') } else { config[it] = cfg[it]; } } }, request: require('./request'), }; KS3.util = util KS3.auth = auth KS3.iam = iam KS3.STS = sts KS3.advance = advance module.exports = KS3;