bazil_client 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog.md +8 -0
- data/Gemfile +1 -1
- data/VERSION +1 -1
- data/lib/bazil/client.rb +43 -2
- metadata +3 -3
data/ChangeLog.md
CHANGED
data/Gemfile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.1
|
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
|
16
|
+
attr_reader :host, :port, :scheme, :ca_file, :ssl_version, :verify_mode, :api_key, :secret_key
|
17
17
|
|
18
18
|
def initialize(options)
|
19
19
|
if options.kind_of? String
|
@@ -21,29 +21,58 @@ module Bazil
|
|
21
21
|
end
|
22
22
|
options = symbolize_keys(options)
|
23
23
|
|
24
|
+
load_url_option(options)
|
25
|
+
load_ca_file_option(options)
|
26
|
+
load_ssl_version_option(options)
|
27
|
+
load_verify_option(options)
|
28
|
+
load_api_keys_option(options)
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def load_url_option(options)
|
24
34
|
url = URI::parse(options[URL_KEY] || DEFAULT_URL)
|
25
35
|
@host = url.host or raise "Failed to obtain host name from given url: url = #{url.to_s}"
|
26
36
|
@port = url.port or raise "Failed to obtain port number from given url: url = #{url.to_s}"
|
27
37
|
@scheme = url.scheme or raise "Failed to obtain scheme from given url: url = #{url.to_s}"
|
28
38
|
raise "Unsupported scheme '#{@scheme}'" unless AVAILABLE_SCHEMA.include? @scheme
|
39
|
+
end
|
29
40
|
|
41
|
+
def load_ca_file_option(options)
|
30
42
|
@ca_file = options[CA_FILE_KEY] || DEFAULT_CA_FILE
|
31
43
|
if @ca_file
|
32
44
|
raise "ca_file option must be string value" unless @ca_file.is_a? String
|
33
45
|
raise "ca_file option must be absolute path" unless @ca_file[0] == '/'
|
34
46
|
raise "ca_file '#{@ca_file}' doesn't exist" unless File::exists? @ca_file
|
35
47
|
end
|
48
|
+
end
|
36
49
|
|
50
|
+
def load_ssl_version_option(options)
|
37
51
|
ssl_version = options[SSL_VERSION_KEY] || DEFAULT_SSL_VERSION
|
38
52
|
raise "Unsupported SSL version '#{ssl_version}'" unless AVAILABLE_SSL_VERSIONS.has_key? ssl_version
|
39
53
|
@ssl_version = AVAILABLE_SSL_VERSIONS[ssl_version]
|
54
|
+
end
|
40
55
|
|
56
|
+
def load_verify_option(options)
|
41
57
|
skip_verify = options[SKIP_VERIFY_KEY] || DEFAULT_SKIP_VERIFY
|
42
58
|
raise "skip_verify option must be boolean value" unless skip_verify.is_a?(TrueClass) || skip_verify.is_a?(FalseClass)
|
43
59
|
@verify_mode = skip_verify ? OpenSSL::SSL::VERIFY_NONE : OpenSSL::SSL::VERIFY_PEER
|
44
60
|
end
|
45
61
|
|
46
|
-
|
62
|
+
def load_api_keys_option(options)
|
63
|
+
api_keys_file = options[API_KEYS_FILE_KEY] || DEFAULT_API_KEYS_FILES.find{|file|
|
64
|
+
File::readable?(file) && File::file?(file)
|
65
|
+
}
|
66
|
+
raise "API keys file is not found" if api_keys_file.nil?
|
67
|
+
|
68
|
+
api_keys = symbolize_keys(JSON::parse(File::read(api_keys_file)))
|
69
|
+
@api_key = api_keys[API_KEYS_API_KEY_KEY]
|
70
|
+
@secret_key = api_keys[API_KEYS_SECRET_KEY_KEY]
|
71
|
+
rescue SystemCallError, RuntimeError => e
|
72
|
+
STDERR.puts ""
|
73
|
+
STDERR.puts "WARNING: Failed to read api_keys file. Check your api_keys file, or set api_keys manually by set_api_keys(API_KEY, SECRET_KEY): ERROR = #{e.to_s}"
|
74
|
+
STDERR.puts ""
|
75
|
+
end
|
47
76
|
|
48
77
|
def symbolize_keys(hash)
|
49
78
|
{}.tap{|new_hash|
|
@@ -66,6 +95,16 @@ module Bazil
|
|
66
95
|
|
67
96
|
SKIP_VERIFY_KEY = :skip_verify
|
68
97
|
DEFAULT_SKIP_VERIFY = false
|
98
|
+
|
99
|
+
BAZIL_CONFIG_DIRS = [
|
100
|
+
File::join(ENV['PWD'], '.bazil'),
|
101
|
+
File::join(ENV['HOME'], '.bazil')
|
102
|
+
]
|
103
|
+
|
104
|
+
API_KEYS_FILE_KEY = :api_keys
|
105
|
+
DEFAULT_API_KEYS_FILES = BAZIL_CONFIG_DIRS.map{|dir| File::join(dir, 'api_keys') }
|
106
|
+
API_KEYS_API_KEY_KEY = :api_key
|
107
|
+
API_KEYS_SECRET_KEY_KEY = :secret_key
|
69
108
|
end
|
70
109
|
|
71
110
|
def set_ssl_options(http, options)
|
@@ -79,7 +118,9 @@ module Bazil
|
|
79
118
|
opt = Options.new(options)
|
80
119
|
http = Net::HTTP.new(opt.host, opt.port)
|
81
120
|
set_ssl_options(http,opt)
|
121
|
+
|
82
122
|
@http_cli = REST.new(http)
|
123
|
+
set_api_keys(opt.api_key, opt.secret_key)
|
83
124
|
end
|
84
125
|
|
85
126
|
def_delegators :@http_cli, :read_timeout, :read_timeout=, :set_api_keys
|
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.
|
4
|
+
version: 1.0.1
|
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-02-
|
12
|
+
date: 2013-02-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -102,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
102
|
version: '0'
|
103
103
|
segments:
|
104
104
|
- 0
|
105
|
-
hash: -
|
105
|
+
hash: -2294157025898643807
|
106
106
|
requirements: []
|
107
107
|
rubyforge_project:
|
108
108
|
rubygems_version: 1.8.23
|