growthforecast-client 0.62.4 → 0.80.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5672c5c83ce2b178ace118ac1e6f291346681f41
4
- data.tar.gz: 70a5147e382bb3cef90197db057be8ce9d9ede99
3
+ metadata.gz: a8658e5aaffe4bcef2988147166e8bdce538900b
4
+ data.tar.gz: fc1807ea534cbf097507bcbbd30fc4f04e8090ee
5
5
  SHA512:
6
- metadata.gz: 1f4245db2673db3389d1b99d8ce23dba339fc8979ca56ec6a5493cb2d5bd27f1c041d2e93370b2c78f1674d9973caf9e74177e5e686448674daa844aa3f615dc
7
- data.tar.gz: c51644b5a8782c676719e0920c96e858630a116324701b23d5852472c2a9ac4f9d456b0aabdca0f82ba03889abe46e789bec00a35ece9411bff1fc4b1b3f5d86
6
+ metadata.gz: 2878c8404112b4c25fc7b2994293ee4c1a699098d85c917ee463b67461a8352c754ecb32f4795a50402798eb8da0f50a9ec0894e81e129e5c5acf300f417cf19
7
+ data.tar.gz: db196f7c978c7854a239bacfe5785297a4011797bec0aa5ba48898e85128ff8217cc162f2f389ef601fdf1b526d8736795847aa912ee6e6d8bb66cb9bd23335b
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ # 0.80.0 (2014/02/03)
2
+
3
+ Changes:
4
+
5
+ - Use `net/http` instead of `httpclient` because we met difficulties in multi-thread environments
6
+
1
7
  # 0.62.4 (2014/02/01)
2
8
 
3
9
  Features:
data/README.md CHANGED
@@ -46,4 +46,4 @@ $ growthforecast-client help
46
46
 
47
47
  ## Copyright
48
48
 
49
- Copyright (c) 2013 Naotoshi SEO. See [LICENSE](LICENSE) for details.
49
+ Copyright (c) 2013 Naotoshi Seo. See [LICENSE](LICENSE) for details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.62.4
1
+ 0.80.0
@@ -9,6 +9,7 @@ Gem::Specification.new do |gem|
9
9
  gem.homepage = "https://github.com/sonots/growthforecast-client"
10
10
  gem.summary = "A Ruby Client Library for GrowthForecast API"
11
11
  gem.description = gem.summary
12
+ gem.licenses = ["MIT"]
12
13
 
13
14
  gem.files = `git ls-files`.split($\)
14
15
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -25,5 +26,5 @@ Gem::Specification.new do |gem|
25
26
 
26
27
  # for debug
27
28
  gem.add_development_dependency "pry"
28
- gem.add_development_dependency "tapp"
29
+ gem.add_development_dependency "pry-nav"
29
30
  end
@@ -1,8 +1,8 @@
1
1
  # -*- encoding: utf-8 -*-
2
- require 'httpclient'
2
+ require 'net/http'
3
+ require 'uri'
3
4
  require 'json'
4
5
  require 'cgi'
5
- require 'pp'
6
6
 
7
7
  module GrowthForecast
8
8
  class Error < StandardError; end
@@ -10,124 +10,45 @@ module GrowthForecast
10
10
  class AlreadyExists < Error; end
11
11
 
12
12
  class Client
13
- attr_accessor :debug
14
13
  attr_accessor :client
15
14
  attr_reader :base_uri
16
- attr_accessor :keepalive
15
+ attr_reader :debug_dev
16
+ attr_reader :open_timeout
17
+ attr_reader :read_timeout
18
+ attr_reader :keepalive
17
19
 
18
20
  # @param [String] base_uri The base uri of GrowthForecast
19
21
  def initialize(base_uri = 'http://127.0.0.1:5125', opts = {})
20
- @client = HTTPClient.new
21
22
  @base_uri = base_uri
23
+ URI.parse(base_uri).tap {|uri|
24
+ @client = Net::HTTP.new(uri.host, uri.port)
25
+ @client.use_ssl = uri.scheme == 'https'
26
+ }
27
+
22
28
  opts = stringify_keys(opts)
23
- @keepalive = opts.delete('keepalive') # bool
24
- self.debug_dev = opts.delete('debug_dev') # IO object such as STDOUT
25
- # cf. https://github.com/nahi/httpclient/blob/0a16401e7892fbbd195a0254344bd48ac8a8bb26/lib/httpclient/session.rb#L133-L139
26
- # self.connect_timeout = 60
27
- # self.connect_retry = 1
28
- # self.send_timeout = 120
29
- # self.receive_timeout = 60 # For each read_block_size bytes
30
- # self.keep_alive_timeout = 15 # '15' is from Apache 2 default
31
- # self.read_block_size = 1024 * 16 # follows net/http change in 1.8.7
32
- # self.protocol_retry_count = 5
29
+ self.debug_dev = opts['debug_dev'] # IO object such as STDOUT
30
+ self.open_timeout = opts['open_timeout'] || 5
31
+ self.read_timeout = opts['read_timeout'] || 30
32
+ self.keepalive = opts['keepalive']
33
+ # self.verify_mode = OpenSSL::SSL::VERIFY_NONE
33
34
  end
