presto-client 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,4 +1,10 @@
1
1
 
2
+ 2014-01-22 version 0.3.0:
3
+
4
+ * Added http_timeout option
5
+ * Added http_open_timeout option
6
+ * Changed Query.start API to start(query, options) to http options
7
+
2
8
  2014-01-22 version 0.2.0:
3
9
 
4
10
  * Added Query#cancel
@@ -20,24 +20,24 @@ module Presto::Client
20
20
 
21
21
  class Client
22
22
  def initialize(options)
23
- @session = ClientSession.new(options)
23
+ @options = options
24
24
  end
25
25
 
26
26
  def query(query, &block)
27
+ q = Query.start(query, @options)
27
28
  if block
28
- q = Query.start(@session, query)
29
29
  begin
30
30
  yield q
31
31
  ensure
32
32
  q.close
33
33
  end
34
34
  else
35
- return Query.start(@session, query)
35
+ return q
36
36
  end
37
37
  end
38
38
 
39
39
  def run(query)
40
- q = Query.start(@session, query)
40
+ q = Query.start(query, @options)
41
41
  begin
42
42
  columns = q.columns
43
43
  if columns.empty?
@@ -32,27 +32,6 @@ module Presto::Client
32
32
  end
33
33
  end
34
34
 
35
- class ClientSession
36
- def initialize(options)
37
- @server = options[:server]
38
- @user = options[:user]
39
- @source = options[:source]
40
- @catalog = options[:catalog]
41
- @schema = options[:schema]
42
- @debug = !!options[:debug]
43
- end
44
-
45
- attr_reader :server
46
- attr_reader :user
47
- attr_reader :source
48
- attr_reader :catalog
49
- attr_reader :schema
50
-
51
- def debug?
52
- @debug
53
- end
54
- end
55
-
56
35
  class StageStats
57
36
  attr_reader :stage_id
58
37
  attr_reader :state
@@ -21,14 +21,19 @@ module Presto::Client
21
21
  require 'presto/client/statement_client'
22
22
 
23
23
  class Query
24
- def self.start(session, query)
25
- faraday = Faraday.new(url: "http://#{session.server}") do |faraday|
24
+ def self.start(query, options)
25
+ server = options[:server]
26
+ unless server
27
+ raise ArgumentError, ":server option is required"
28
+ end
29
+
30
+ faraday = Faraday.new(url: "http://#{server}") do |faraday|
26
31
  #faraday.request :url_encoded
27
32
  faraday.response :logger
28
33
  faraday.adapter Faraday.default_adapter
29
34
  end
30
35
 
31
- new StatementClient.new(faraday, session, query)
36
+ new StatementClient.new(faraday, query, options)
32
37
  end
33
38
 
34
39
  def initialize(client)
@@ -36,31 +36,38 @@ module Presto::Client
36
36
  "User-Agent" => "presto-ruby/#{VERSION}"
37
37
  }
38
38
 
39
- def initialize(faraday, session, query)
39
+ def initialize(faraday, query, options)
40
40
  @faraday = faraday
41
41
  @faraday.headers.merge!(HEADERS)
42
42
 
43
- @session = session
43
+ @options = options
44
44
  @query = query
45
45
  @closed = false
46
46
  @exception = nil
47
47
  post_query_request!
48
48
  end
49
49
 
50
+ def init_request(req)
51
+ req.options.timeout = @options[:http_timeout] || 300
52
+ req.options.open_timeout = @options[:http_open_timeout] || 60
53
+ end
54
+
55
+ private :init_request
56
+
50
57
  def post_query_request!
51
58
  response = @faraday.post do |req|
52
59
  req.url "/v1/statement"
53
60
 
54
- if v = @session.user
61
+ if v = @options[:user]
55
62
  req.headers[PrestoHeaders::PRESTO_USER] = v
56
63
  end
57
- if v = @session.source
64
+ if v = @options[:source]
58
65
  req.headers[PrestoHeaders::PRESTO_SOURCE] = v
59
66
  end
60
- if v = @session.catalog
67
+ if v = @options[:catalog]
61
68
  req.headers[PrestoHeaders::PRESTO_CATALOG] = v
62
69
  end
63
- if v = @session.schema
70
+ if v = @options[:schema]
64
71
  req.headers[PrestoHeaders::PRESTO_SCHEMA] = v
65
72
  end
66
73
 
@@ -82,7 +89,7 @@ module Presto::Client
82
89
  attr_reader :query
83
90
 
84
91
  def debug?
85
- @session.debug?
92
+ !!@options[:debug]
86
93
  end
87
94
 
88
95
  def closed?
@@ -15,6 +15,6 @@
15
15
  #
16
16
  module Presto
17
17
  module Client
18
- VERSION = "0.2.0"
18
+ VERSION = "0.3.0"
19
19
  end
20
20
  end
@@ -1,14 +1,14 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Presto::Client::StatementClient do
4
- let :session do
5
- session = ClientSession.new(
4
+ let :options do
5
+ {
6
6
  server: "localhost",
7
7
  user: "frsyuki",
8
8
  catalog: "native",
9
9
  schema: "default",
10
10
  debug: true,
11
- )
11
+ }
12
12
  end
13
13
 
14
14
  let :query do
@@ -27,13 +27,13 @@ describe Presto::Client::StatementClient do
27
27
  with(body: query,
28
28
  headers: {
29
29
  "User-Agent" => "presto-ruby/#{VERSION}",
30
- "X-Presto-Catalog" => session.catalog,
31
- "X-Presto-Schema" => session.schema,
32
- "X-Presto-User" => session.user,
30
+ "X-Presto-Catalog" => options[:catalog],
31
+ "X-Presto-Schema" => options[:schema],
32
+ "X-Presto-User" => options[:user],
33
33
  }).to_return(body: response_json.to_json)
34
34
 
35
35
  faraday = Faraday.new(url: "http://localhost")
36
- StatementClient.new(faraday, session, query)
36
+ StatementClient.new(faraday, query, options)
37
37
  end
38
38
  end
39
39
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: presto-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  version: '0'
137
137
  segments:
138
138
  - 0
139
- hash: 453544593424709681
139
+ hash: -2053006963209558154
140
140
  requirements: []
141
141
  rubyforge_project:
142
142
  rubygems_version: 1.8.23