bos_client 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6b4f7253d95434dfe4780441e9e8abd04de23d7a
4
- data.tar.gz: c07a5b2a3b79b6838b53f951c0abc9a7c60095dd
3
+ metadata.gz: a51335e0701f20bd4f64014d6be8916f1f95dddd
4
+ data.tar.gz: 97b474f581a0073d8dfcae645fb84647e258be49
5
5
  SHA512:
6
- metadata.gz: 729c021c631f4489d9f27943e50aa700b401af2303a39a65b01c26a35e4570a5061c4c75f0c7dabd9be811d812decf06324cae23e30d098b0238b4573d0025a5
7
- data.tar.gz: c558fe178daeba6b80bb577c04458d17e8ffa0bd33178860ac4872177bfad7a8c587b1d665c4af07d39c7c26e78b93f35eceb14c3421d1cfa4204b49eebc4070
6
+ metadata.gz: e7f08a6fce9f9c7cc7a4ecc2a4036b63b5f754aa486d60f86c7348c9d49e2b9390011ee09d04d52b491ca666fe57df20808514d08856c63cfbfd1070d341fccf
7
+ data.tar.gz: bd60fed016b190e4e00847da1dcc1829c6c3746e5c7d37b18cf4c52e5b476a2e6c04a390799694ed94b27f8fb97809145fd30a81f0cadbcdc6efa911de6981f7
data/.travis.yml CHANGED
@@ -1,7 +1,11 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1.2
3
+ - 2.1.2
4
4
  before_script:
5
- - bundle install
5
+ - bundle install
6
6
  script:
7
- - bundle exec rspec
7
+ - bundle exec rspec
8
+ notifications:
9
+ slack:
10
+ secure: RL3pJyyctMFuoTHleabKFXnyRXD6e4rjpj4Mx6juA5Gx+Fy1bj3gl+kmYPJlh81XNGjA3+t0FknswNe0E3eFCfHVyrQ0G+AkOFIwSJ1FNmjKnOi8YfFv6V+ACIft5oucGbe+k0MgZXj0/u+NVqrnePCxFI3rP3vBzr3Ou1n7J7r7SYGrePxpsYVCcmdpUN8TgHjKQRr5TcUPaBTPQcGHZ65hOiI7nsWM35452MTi7+NFql+dhflOCJuiajN96hojaVkzGWZi5bp9A7e4LipdjgmNvpwGkseiksIfZd2pq6Ho20DeEp7mEweyS7wmb4p675g5Aal22jTZkNbZBGFzr55+tqIYSp92iby9InKmPyniO8ivyokO2XdzJkJikzUjXlhfjWKbuKf9hGC6bLHzzeSs1ZS7Ekiyr9kXsnA0xIEPzpc2AjSgS+K6vhQeyon3tnFAEKO9MJIjvgKq/jgOSsV6wc/AkHpFK3nZrjVVBAtpkPZeuvG+q2Gmo2p3ip3i2uqWEFkpAktcWmIt/p9dzE1OR5G+Hf6CNd+t5wLd9T6BtAYT5P/tpaATQ5VrlhnqgJZbQI6umXp2nNQTTA7cgn1ENoQA6R5D+q5v9HE3EPY6cvTZJ+Rs5UjVljsb1pJTs92RbppwLJUm2kMvOpOqRng9qJS1OD/KNFqXBH2TS6o=
11
+ email: false
data/CHANGELOG ADDED
@@ -0,0 +1 @@
1
+ Version 0.1.1 Added save bucket method
data/README.md CHANGED
@@ -1,11 +1,10 @@
1
- # BosClient
2
-
1
+ # BosClient [![Gem Version](https://badge.fury.io/rb/bos_client.svg)](https://badge.fury.io/rb/bos_client) ![](https://travis-ci.org/fcce/bos.svg?branch=master)
3
2
  ## Installation
4
3
 
5
4
  Add this line to your application's Gemfile:
6
5
 
