presto-client 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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