34
35
 
35
- def stringify_keys(hash)
36
- {}.tap {|h| hash.each {|key, val| h[key.to_s] = val } }
36
+ def debug_dev=(debug_dev)
37
+ @debug_dev = debug_dev
38
+ @client.set_debug_output(debug_dev)
37
39
  end
38
40
 
39
- class << self
40
- def attr_proxy_reader(symbol)
41
- attr_proxy(symbol)
42
- end
43
-
44
- def attr_proxy_accessor(symbol)
45
- attr_proxy(symbol, true)
46
- end
47
-
48
- def attr_proxy(symbol, assignable = false)
49
- name = symbol.to_s
50
- define_method(name) {
51
- @client.__send__(name)
52
- }
53
- if assignable
54
- aname = name + '='
55
- define_method(aname) { |rhs|
56
- @client.__send__(aname, rhs)
57
- }
58
- end
59
- end
41
+ def open_timeout=(open_timeout)
42
+ @open_time = @client.open_timeout = open_timeout
60
43
  end
61
44
 
62
- # cf. https://github.com/nahi/httpclient/blob/0a16401e7892fbbd195a0254344bd48ac8a8bb26/lib/httpclient.rb#L309-L355
63
- # cf. https://github.com/nahi/httpclient/blob/0a16401e7892fbbd195a0254344bd48ac8a8bb26/lib/httpclient/session.rb#L89-L158
64
- # proxy::SSLConfig:: SSL configurator.
65
- attr_proxy_reader :ssl_config
66
- # WebAgent::CookieManager:: Cookies configurator.
67
- attr_proxy_accessor :cookie_manager
68
- # An array of response HTTP message body String which is used for loop-back
69
- # test. See test/* to see how to use it. If you want to do loop-back test
70
- # of HTTP header, use test_loopback_http_response instead.
71
- attr_proxy_reader :test_loopback_response
72
- # An array of request filter which can trap HTTP request/response.
73
- # See proxy::WWWAuth to see how to use it.
74
- attr_proxy_reader :request_filter
75
- # proxy::ProxyAuth:: Proxy authentication handler.
76
- attr_proxy_reader :proxy_auth
77
- # proxy::WWWAuth:: WWW authentication handler.
78
- attr_proxy_reader :www_auth
79
- # How many times get_content and post_content follows HTTP redirect.
80
- # 10 by default.
81
- attr_proxy_accessor :follow_redirect_count
82
-
83
- # Set HTTP version as a String:: 'HTTP/1.0' or 'HTTP/1.1'
84
- attr_proxy(:protocol_version, true)
85
- # Connect timeout in sec.
86
- attr_proxy(:connect_timeout, true)
87
- # Request sending timeout in sec.
88
- attr_proxy(:send_timeout, true)
89
- # Response receiving timeout in sec.
90
- attr_proxy(:receive_timeout, true)
91
- # Reuse the same connection within this timeout in sec. from last used.
92
- attr_proxy(:keep_alive_timeout, true)
93
- # Size of reading block for non-chunked response.
94
- attr_proxy(:read_block_size, true)
95
- # Negotiation retry count for authentication. 5 by default.
96
- attr_proxy(:protocol_retry_count, true)
97
- # if your ruby is older than 2005-09-06, do not set socket_sync = false to
98
- # avoid an SSL socket blocking bug in openssl/buffering.rb.
99
- attr_proxy(:socket_sync, true)
100
- # User-Agent header in HTTP request.
101
- attr_proxy(:agent_name, true)
102
- # From header in HTTP request.
103
- attr_proxy(:from, true)
104
- # An array of response HTTP String (not a HTTP message body) which is used
105
- # for loopback test. See test/* to see how to use it.
106
- attr_proxy(:test_loopback_http_response)
107
- # Decompress a compressed (with gzip or deflate) content body transparently. false by default.
108
- attr_proxy(:transparent_gzip_decompression, true)
109
- # Local socket address. Set HTTPClient#socket_local.host and HTTPClient#socket_local.port to specify local binding hostname and port of TCP socket.
110
- attr_proxy(:socket_local, true)
111
-
112
- # cf. https://github.com/nahi/httpclient/blob/0a16401e7892fbbd195a0254344bd48ac8a8bb26/lib/httpclient.rb#L416-L569
113
- attr_proxy_accessor :debug_dev
114
- attr_proxy_accessor :proxy
115
- attr_proxy_accessor :no_proxy
116
- def set_auth(domain, user, passwd)
117
- @client.set_auth(domain, user, passwd)
118
- end
119
- def set_basic_auth(domain, user, passwd)
120
- @client.set_basic_auth(domain, user, passwd)
45
+ def read_timeout=(read_timeout)
46
+ @read_timeout = @client.read_timeout = read_timeout
121
47
  end
122
- def set_proxy_auth(user, passwd)
123
- @client.set_proxy_auth(user, passwd)
124
- end
125
- def set_cookie_store(filename)
126
- @client.set_cookie_store(filename)
48
+
49
+ def keepalive=(keepalive)
50
+ @keepalive = keepalive
127
51
  end
128
- attr_proxy_reader :save_cookie_store
129
- attr_proxy_reader :cookies
130
- attr_proxy_accessor :redirect_uri_callback
131
52
 
132
53
  def last_request_uri
133
54
  @request_uri
@@ -142,9 +63,8 @@ module GrowthForecast
142
63
  # @return [Hash] response body
143
64
  def get_json(path)
144
65
  @request_uri = "#{@base_uri}#{path}"
145
- query = nil
146
66
  extheader = @keepalive ? { 'Connection' => 'Keep-Alive' } : {}
147
- @res = client.get(@request_uri, query, extheader)
67
+ @res = client.get(path, extheader)
148
68
  handle_error(@res)
149
69
  JSON.parse(@res.body)
150
70
  end
@@ -154,11 +74,11 @@ module GrowthForecast
154
74
  # @param [Hash] data
155
75
  # @return [Hash] response body
156
76
  def post_json(path, data = {})
157
- pp data if @debug
158
77
  @request_uri = "#{@base_uri}#{path}"
159
78
  json = JSON.generate(data)
160
79
  extheader = @keepalive ? { 'Connection' => 'Keep-Alive' } : {}
161
- @res = client.post(@request_uri, json, extheader)
80
+ extheader = extheader.merge({ 'Content-Type' => 'application/json' })
81
+ @res = client.post(path, json, extheader)
162
82
  handle_error(@res)
163
83
  JSON.parse(@res.body)
164
84
  end
@@ -168,10 +88,11 @@ module GrowthForecast
168
88
  # @param [Hash] data
169
89
  # @return [String] response body
170
90
  def post_query(path, data = {})
171
- pp data if @debug
172
91
  @request_uri = "#{@base_uri}#{path}"
92
+ form = URI.encode_www_form(data)
173
93
  extheader = @keepalive ? { 'Connection' => 'Keep-Alive' } : {}
174
- @res = client.post(@request_uri, data, extheader)
94
+ extheader = extheader.merge({ 'Content-Type' => 'application/x-www-form-urlencoded' })
95
+ @res = client.post(path, form, extheader)
175
96
  handle_error(@res)
176
97
  JSON.parse(@res.body)
177
98
  end
@@ -488,11 +409,11 @@ module GrowthForecast
488
409
  end
489
410
 
490
411
  def handle_error(res)
491
- case res.status
492
- when 200
493
- when 404
412
+ case res.code
413
+ when '200'
414
+ when '404'
494
415
  raise NotFound.new(error_message(res))
495
- when 409
416
+ when '409'
496
417
  raise AlreadyExists.new(error_message(res))
497
418
  else
498
419
  raise Error.new(error_message(res))
@@ -517,6 +438,10 @@ module GrowthForecast
517
438
  updates['meta'] = '' if !params.has_key?('meta')
518
439
  updates
519
440
  end
441
+
442
+ def stringify_keys(hash)
443
+ {}.tap {|h| hash.each {|key, val| h[key.to_s] = val } }
444
+ end
520
445
  end
521
446
  end
522
447
 
@@ -162,7 +162,7 @@ describe GrowthForecast::Client do
162
162
  include_context "stub_list_graph" if ENV['MOCK'] == 'on'
163
163
  before { @client.list_graph }
164
164
  subject { @client.last_response }
165
- it { should be_kind_of HTTP::Message }
165
+ it { should be_kind_of Net::HTTPResponse }
166
166
  end
167
167
 
168
168
  context "#last_request_uri" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: growthforecast-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.62.4
4
+ version: 0.80.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Naotoshi Seo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-31 00:00:00.000000000 Z
11
+ date: 2014-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: tapp
98
+ name: pry-nav
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - '>='
@@ -139,7 +139,8 @@ files:
139
139
  - spec/support/mock.rb
140
140
  - spec/support/setup.rb
141
141
  homepage: https://github.com/sonots/growthforecast-client
142
- licenses: []
142
+ licenses:
143
+ - MIT
143
144
  metadata: {}
144
145
  post_install_message:
145
146
  rdoc_options: []