bazil_client 1.0.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## Version 2.0.0 (2014-10-10) ##
2
+
3
+ Feature
4
+
5
+ - Support api path
6
+
1
7
  ## Version 1.0.2 (2013-04-22) ##
2
8
 
3
9
  Feature
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.2
1
+ 2.0.0
data/lib/bazil/client.rb CHANGED
@@ -13,7 +13,7 @@ module Bazil
13
13
  extend Forwardable
14
14
 
15
15
  class Options
16
- attr_reader :host, :port, :scheme, :ca_file, :ssl_version, :verify_mode, :api_key, :secret_key
16
+ attr_reader :host, :port, :scheme, :api_root, :ca_file, :ssl_version, :verify_mode, :api_key, :secret_key
17
17
 
18
18
  def initialize(options)
19
19
  if options.kind_of? String
@@ -36,6 +36,8 @@ module Bazil
36
36
  @port = url.port or raise "Failed to obtain port number from given url: url = #{url.to_s}"
37
37
  @scheme = url.scheme or raise "Failed to obtain scheme from given url: url = #{url.to_s}"
38
38
  raise "Unsupported scheme '#{@scheme}'" unless AVAILABLE_SCHEMA.include? @scheme
39
+ @api_root = url.path
40
+ @api_root += '/' unless @api_root.end_with? '/'
39
41
  end
40
42
 
41
43
  def load_ca_file_option(options)
@@ -97,9 +99,9 @@ module Bazil
97
99
  DEFAULT_SKIP_VERIFY = false
98
100
 
99
101
  BAZIL_CONFIG_DIRS = [
100
- File::join(ENV['PWD'], '.bazil'),
101
- File::join(ENV['HOME'], '.bazil')
102
- ]
102
+ (File::join(ENV['PWD'], '.bazil') if ENV['PWD']),
103
+ (File::join(ENV['HOME'], '.bazil') if ENV['HOME']),
104
+ ].compact
103
105
 
104
106
  API_KEYS_FILE_KEY = :api_keys
105
107
  DEFAULT_API_KEYS_FILES = BAZIL_CONFIG_DIRS.map{|dir| File::join(dir, 'api_keys') }
@@ -119,7 +121,7 @@ module Bazil
119
121
  http = Net::HTTP.new(opt.host, opt.port)
120
122
  set_ssl_options(http,opt)
121
123
 
122
- @http_cli = REST.new(http)
124
+ @http_cli = REST.new(http, api_root: opt.api_root)
123
125
  set_api_keys(opt.api_key, opt.secret_key)
124
126
  end
125
127
 
data/lib/bazil/rest.rb CHANGED
@@ -5,13 +5,16 @@ require 'json'
5
5
  require 'time'
6
6
  require 'net/http'
7
7
  require 'digest/md5'
8
+ require 'pathname'
8
9
 
9
10
  module Bazil
10
11
  class REST
11
12
  extend Forwardable
12
13
 
13
- def initialize(http)
14
+ def initialize(http, options = {})
14
15
  @http = http
16
+ @api_root = options[:api_root] || '/'
17
+ @api_root += '/' unless @api_root.end_with? '/'
15
18
  end
16
19
 
17
20
  def_delegators :@http, :read_timeout, :read_timeout=
@@ -23,6 +26,7 @@ module Bazil
23
26
  end
24
27
 
25
28
  def get(uri)
29
+ uri = gen_path(uri)
26
30
  uri, header = add_api_signature(uri, nil)
27
31
  @http.get(uri, header)
28
32
  rescue Errno::ECONNREFUSED => e
@@ -30,6 +34,7 @@ module Bazil
30
34
  end
31
35
 
32
36
  def put(uri, data, header = {})
37
+ uri = gen_path(uri)
33
38
  uri, header = add_api_signature(uri, data, header)
34
39
  @http.put(uri, data, header)
35
40
  rescue Errno::ECONNREFUSED => e
@@ -37,6 +42,7 @@ module Bazil
37
42
  end
38
43
 
39
44
  def post(uri, data, header = {})
45
+ uri = gen_path(uri)
40
46
  uri, header = add_api_signature(uri, data, header)
41
47
  @http.post(uri, data, header)
42
48
  rescue Errno::ECONNREFUSED => e
@@ -44,6 +50,7 @@ module Bazil
44
50
  end
45
51
 
46
52
  def delete(uri)
53
+ uri = gen_path(uri)
47
54
  uri, header = add_api_signature(uri, nil)
48
55
  @http.delete(uri, header)
49
56
  rescue Errno::ECONNREFUSED => e
@@ -51,6 +58,11 @@ module Bazil
51
58
  end
52
59
 
53
60
  private
61
+ def gen_path(path)
62
+ # Pathname#+ cannot append absolute path, so use String#+ then canonicalize it
63
+ Pathname.new(@api_root + path).cleanpath.to_s
64
+ end
65
+
54
66
  def add_api_signature(uri, data, header = {})
55
67
  return uri, header unless @api_key and @secret_key
56
68
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bazil_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 2.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-22 00:00:00.000000000 Z
12
+ date: 2014-10-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -102,10 +102,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
102
  version: '0'
103
103
  segments:
104
104
  - 0
105
- hash: -441761299674887890
105
+ hash: 2357737480406686873
106
106
  requirements: []
107
107
  rubyforge_project:
108
- rubygems_version: 1.8.23
108
+ rubygems_version: 1.8.23.2
109
109
  signing_key:
110
110
  specification_version: 3
111
111
  summary: Ruby client of Bazil