growthforecast-client 0.62.3 → 0.62.4

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: 2aa8e954466d6a600a54404856ea29e0acf5a1cb
4
- data.tar.gz: 613aef8e40914d64cac2dfba25734435dea1d6d3
3
+ metadata.gz: 5672c5c83ce2b178ace118ac1e6f291346681f41
4
+ data.tar.gz: 70a5147e382bb3cef90197db057be8ce9d9ede99
5
5
  SHA512:
6
- metadata.gz: 0c1a97d6d60df53dcae6e2d34954d985799295269148fdc6d8da5e1cc37c6756989741477c41b1b6ef4d2c8b1c9f295d6478f64e9cbe651c5f04e997b860c76e
7
- data.tar.gz: 36bfaf46fc2fe603f4df520cd1d5b7aee52792212be118c9cd63e48215b9509b3df9e3fa0c9cb997097faabbb7903d86879c17608486fd171b00218f4372495a
6
+ metadata.gz: 1f4245db2673db3389d1b99d8ce23dba339fc8979ca56ec6a5493cb2d5bd27f1c041d2e93370b2c78f1674d9973caf9e74177e5e686448674daa844aa3f615dc
7
+ data.tar.gz: c51644b5a8782c676719e0920c96e858630a116324701b23d5852472c2a9ac4f9d456b0aabdca0f82ba03889abe46e789bec00a35ece9411bff1fc4b1b3f5d86
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # 0.62.4 (2014/02/01)
2
+
3
+ Features:
4
+
5
+ - Add `keepalive` option
6
+ - Proxy httpclient parameters
7
+
1
8
  # 0.62.3 (2013/09/20)
2
9
 
3
10
  Features:
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # GrowthForecast Client [![Build Status](https://secure.travis-ci.org/sonots/growthforecast-client.png?branch=master)](http://travis-ci.org/sonots/growthforecast-client) [![Dependency Status](https://gemnasium.com/sonots/growthforecast-client.png)](https://gemnasium.com/sonots/growthforecast-client)
1
+ # GrowthForecast Client [![Build Status](https://secure.travis-ci.org/sonots/growthforecast-client.png?branch=master)](http://travis-ci.org/sonots/growthforecast-client)
2
2
 
3
3
  testing ruby: 1.9.2, 1.9.3, 2.0.0; GrowthForecast: >= 0.62 (Jun 27, 2013 released)
4
4
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.62.3
1
+ 0.62.4
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
  # -*- encoding: utf-8 -*-
3
3
 
4
- require 'growthforecast-client'
4
+ require_relative '../lib/growthforecast-client'
5
5
  GrowthForecast::CLI.start(ARGV)
@@ -1,2 +1,2 @@
1
- require 'growthforecast/client'
2
- require 'growthforecast/cli'
1
+ require_relative 'growthforecast/client'
2
+ require_relative 'growthforecast/cli'
@@ -12,22 +12,125 @@ module GrowthForecast
12
12
  class Client
13
13
  attr_accessor :debug
14
14
  attr_accessor :client
15
- attr_reader :debug_dev
16
15
  attr_reader :base_uri
16
+ attr_accessor :keepalive
17
17
 
18
18
  # @param [String] base_uri The base uri of GrowthForecast
19
- def initialize(base_uri = 'http://127.0.0.1:5125')
19
+ def initialize(base_uri = 'http://127.0.0.1:5125', opts = {})
20
+ @client = HTTPClient.new
20
21
  @base_uri = base_uri
22
+ 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
21
33
  end
22
34
 
23
- def client
24
- @client ||= HTTPClient.new
35
+ def stringify_keys(hash)
36
+ {}.tap {|h| hash.each {|key, val| h[key.to_s] = val } }
25
37
  end
26
38
 
27
- # set the `debug_dev` attribute of HTTPClient
28
- # @param [IO] debug_dev such as STDOUT
29
- def debug_dev=(debug_dev)
30
- client.debug_dev = debug_dev
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
60
+ end
61
+
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)
121
+ 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)
127
+ end
128
+ attr_proxy_reader :save_cookie_store
129
+ attr_proxy_reader :cookies
130
+ attr_proxy_accessor :redirect_uri_callback
131
+
132
+ def last_request_uri
133
+ @request_uri
31
134
  end