7
6
  ```ruby
8
- gem 'bos', :git => 'git@github.com:fcce/bos.git'
7
+ gem 'bos_client'
9
8
  ```
10
9
 
11
10
  And then execute:
@@ -16,8 +15,6 @@ Or install it yourself as:
16
15
 
17
16
  $ gem install bos_client
18
17
 
19
- ## Usage
20
-
21
18
 
22
19
  ## Development
23
20
 
data/Rakefile CHANGED
@@ -1,2 +1 @@
1
- require "bundler/gem_tasks"
2
-
1
+ require 'bundler/gem_tasks'
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "bos_client"
3
+ require 'bundler/setup'
4
+ require 'bos_client'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "bos_client"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start
data/bos_client.gemspec CHANGED
@@ -4,25 +4,26 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'bos_client/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "bos_client"
7
+ spec.name = 'bos_client'
8
8
  spec.version = BosClient::VERSION
9
- spec.authors = ["Feng Ce"]
10
- spec.email = ["kalelfc@gmail.com"]
9
+ spec.authors = ['Feng Ce']
10
+ spec.email = ['kalelfc@gmail.com']
11
11
 
12
- spec.summary = "Baidu Object Storage Unofficial Ruby SDK"
13
- spec.description = "Library for accessing BOS objects and buckets through REST API"
14
- spec.homepage = "http://github.com/fcce/bos"
15
- spec.license = "MIT"
12
+ spec.summary = 'Baidu Object Storage Unofficial Ruby SDK'
13
+ spec.description = 'Library for accessing BOS objects and buckets through
14
+ REST API'
15
+ spec.homepage = 'http://github.com/fcce/bos'
16
+ spec.license = 'MIT'
16
17
 
17
18
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
- spec.require_paths = ["lib"]
20
+ spec.require_paths = ['lib']
20
21
 
21
- spec.required_ruby_version = ">= 2.0"
22
+ spec.required_ruby_version = '>= 2.0'
22
23
 
23
- spec.add_runtime_dependency "typhoeus", "~> 1.1"
24
- spec.add_development_dependency "bundler", "~> 1.6"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_development_dependency "rspec", "~> 3.0"
27
- spec.add_development_dependency "pry", "~> 0.1"
24
+ spec.add_runtime_dependency 'typhoeus', '~> 1.1'
25
+ spec.add_development_dependency 'bundler', '~> 1.6'
26
+ spec.add_development_dependency 'rake', '~> 10.0'
27
+ spec.add_development_dependency 'rspec', '~> 3.0'
28
+ spec.add_development_dependency 'pry', '~> 0.1'
28
29
  end
@@ -4,38 +4,34 @@ require 'typhoeus'
4
4
  require 'uri'
5
5
  module BosClient
6
6
  class Authable
7
-
8
- def self.authorize_request request
7
+ def self.authorize_request(request)
9
8
  default_headers = get_default_headers request
10
9
  request.options[:headers].merge! default_headers
11
10
  authorization = sign(request)
12
- request.options[:headers].merge!({"Authorization" => authorization})
11
+ request.options[:headers]['Authorization'] = authorization
13
12
  request
14
13
  end
15
14
 
16
- private
17
15
  class << self
18
- def get_canonical_time t = Time.now.to_i
19
- Time.at(t).utc.strftime("%FT%TZ")
16
+ def get_canonical_time(t = Time.now.to_i)
17
+ Time.at(t).utc.strftime('%FT%TZ')
20
18
  end
21
19
 
22
- def get_default_headers request
20
+ def get_default_headers(request)
23
21
  {
24
- "content-type" =>"text/plain",
25
- "x-bce-date" => get_canonical_time,
26
- "content-length" => (request.options[:body] || "").length
22
+ 'content-type' => 'text/plain',
23
+ 'x-bce-date' => get_canonical_time,
24
+ 'content-length' => (request.options[:body] || '').length
27
25
  }
28
- # todo PUT 方法计算的签名错误,content-length 的问题,暂时处理。
29
- # headers.merge!({"content-length" => 0}) if request.options[:method] == :put
30
26
  end
