class COS::Config

Constants

DEFAULT_HOST

默认服务HOST

DEFAULT_MULTIPLE_SIGN_EXPIRE

默认多次签名过期时间(单位秒)

Attributes

api_base[R]

Public Class Methods

new(options = {}) click to toggle source

初始化

@example

COS::Config.new(app_id: '', secret_id: '', secret_key: '')

@param options [Hash] 客户端配置 @option options [String] :app_id COS分配的app_id @option options [String] :secret_id COS分配的secret_id @option options [String] :secret_key COS分配的secret_key @option options [String] :host COS服务host地址 @option options [String] :protocol 使用协议,默认为http,可选https @option options [Integer] :open_timeout 接口通讯建立连接超时秒数 @option options [Integer] :read_timeout 接口通讯读取数据超时秒数 @option options [String] :config 配置文件路径 @option options [String|Object] :log_src 日志输出

STDOUT | STDERR | 'path/filename.log'

@option options [Logger] :log_level 日志级别

Logger::DEBUG | Logger::INFO | Logger::ERROR | Logger::FATAL

@option options [String] :multiple_sign_expire 多次签名过期时间(单位秒) @option options [String] :default_bucket 默认bucket

@return [COS::Config]

@raise [AttrError] 如果缺少参数会抛出参数错误异常

Calls superclass method
# File lib/cos/config.rb, line 48
def initialize(options = {})
  # 从配置文件加载配置
  if options[:config]
    config = load_config_file(options[:config])
    options.merge!(config)
  end

  super(options)

  # log_src: STDOUT | STDERR | 'path/filename.log'
  # log_level: Logger::DEBUG | Logger::INFO | Logger::ERROR | Logger::FATAL
  if options[:log_src]
    Logging.set_logger(
        options[:log_src],
        options[:log_level] || Logger::INFO
    )
  end

  @protocol ||= 'http'
  @host     ||= DEFAULT_HOST
  @api_base = "#{@protocol}://#{@host}/files/v1"
  @multiple_sign_expire ||= DEFAULT_MULTIPLE_SIGN_EXPIRE
end

Public Instance Methods

get_bucket(custom_bucket) click to toggle source

获取指定的bucket或从config中获取默认bucket

@params custom_bucket [String] bucket名称

@return [String]

@raise [ClientError]

# File lib/cos/config.rb, line 79
def get_bucket(custom_bucket)
  b = custom_bucket || default_bucket
  if b == nil
    raise ClientError, 'Bucket name must be set'
  end
  b
end

Private Instance Methods

load_config_file(config_file) click to toggle source

加载yaml配置文件

# File lib/cos/config.rb, line 90
def load_config_file(config_file)
  hash = YAML.load(File.read(File.expand_path(config_file)))

  # Hash key字符串转为symbol
  hash.keys.each do |key|
    hash[(key.to_sym rescue key) || key] = hash.delete(key)
  end
  hash
end