32
135
 
33
136
  def last_response
@@ -38,7 +141,10 @@ module GrowthForecast
38
141
  # @param [String] path
39
142
  # @return [Hash] response body
40
143
  def get_json(path)
41
- @res = client.get("#{@base_uri}#{path}")
144
+ @request_uri = "#{@base_uri}#{path}"
145
+ query = nil
146
+ extheader = @keepalive ? { 'Connection' => 'Keep-Alive' } : {}
147
+ @res = client.get(@request_uri, query, extheader)
42
148
  handle_error(@res)
43
149
  JSON.parse(@res.body)
44
150
  end
@@ -49,8 +155,10 @@ module GrowthForecast
49
155
  # @return [Hash] response body
50
156
  def post_json(path, data = {})
51
157
  pp data if @debug
158
+ @request_uri = "#{@base_uri}#{path}"
52
159
  json = JSON.generate(data)
53
- @res = client.post("#{@base_uri}#{path}", json)
160
+ extheader = @keepalive ? { 'Connection' => 'Keep-Alive' } : {}
161
+ @res = client.post(@request_uri, json, extheader)
54
162
  handle_error(@res)
55
163
  JSON.parse(@res.body)
56
164
  end
@@ -61,7 +169,9 @@ module GrowthForecast
61
169
  # @return [String] response body
62
170
  def post_query(path, data = {})
63
171
  pp data if @debug
64
- @res = client.post("#{@base_uri}#{path}", data)
172
+ @request_uri = "#{@base_uri}#{path}"
173
+ extheader = @keepalive ? { 'Connection' => 'Keep-Alive' } : {}
174
+ @res = client.post(@request_uri, data, extheader)
65
175
  handle_error(@res)
66
176
  JSON.parse(@res.body)
67
177
  end
@@ -164,6 +164,13 @@ describe GrowthForecast::Client do
164
164
  subject { @client.last_response }
165
165
  it { should be_kind_of HTTP::Message }
166
166
  end
167
+
168
+ context "#last_request_uri" do
169
+ include_context "stub_list_graph" if ENV['MOCK'] == 'on'
170
+ before { @client.list_graph }
171
+ subject { @client.last_request_uri }
172
+ it { should == "http://localhost:5125/json/list/graph" }
173
+ end
167
174
  end
168
175
  end
169
176
 
@@ -36,14 +36,16 @@ shared_context "setup_growthforecast_client" do
36
36
 
37
37
  include_context "stub_post_graph" if ENV['MOCK'] == 'on'
38
38
  include_context "stub_delete_graph" if ENV['MOCK'] == 'on'
39
- before {
40
- client.delete_graph("app name", "host name", "<1sec count") rescue nil
41
- client.delete_graph("app name", "host name", "<2sec count") rescue nil
42
- client.post_graph("app name", "host name", "<1sec count", { 'number' => 0 }) rescue nil
43
- client.post_graph("app name", "host name", "<2sec count", { 'number' => 0 }) rescue nil
44
- }
45
- after {
46
- client.delete_graph("app name", "host name", "<1sec count") rescue nil
47
- client.delete_graph("app name", "host name", "<2sec count") rescue nil
48
- }
39
+ unless ENV['MOCK'] == 'on'
40
+ before {
41
+ client.delete_graph("app name", "host name", "<1sec count") rescue nil
42
+ client.delete_graph("app name", "host name", "<2sec count") rescue nil
43
+ client.post_graph("app name", "host name", "<1sec count", { 'number' => 0 }) rescue nil
44
+ client.post_graph("app name", "host name", "<2sec count", { 'number' => 0 }) rescue nil
45
+ }
46
+ after {
47
+ client.delete_graph("app name", "host name", "<1sec count") rescue nil
48
+ client.delete_graph("app name", "host name", "<2sec count") rescue nil
49
+ }
50
+ end
49
51
  end
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.3
4
+ version: 0.62.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Naotoshi Seo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-20 00:00:00.000000000 Z
11
+ date: 2014-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient