stream-ruby 2.4.5 → 2.5.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: bde83576879380bf5f3848870da027f0b5b0a5a5
4
- data.tar.gz: 7bd36e4dbea7d4785ca87b2ed47d450f8c132be5
3
+ metadata.gz: 1398099d6f288e0c5bad1cd13bc9b63def1464b2
4
+ data.tar.gz: c9f19bcff3c6c6012c04b692e9e90194aaf2f905
5
5
  SHA512:
6
- metadata.gz: d53897246c37a211d955dfe7910f31b138205a4053f07af088e2d8aadda81bccad02be733622930b9f52ea19b43cd66f0e02d7e689bbfb8339289dd575a5a58b
7
- data.tar.gz: 72b993e91b9956494f13db0e74592c2bf6f08fae6856e2280c01e5542eca1c43603df2cf628498e156a3ccf5b37d6c0801443b437af8a2df4338341823f0a963
6
+ metadata.gz: 576e0e4b71ef340081a9f87d1165434ee88c773ca7ae42a156d57fd5ba1e8eb10f3ffedeb8d3411eeaa9de8190da976b0e5672ab7d4567a6d71c30e55f04afcf
7
+ data.tar.gz: fea36c574fc895385b1549b29099478f6609e51309b8cfbfb9ff2131fd4de26342e3d7096a847f1cb39e077d418113c0a1d925c5901378bcf0b00714342f47c6
@@ -1,4 +1,4 @@
1
- require "httparty"
1
+ require "faraday"
2
2
  require "stream/errors"
3
3
  require "stream/feed"
4
4
  require "stream/signer"
@@ -10,9 +10,7 @@ module Stream
10
10
  attr_reader :api_key
11
11
  attr_reader :api_secret
12
12
  attr_reader :app_id
13
- attr_reader :api_version
14
- attr_reader :location
15
- attr_reader :default_timeout
13
+ attr_reader :client_options
16
14
 
17
15
  if RUBY_VERSION.to_f >= 2.1
18
16
  require "stream/batch"
@@ -49,13 +47,16 @@ module Stream
49
47
  @api_key = api_key
50
48
  @api_secret = api_secret
51
49
  @app_id = app_id
52
- @location = opts[:location]
53
- @api_version = opts.fetch(:api_version, "v1.0")
54
- @default_timeout = opts.fetch(:default_timeout, 3)
55
50
  @signer = Stream::Signer.new(api_secret)
51
+
52
+ @client_options = {
53
+ :api_version => opts.fetch(:api_version, "v1.0"),
54
+ :location => opts.fetch(:location, nil),
55
+ :default_timeout => opts.fetch(:default_timeout, 3),
56
+ :api_key => @api_key
57
+ }
56
58
  end
57
59
 
58
- #
59
60
  # Creates a feed instance
60
61
  #
61
62
  # @param [string] feed_slug the feed slug (eg. flat, aggregated...)
@@ -82,7 +83,7 @@ module Stream
82
83
  end
83
84
 
84
85
  def get_http_client
85
- @http_client ||= StreamHTTPClient.new(@api_version, @location, @default_timeout)
86
+ @http_client ||= StreamHTTPClient.new(@client_options)
86
87
  end
87
88
 
88
89
  def make_query_params(params)
@@ -98,48 +99,92 @@ module Stream
98
99
  end
99
100
 
100
101
  class StreamHTTPClient
101
- include HTTParty
102
+ require "faraday"
102
103
 
104
+ attr_reader :conn
105
+ attr_reader :options
103
106
  attr_reader :base_path
104
107
 
105
- def initialize(api_version = "v1.0", location = nil, default_timeout = 3)
108
+ def initialize(client_params)
109
+ @options = client_params
106
110
  location_name = "api"
107
- unless location.nil?
108
- location_name = "#{location}-api"
111
+ unless client_params[:location].nil?
112
+ location_name = "#{client_params[:location]}-api"
109
113
  end
110
- @base_path = "/api/#{api_version}"
111
114
 
112
115
  protocol = "https"
113
- if location == "qa"
116
+ if @options[:location] == "qa"
114
117
  protocol = "http"
115
118
  end
116
119
 
117
- self.class.base_uri "#{protocol}://#{location_name}.getstream.io#{@base_path}"
118
- self.class.default_timeout default_timeout
119
- end
120
-
121
- def _build_error_message(response)
122
- msg = "#{response['exception']} details: #{response['detail']}"
120
+ @base_path = "/api/#{@options[:api_version]}"
121
+ base_url = "#{protocol}://#{location_name}.getstream.io#{@base_path}"
123
122
 
124
- if response.key?("exception_fields")
125
- response["exception_fields"].map do |field, messages|
126
- msg << "\n#{field}: #{messages}"
127
- end
123
+ @conn = Faraday.new(:url => base_url) do |faraday|
124
+ # faraday.request :url_encoded
125
+ faraday.adapter Faraday.default_adapter
126
+ faraday.use RaiseHttpException
127
+ faraday.options[:open_timeout] = @options[:default_timeout]
128
+ faraday.options[:timeout] = @options[:default_timeout]
128
129
  end
129
-
130
- msg
130
+ @conn.path_prefix = @base_path
131
131
  end
132
132
 
133
133
  def make_http_request(method, relative_url, params = nil, data = nil, headers = nil)
134
134
  headers["Content-Type"] = "application/json"
135
135
  headers["X-Stream-Client"] = "stream-ruby-client-#{Stream::VERSION}"
136
- body = data.to_json if ["post", "put"].include? method.to_s
137
- response = self.class.send(method, relative_url, :headers => headers, :query => params, :body => body)
138
- case response.code
136
+
137
+ params["api_key"] = @options[:api_key]
138
+ relative_url = "#{@base_path}#{relative_url}?#{URI.encode_www_form(params)}"
139
+ response = @conn.run_request(method, relative_url, data.to_json, headers)
140
+
141
+ case response[:status].to_i
139
142
  when 200..203
140
- return response
141
- when 204...600
142
- raise StreamApiResponseException, _build_error_message(response)
143
+ return ::JSON.parse(response[:body])
144
+ end
145
+ end
146
+ end
147
+
148
+ class RaiseHttpException < Faraday::Middleware
149
+ def call(env)
150
+ @app.call(env).on_complete do |response|
151
+ case response[:status].to_i
152
+ when 200..203
153
+ return response
154
+ when 401
155
+ raise StreamApiResponseException, error_message(response, "Bad feed")
156
+ when 403
157
+ raise StreamApiResponseException, error_message(response, "Bad auth/headers")
158
+ when 404
159
+ raise StreamApiResponseException, error_message(response, "url not found")
160
+ when 204...600
161
+ raise StreamApiResponseException, error_message(response, "something else")
162
+ end
163
+ end
164
+ end
165
+
166
+ def initialize(app)
167
+ super app
168
+ @parser = nil
169
+ end
170
+
171
+ private
172
+
173
+ def error_message(response, body = nil)
174
+ "#{response[:method].to_s.upcase} #{response[:url]}: #{[response[:status].to_s + ':', body].compact.join(' ')}"
175
+ end
176
+
177
+ def error_body(body)
178
+ if !body.nil? && !body.empty? && body.is_a?(String)
179
+ body = ::JSON.parse(body)
180
+ end
181
+
182
+ if body.nil?
183
+ nil
184
+ elsif body["meta"] && body["meta"]["error_message"] && !body["meta"]["error_message"].empty?
185
+ ": #{body['meta']['error_message']}"
186
+ elsif body["error_message"] && !body["error_message"].empty?
187
+ ": #{body['error_type']}: #{body['error_message']}"
143
188
  end
144
189
  end
145
190
  end
@@ -1,3 +1,3 @@
1
1
  module Stream
2
- VERSION = "2.4.5".freeze
2
+ VERSION = "2.5.0".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stream-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.5
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tommaso Barbugli
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-12-09 00:00:00.000000000 Z
12
+ date: 2016-12-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: httparty
15
+ name: faraday
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '0'
20
+ version: 0.10.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '0'
27
+ version: 0.10.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: http_signatures
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -53,20 +53,6 @@ dependencies:
53
53
  - - '='
54
54
  - !ruby/object:Gem::Version
55
55
  version: 1.5.2
56
- - !ruby/object:Gem::Dependency
57
- name: persistent_httparty
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - "~>"
61
- - !ruby/object:Gem::Version
62
- version: 0.1.2
63
- type: :runtime
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: 0.1.2
70
56
  - !ruby/object:Gem::Dependency
71
57
  name: rake
72
58
  requirement: !ruby/object:Gem::Requirement