2025-04-24 17:03:28 +08:00

50 lines
1.2 KiB
JavaScript

'use strict';
var co = require('co');
var OssClient = require('..');
module.exports = Client;
function isGenerator(obj) {
return obj && 'function' == typeof obj.next && 'function' == typeof obj.throw;
}
function isGeneratorFunction(obj) {
if (!obj) return false;
var constructor = obj.constructor;
if (!constructor) return false;
if ('GeneratorFunction' === constructor.name || 'GeneratorFunction' === constructor.displayName) return true;
return isGenerator(constructor.prototype) || isGenerator(obj.prototype);
}
function wrap(ObjectClass, options) {
var client = new ObjectClass(options);
var props = Object.keys(client);
var protoProps = Object.keys(Object.getPrototypeOf(client));
props.concat(protoProps).forEach(function(key) {
if (isGeneratorFunction(client[key])) {
this[key] = co.wrap(client[key]).bind(client);
} else {
this[key] = client[key];
}
}, this);
}
function Client(options) {
if (!(this instanceof Client)) {
return new Client(options);
}
wrap.call(this, OssClient, options);
}
Client.STS = function STSClient(options) {
if (!(this instanceof STSClient)) {
return new STSClient(options);
}
wrap.call(this, OssClient.STS, options);
}