growthforecast-client 0.80.0 → 0.80.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/VERSION +1 -1
- data/lib/growthforecast/cli.rb +15 -3
- data/lib/growthforecast/client.rb +48 -35
- data/spec/growthforecast/client_spec.rb +0 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3006246bf805d5ea28559718454817fd471e552d
|
4
|
+
data.tar.gz: 98da2066a4013b894af363388d5a2e52c243c9ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95d365a87b8c6e35917484b9e465ccbb6e1d3727ae40c60c6032268a59b86b86512a3b054ba8fd3ce6b045ed0dd9e94f3eb8c087ea294fdba3e440f8ad6c22c6
|
7
|
+
data.tar.gz: ceacf17cb3e36e6453a060304521722642a69cdcbfd45fd338ec04b79dd0f4acc4d946466de2361a397c48c750b668d741cabc6e3a43250199163b736748a794
|
data/CHANGELOG.md
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.80.
|
1
|
+
0.80.1
|
data/lib/growthforecast/cli.rb
CHANGED
@@ -8,6 +8,18 @@ class GrowthForecast::CLI < Thor
|
|
8
8
|
super(args, opts, config)
|
9
9
|
end
|
10
10
|
|
11
|
+
desc 'post <json> <api_url>', 'post a paramter to graph api'
|
12
|
+
long_desc <<-LONGDESC
|
13
|
+
Post a parameter to graph api
|
14
|
+
|
15
|
+
ex) growthforecast-client post '{"number":0}' http://{hostname}:{port}/api/{service_name}/{section_name}/{graph_name}
|
16
|
+
LONGDESC
|
17
|
+
def post(json, url)
|
18
|
+
base_uri, service_name, section_name, graph_name = split_url(url)
|
19
|
+
@client = client(base_uri)
|
20
|
+
puts @client.post_graph(service_name, section_name, graph_name, JSON.parse(json))
|
21
|
+
end
|
22
|
+
|
11
23
|
desc 'delete <url>', 'delete a graph or graphs under a url'
|
12
24
|
long_desc <<-LONGDESC
|
13
25
|
Delete a graph or graphs under a <url> where <url> is the one obtained from the GrowthForecast URI, e.g.,
|
@@ -32,7 +44,7 @@ class GrowthForecast::CLI < Thor
|
|
32
44
|
delete_complexes(complexes, graph_names, section_names)
|
33
45
|
end
|
34
46
|
|
35
|
-
desc 'color <url>', 'change the color of graphs'
|
47
|
+
desc 'color <url>', 'change the color of graphs under url'
|
36
48
|
long_desc <<-LONGDESC
|
37
49
|
Change the color of graphs
|
38
50
|
|
@@ -49,7 +61,7 @@ class GrowthForecast::CLI < Thor
|
|
49
61
|
setup_colors(colors, graphs)
|
50
62
|
end
|
51
63
|
|
52
|
-
desc 'create_complex <url>', 'create complex graphs'
|
64
|
+
desc 'create_complex <url>', 'create complex graphs under url'
|
53
65
|
long_desc <<-LONGDESC
|
54
66
|
Create complex graphs under a url
|
55
67
|
|
@@ -134,7 +146,7 @@ class GrowthForecast::CLI < Thor
|
|
134
146
|
end
|
135
147
|
|
136
148
|
def split_path(path)
|
137
|
-
path = path.gsub(/.*list\/?/, '').gsub(/.*view_graph\/?/, '')
|
149
|
+
path = path.gsub(/.*list\/?/, '').gsub(/.*view_graph\/?/, '').gsub(/.*api\/?/, '')
|
138
150
|
path.split('/').map {|p| CGI.unescape(p.gsub('%20', '+')) }
|
139
151
|
end
|
140
152
|
end
|
@@ -10,44 +10,57 @@ module GrowthForecast
|
|
10
10
|
class AlreadyExists < Error; end
|
11
11
|
|
12
12
|
class Client
|
13
|
-
attr_accessor :client
|
14
13
|
attr_reader :base_uri
|
15
|
-
attr_reader :
|
16
|
-
attr_reader :
|
17
|
-
|
18
|
-
|
14
|
+
attr_reader :host
|
15
|
+
attr_reader :port
|
16
|
+
attr_accessor :debug_dev
|
17
|
+
attr_accessor :open_timeout
|
18
|
+
attr_accessor :read_timeout
|
19
|
+
attr_accessor :verify_ssl
|
20
|
+
attr_accessor :keepalive
|
19
21
|
|
20
22
|
# @param [String] base_uri The base uri of GrowthForecast
|
21
23
|
def initialize(base_uri = 'http://127.0.0.1:5125', opts = {})
|
22
24
|
@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
|
-
|
28
25
|
opts = stringify_keys(opts)
|
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
|
34
|
-
end
|
35
26
|
|
36
|
-
|
37
|
-
|
38
|
-
|
27
|
+
URI.parse(base_uri).tap {|uri|
|
28
|
+
@host = uri.host
|
29
|
+
@port = uri.port
|
30
|
+
@use_ssl = uri.scheme == 'https'
|
31
|
+
}
|
32
|
+
@debug_dev = opts['debug_dev'] # IO object such as STDOUT
|
33
|
+
@open_timeout = opts['open_timeout'] # 60
|
34
|
+
@read_timeout = opts['read_timeout'] # 60
|
35
|
+
@verify_ssl = opts['verify_ssl']
|
36
|
+
@keepalive = opts['keepalive']
|
39
37
|
end
|
40
38
|
|
41
|
-
def
|
42
|
-
@
|
39
|
+
def http_connection
|
40
|
+
Net::HTTP.new(@host, @port).tap {|http|
|
41
|
+
http.use_ssl = @use_ssl
|
42
|
+
http.open_timeout = @open_timeout if @open_timeout
|
43
|
+
http.read_timeout = @read_timeout if @read_timeout
|
44
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE unless @verify_ssl
|
45
|
+
http.set_debug_output(@debug_dev) if @debug_dev
|
46
|
+
}
|
43
47
|
end
|
44
48
|
|
45
|
-
def
|
46
|
-
|
49
|
+
def get_request(path, extheader = {})
|
50
|
+
Net::HTTP::Get.new(path).tap {|req|
|
51
|
+
req['Host'] = @host
|
52
|
+
req['Connection'] = 'Keep-Alive' if @keepalive
|
53
|
+
extheader.each {|key, value| req[key] = value }
|
54
|
+
}
|
47
55
|
end
|
48
56
|
|
49
|
-
def
|
50
|
-
|
57
|
+
def post_request(path, body, extheader = {})
|
58
|
+
Net::HTTP::Post.new(path).tap {|req|
|
59
|
+
req['Host'] = @host
|
60
|
+
req['Connection'] = 'Keep-Alive' if @keepalive
|
61
|
+
extheader.each {|key, value| req[key] = value }
|
62
|
+
req.body = body
|
63
|
+
}
|
51
64
|
end
|
52
65
|
|
53
66
|
def last_request_uri
|
@@ -63,8 +76,8 @@ module GrowthForecast
|
|
63
76
|
# @return [Hash] response body
|
64
77
|
def get_json(path)
|
65
78
|
@request_uri = "#{@base_uri}#{path}"
|
66
|
-
|
67
|
-
@res =
|
79
|
+
req = get_request(path)
|
80
|
+
@res = http_connection.start {|http| http.request(req) }
|
68
81
|
handle_error(@res)
|
69
82
|
JSON.parse(@res.body)
|
70
83
|
end
|
@@ -75,10 +88,10 @@ module GrowthForecast
|
|
75
88
|
# @return [Hash] response body
|
76
89
|
def post_json(path, data = {})
|
77
90
|
@request_uri = "#{@base_uri}#{path}"
|
78
|
-
|
79
|
-
extheader =
|
80
|
-
|
81
|
-
@res =
|
91
|
+
body = JSON.generate(data)
|
92
|
+
extheader = { 'Content-Type' => 'application/json' }
|
93
|
+
req = post_request(path, body, extheader)
|
94
|
+
@res = http_connection.start {|http| http.request(req) }
|
82
95
|
handle_error(@res)
|
83
96
|
JSON.parse(@res.body)
|
84
97
|
end
|
@@ -89,10 +102,10 @@ module GrowthForecast
|
|
89
102
|
# @return [String] response body
|
90
103
|
def post_query(path, data = {})
|
91
104
|
@request_uri = "#{@base_uri}#{path}"
|
92
|
-
|
93
|
-
extheader =
|
94
|
-
|
95
|
-
@res =
|
105
|
+
body = URI.encode_www_form(data)
|
106
|
+
extheader = { 'Content-Type' => 'application/x-www-form-urlencoded' }
|
107
|
+
req = post_request(path, body, extheader)
|
108
|
+
@res = http_connection.start {|http| http.request(req) }
|
96
109
|
handle_error(@res)
|
97
110
|
JSON.parse(@res.body)
|
98
111
|
end
|
@@ -153,10 +153,6 @@ describe GrowthForecast::Client do
|
|
153
153
|
|
154
154
|
describe 'http://blog.64p.org/?page=1366971426' do
|
155
155
|
before { @client ||= client }
|
156
|
-
context "#client=" do
|
157
|
-
before { @client.client = HTTPClient.new(agent_name: 'TestAgent/0.1') }
|
158
|
-
it { @client.client.agent_name.should == 'TestAgent/0.1' }
|
159
|
-
end
|
160
156
|
|
161
157
|
context "#last_response" do
|
162
158
|
include_context "stub_list_graph" if ENV['MOCK'] == 'on'
|
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.80.
|
4
|
+
version: 0.80.1
|
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-02-
|
11
|
+
date: 2014-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httpclient
|