31
27
 
32
- def get_canonical_uri request
33
- uri = URI(request.base_url)
28
+ def get_canonical_uri(request)
29
+ uri = URI(request.base_url)
34
30
  url_path = URI.encode(uri.path)
35
31
  url_path == '' ? '/' : url_path
36
32
  end
37
33
 
38
- def get_canonical_query_string request
34
+ def get_canonical_query_string(request)
39
35
  params = request.options[:params]
40
36
  params = params.map do |k, v|
41
37
  "#{URI.encode(k.to_s)}=#{encode_slash(URI.encode(v.to_s))}"
@@ -43,10 +39,13 @@ module BosClient
43
39
  params
44
40
  end
45
41
 
46
- def get_canonical_headers request
47
- headers_to_sign_keys = ["host", "content-md5", "content-length", "content-type"]
42
+ def get_canonical_headers(request)
43
+ headers_to_sign_keys = ['host',
44
+ 'content-md5',
45
+ 'content-length',
46
+ 'content-type']
48
47
  headers_to_sign = []
49
- canonical_headers_downcase = request.options[:headers].each do |k, v|
48
+ request.options[:headers].each do |k, v|
50
49
  if headers_to_sign_keys.include?(k) || k.start_with?('x-bce')
51
50
  headers_to_sign << "#{encode(k.to_s.downcase)}:#{encode(v.to_s)}"
52
51
  end
@@ -54,21 +53,22 @@ module BosClient
54
53
  headers_to_sign.compact.sort.join("\n")
55
54
  end
56
55
 
57
- def get_http_method request
56
+ def get_http_method(request)
58
57
  (request.options[:method] || 'get').upcase
59
58
  end
60
59
 
61
- def encode string
60
+ def encode(string)
62
61
  URI.encode(string, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
63
62
  end
64
63
 
65
- def encode_slash str
66
- str.gsub(/\//,'%2F')
64
+ def encode_slash(str)
65
+ # str.gsub(/\//, '%2F')
66
+ str.gsub(%r{/}, '%2F')
67
67
  end
68
68
 
69
- def sign request
69
+ def sign(request)
70
70
  digest = OpenSSL::Digest.new('sha256')
71
- sign_key_prefix = "bce-auth-v1/#{BosClient.access_key_id}/#{get_canonical_time()}/#{BosClient.expiration_in_seconds}"
71
+ sign_key_prefix = "bce-auth-v1/#{BosClient.access_key_id}/#{get_canonical_time}/#{BosClient.expiration_in_seconds}"
72
72
  sign_key = OpenSSL::HMAC.hexdigest digest, BosClient.secret_access_key, sign_key_prefix
73
73
 
74
74
  http_method = get_http_method request
@@ -76,7 +76,10 @@ module BosClient
76
76
  canonical_uri = get_canonical_uri request
77
77
  canonical_query_string = get_canonical_query_string request
78
78
  canonical_headers = get_canonical_headers request
79
- string_to_sign = [http_method, canonical_uri, canonical_query_string, canonical_headers].join("\n")
79
+ string_to_sign = [http_method,
80
+ canonical_uri,
81
+ canonical_query_string,
82
+ canonical_headers].join("\n")
80
83
  sign_result = OpenSSL::HMAC.hexdigest digest, sign_key, string_to_sign
81
84
  "#{sign_key_prefix}//#{sign_result}"
82
85
  end
@@ -16,13 +16,11 @@ module BosClient
16
16
  response[:result]
17
17
  end
18
18
 
19
- #create bucket
20
- # 401
21
-
22
- # def save
23
- # request = BosClient::Request.new @bucket_host, method: :put, params:params
24
- # request.run
25
- # end
19
+ def save
20
+ request = BosClient::Request.new @bucket_host, method: :put
21
+ response = request.run
22
+ response[:result]
23
+ end
26
24
 
27
25
  def destory
28
26
  request = BosClient::Request.new @bucket_host, method: :delete
@@ -31,41 +29,42 @@ module BosClient
31
29
  end
32
30
 
33
31
  ## objects
34
- def objects options = {}
35
- response = list_objects options.merge({delimiter: '/'})
32
+ def objects(options = {})
33
+ response = list_objects options.merge(delimiter: '/')
36
34
  objs = response[:data][:contents]
37
- objs.map { |obj| BosClient::Object.new ({bucket:self}.merge(obj)) }
35
+ objs.map { |obj| BosClient::Object.new ({bucket: self}.merge(obj)) }
38
36
  end
39
37
 
40
- def dirs options = {}
38
+ def dirs(options = {})
41
39
  response = list_objects options
42
40
  data = response[:data][:contents]
43
- data = data.find_all{|e| is_dir?(e[:key]) }
41
+ data = data.find_all { |e| is_dir?(e[:key]) }
44
42
  data.map { |e| e[:key] }
45
43
  end
46
44
 
47
- def dir_objects prefix, options = {}
48
- response = list_objects options.merge({delimiter: '/',prefix:prefix})
45
+ def dir_objects(prefix, options = {})
46
+ response = list_objects options.merge(delimiter: '/', prefix: prefix)
49
47
  data = response[:data][:contents]
50
- objs = data.find_all{|e| !is_dir?(e[:key]) }
51
- objs.map { |obj| BosClient::Object.new ({bucket:self}.merge(obj)) }
48
+ objs = data.find_all { |e| !is_dir?(e[:key]) }
49
+ objs.map { |obj| BosClient::Object.new ({bucket: self}.merge(obj)) }
52
50
  end
53
51
 
54
52
  private
55
- def is_dir? name
53
+
54
+ def is_dir?(name)
56
55
  name.end_with?('/')
57
56
  end
58
57
 
59
- def list_objects options = {}
58
+ def list_objects(options = {})
60
59
  prefix = options.fetch(:prefix, nil)
61
60
  max_keys = options.fetch(:max_keys, 1000)
62
61
  marker = options.fetch(:marker, nil)
63
62
  delimiter = options.fetch(:delimiter, nil)
64
- params = {maxKeys: max_keys}
65
- params.merge!({prefix: prefix}) unless prefix.nil?
66
- params.merge!({marker: marker}) unless marker.nil?
67
- params.merge!({delimiter: delimiter}) unless delimiter.nil?
68
- request = BosClient::Request.new @bucket_host, method: :get, params:params
63
+ params = { maxKeys: max_keys }
64
+ params[:prefix] = prefix unless prefix.nil?
65
+ params[:marker] = marker unless marker.nil?
66
+ params[:delimiter] = delimiter unless delimiter.nil?
67
+ request = BosClient::Request.new @bucket_host, method: :get, params: params
69
68
  request.run
70
69
  end
71
70
  end
@@ -1,23 +1,20 @@
1
1
  # encoding: UTF-8
2
2
  module BosClient
3
-
4
- DEFAULTS = {
5
- scheme: 'http',
6
- url: 'bcebos.com',
7
- location: 'bj',
8
- expiration_in_seconds: 1800,
9
- access_key_id: '*****',
10
- secret_access_key: '*****'
11
- }
3
+ DEFAULTS = {
4
+ scheme: 'http',
5
+ url: 'bcebos.com',
6
+ location: 'bj',
7
+ expiration_in_seconds: 1800,
8
+ access_key_id: '*****',
9
+ secret_access_key: '*****'
10
+ }.freeze
12
11
 
13
12
  class << self
14
13
  def options
15
14
  @options ||= DEFAULTS.dup
16
15
  end
17
16
 
18
- def options=(opts)
19
- @options = opts
20
- end
17
+ attr_writer :options
21
18
 
22
19
  def configure
23
20
  yield self
@@ -26,17 +23,15 @@ module BosClient
26
23
  def host
27
24
  "#{options[:scheme]}://#{options[:location]}.#{options[:url]}"
28
25
  end
29
-
30
26
  end
31
27
 
32
- DEFAULTS.each do |k, v|
33
- self.define_singleton_method "#{k}=" do |value|
34
- self.options.merge!(k => value)
28
+ DEFAULTS.each do |k, _v|
29
+ define_singleton_method "#{k}=" do |value|
30
+ options.merge!(k => value)
35
31
  end
36
32
 
37
- self.define_singleton_method k do
38
- self.options[k]
33
+ define_singleton_method k do
34
+ options[k]
39
35
  end
40
36
  end
41
-
42
37
  end
@@ -2,17 +2,16 @@
2
2
  module BosClient
3
3
  class Error < StandardError
4
4
  class << self
5
-
6
- def bos_error name, message
7
- unless const_defined?(name)
8
- BosClient::Error.const_set(name.to_sym, Class.new(BosClient::Error)).new(message)
9
- else
5
+ def bos_error(name, message)
6
+ if const_defined?(name)
10
7
  eval "BosClient::Error::#{name}.new \"#{message}\""
8
+ else
9
+ BosClient::Error.const_set(name.to_sym, Class.new(BosClient::Error)).new(message)
11
10
  end
12
11
  end
13
12
 
14
13
  def const_missing(name)
15
- BosClient::Error.const_set(name.to_sym,Class.new(BosClient::Error))
14
+ BosClient::Error.const_set(name.to_sym, Class.new(BosClient::Error))
16
15
  end
17
16
  end
18
17
  end
@@ -1,8 +1,7 @@
1
1
  # encoding: UTF-8
2
2
  module BosClient
3
3
  module Helper
4
-
5
- def snake_hash_keys value
4
+ def snake_hash_keys(value)
6
5
  case value
7
6
  when Array
8
7
  value.map { |v| snake_hash_keys(v) }
@@ -29,10 +28,10 @@ module BosClient
29
28
 
30
29
  def underscore(string)
31
30
  string.gsub(/::/, '/')
32
- .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
33
- .gsub(/([a-z\d])([A-Z])/, '\1_\2')
34
- .tr('-', '_')
35
- .downcase
31
+ .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
32
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
33
+ .tr('-', '_')
34
+ .downcase
36
35
  end
37
36
  end
38
37
  end
@@ -7,71 +7,80 @@ module BosClient
7
7
  @bucket = options[:bucket]
8
8
  @size = options[:size]
9
9
  @file = options[:key]
10
- @path, @name = File.split(options[:key])
10
+ @path, @name = File.split(options[:key])
11
11
  @last_modified = options[:last_modified]
12
12
  @storage_class = options[:storage_class]
13
13
  end
14
14
 
15
-
16
15
  def save
17
16
  save_to nil
18
17
  end
19
18
 
20
- def save_as name
19
+ def save_as(name)
21
20
  save_to nil, name
22
21
  end
23
22
 
24
- def save_to path, name = nil
23
+ def save_to(path, name = nil)
25
24
  headers = {
26
- "host" => @bucket.bucket_host,
27
- }
25
+ 'host' => @bucket.bucket_host
26
+ }
28
27
 
29
28
  params = {}
30
29
  url = URI.encode("http://#{@bucket.bucket_host}/#{@file}")
31
- request = Typhoeus::Request.new(url, method: :get,headers:headers,params:params)
30
+ request = Typhoeus::Request.new url,
31
+ method: :get,
32
+ headers: headers,
33
+ params: params
32
34
  request = BosClient::Authable.authorize_request(request)
33
35
 
34
36
  request.on_complete do |response|
35
- if path
36
- flie = "#{path}/#{name || @name}"
37
- else
38
- flie = "#{name || @name}"
39
- end
37
+ flie = if path
38
+ "#{path}/#{name || @name}"
39
+ else
40
+ (name || @name).to_s
41
+ end
40
42
  write_file flie, response.body
41
43
  end
42
44
  request.run
43
45
  end
44
46
 
45
47
  def destory
46
- request = BosClient::Request.new "#{@bucket.bucket_host}/#{@file}", method: :delete
48
+ request = BosClient::Request.new "#{@bucket.bucket_host}/#{@file}",
49
+ method: :delete
47
50
  response = request.run
48
51
  response[:result]
49
52
  end
50
53
 
51
- def self.upload options = {}
54
+ def self.upload(options = {})
52
55
  bucket = options[:bucket]
53
56
  file = options[:file]
54
57
  origin_file_name = File.basename(file)
55
58
  filename = options[:filename] || origin_file_name
56
59
  path = options[:path] || ''
57
- storage_class = options[:storage_class] || "STANDARD"
60
+ storage_class = options[:storage_class] || 'STANDARD'
58
61
  headers = options[:headers] || {}
59
62
 
60
63
  params = {
61
- append: ""
64
+ append: ''
62
65
  }
63
- headers.merge!({"x-bce-storage-class" => storage_class})
64
- request = BosClient::Request.new "#{bucket.bucket_host}/#{File.join(path,filename)}?append", method: :post, params:params, headers: headers, body: File.open(file,"r").read
66
+ headers['x-bce-storage-class'] = storage_class
67
+
68
+ url = "#{bucket.bucket_host}/#{File.join(path, filename)}?append"
69
+ request = BosClient::Request.new url,
70
+ method: :post,
71
+ params: params,
72
+ headers: headers,
73
+ body: File.open(file, 'r').read
65
74
  response = request.run
66
75
  response[:result]
67
76
  end
68
77
 
69
78
  private
79
+
70
80
  def write_file(filename, data)
71
- file = File.new(filename, "wb")
81
+ file = File.new(filename, 'wb')
72
82
  file.write(data)
73
83
  file.close
74
84
  end
75
-
76
85
  end
77
86
  end
@@ -4,7 +4,7 @@ module BosClient
4
4
  include BosClient::Helper
5
5
  attr_accessor :uri, :options
6
6
 
7
- def initialize url , options={}
7
+ def initialize(url, options = {})
8
8
  @uri = URI(URI.encode(url))
9
9
  @options = options
10
10
  end
@@ -20,8 +20,9 @@ module BosClient
20
20
  end
21
21
 
22
22
  private
23
+
23
24
  def format_request
24
- headers = { "host" => @uri.host }
25
+ headers = { 'host' => @uri.host }
25
26
 
26
27
  if @options[:headers].nil?
27
28
  @options[:headers] = headers
@@ -29,65 +30,59 @@ module BosClient
29
30
  @options[:headers].merge! headers
30
31
  end
31
32
 
32
- if @options[:params].nil?
33
- @options[:params] = {}
34
- end
33
+ @options[:params] = {} if @options[:params].nil?
35
34
 
36
35
  request = Typhoeus::Request.new @uri.to_s, @options
37
36
  BosClient::Authable.authorize_request request
38
37
  end
39
38
 
40
- def resolve_response response
39
+ def resolve_response(response)
41
40
  if response.success?
42
41
  ret = resolve_bos_resault response
43
- return snake_hash_keys(ret)
42
+ snake_hash_keys(ret)
44
43
  elsif response.timed_out?
45
- raise BosClient::Error::TimeOut.new "got a time out"
44
+ raise BosClient::Error::TimeOut, 'got a time out'
46
45
  elsif response.code == 0
47
- raise BosClient::Error::HttpError.new response.return_message
46
+ raise BosClient::Error::HttpError, response.return_message
48
47
  else
49
48
  ret = resolve_bos_resault response
50
49
  if ret[:data][:code]
51
- raise BosClient::Error.bos_error ret[:data][:code], ret[:data][:message]
50
+ raise BosClient::Error.bos_error ret[:data][:code], ret[:data][:message]
52
51
  else
53
- raise BosClient::Error::HttpError.new "HTTP request failed: #{response.code.to_s}"
52
+ raise BosClient::Error::HttpError, "HTTP request failed: #{response.code}"
54
53
  end
55
54
  end
56
55
  end
57
56
 
58
- def resolve_bos_resault r
59
- begin
60
- if r.body.size > 0
61
- ret = JSON.parse r.body,{:symbolize_names => true}
62
- else
63
- ret = {}
64
- end
57
+ def resolve_bos_resault(r)
58
+ ret = if !r.body.empty?
59
+ JSON.parse r.body, symbolize_names: true
60
+ else
61
+ {}
62
+ end
65
63
 
66
- result = {
67
- result: true,
68
- status: r.code,
69
- ts: Time.now.to_i,
70
- version: 1.0,
71
- data: ret
72
- }
73
- rescue Exception => e
74
- raise BosClient::Error::JSONError.new e.message
75
- end
64
+ {
65
+ result: true,
66
+ status: r.code,
67
+ ts: Time.now.to_i,
68
+ version: 1.0,
69
+ data: ret
70
+ }
71
+ rescue StandardError => e
72
+ raise BosClient::Error::JSONError, e.message
76
73
  end
77
74
 
78
- def resolve_response_headers r
79
- begin
80
- ret = JSON.parse r.headers,{:symbolize_names => true}
81
- result = {
82
- result: true,
83
- status: r.code,
84
- ts: Time.now.to_i,
85
- version: 1.0,
86
- data: ret
87
- }
88
- rescue Exception => e
89
- raise BosClient::Error::JSONError.new e.message
90
- end
75
+ def resolve_response_headers(r)
76
+ ret = JSON.parse r.headers, symbolize_names: true
77
+ {
78
+ result: true,
79
+ status: r.code,
80
+ ts: Time.now.to_i,
81
+ version: 1.0,
82
+ data: ret
83
+ }
84
+ rescue StandardError => e
85
+ raise BosClient::Error::JSONError, e.message
91
86
  end
92
87
  end
93
88
  end
@@ -1,7 +1,6 @@
1
1
  # encoding: UTF-8
2
2
  module BosClient
3
3
  class << self
4
-
5
4
  def buckets
6
5
  list_buckets unless @result
7
6
  @result[:buckets].map { |bk| Bucket.new bk }
@@ -13,6 +12,7 @@ module BosClient
13
12
  end
14
13
 
15
14
  private
15
+
16
16
  def list_buckets
17
17
  url = host.to_s
18
18
  request = BosClient::Request.new url, method: :get
@@ -1,3 +1,3 @@
1
1
  module BosClient
2
- VERSION = "0.1.0"
2
+ VERSION = '0.1.1'.freeze
3
3
  end
data/lib/bos_client.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  # encoding: UTF-8
2
2
  require 'json'
3
3
  require 'uri'
4
- require "bos_client/version"
5
- require "bos_client/config"
4
+ require 'bos_client/version'
5
+ require 'bos_client/config'
6
6
  require 'bos_client/auth'
7
7
  require 'bos_client/helper'
8
8
  require 'bos_client/service'
@@ -11,5 +11,4 @@ require 'bos_client/request'
11
11
  require 'bos_client/bucket'
12
12
  require 'bos_client/object'
13
13
  module BosClient
14
-
15
14
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bos_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Feng Ce
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-15 00:00:00.000000000 Z
11
+ date: 2017-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus
@@ -80,7 +80,9 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.1'
83
- description: Library for accessing BOS objects and buckets through REST API
83
+ description: |-
84
+ Library for accessing BOS objects and buckets through
85
+ REST API
84
86
  email:
85
87
  - kalelfc@gmail.com
86
88
  executables: []
@@ -90,6 +92,7 @@ files:
90
92
  - ".gitignore"
91
93
  - ".rspec"
92
94
  - ".travis.yml"
95
+ - CHANGELOG
93
96
  - CODE_OF_CONDUCT.md
94
97
  - Gemfile
95
98
  - LICENSE.txt
@@ -128,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
131
  version: '0'
129
132
  requirements: []
130
133
  rubyforge_project:
131
- rubygems_version: 2.2.2
134
+ rubygems_version: 2.6.10
132
135
  signing_key:
133
136
  specification_version: 4
134
137
  summary: Baidu Object Storage Unofficial Ruby SDK