lib/peatio/nexbit/client.rb in peatio-nexbit-0.1.2 vs lib/peatio/nexbit/client.rb in peatio-nexbit-0.1.3
- old
+ new
@@ -1,61 +1,48 @@
-require 'memoist'
-require 'faraday'
-require 'better-faraday'
+module Nexbit
+ class Client
+ Error = Class.new(StandardError)
-module Peatio
- module Nexbit
- class Client
- Error = Class.new(StandardError)
- class ConnectionError < Error; end
+ class ConnectionError < Error; end
- class ResponseError < Error
- def initialize(code, msg)
- @code = code
- @msg = msg
- end
-
- def message
- "#{@msg} (#{@code})"
- end
+ class ResponseError < Error
+ def initialize(code, msg)
+ super "#{msg} (#{code})"
end
+ end
- extend Memoist
+ extend Memoist
- def initialize(endpoint)
- @json_rpc_endpoint = URI.parse(endpoint)
- end
+ def initialize(endpoint, idle_timeout: 5)
+ @json_rpc_endpoint = URI.parse(endpoint)
+ @idle_timeout = idle_timeout
+ end
- def json_rpc(method, params = [])
- response = connection.post \
- '/',
- { jsonrpc: '1.0', method: method, params: params }.to_json,
- { 'Accept' => 'application/json',
- 'Content-Type' => 'application/json' }
- response.assert_2xx!
- response = JSON.parse(response.body)
- response['error'].tap { |e| raise ResponseError.new(e['code'], e['message']) if e }
- response.fetch('result')
- rescue => e
- if e.is_a?(Error)
- raise e
- elsif e.is_a?(Faraday::Error)
- raise ConnectionError, e
- else
- raise Error, e
- end
- end
+ def json_rpc(method, params = [])
+ response = connection.post \
+ '/',
+ {jsonrpc: '1.0', method: method, params: params}.to_json,
+ {'Accept' => 'application/json',
+ 'Content-Type' => 'application/json'}
+ response.assert_success!
+ response = JSON.parse(response.body)
+ response['error'].tap { |error| raise ResponseError.new(error['code'], error['message']) if error }
+ response.fetch('result')
+ rescue Faraday::Error => e
+ raise ConnectionError, e
+ rescue StandardError => e
+ raise Error, e
+ end
- private
+ private
- def connection
- Faraday.new(@json_rpc_endpoint).tap do |connection|
- unless @json_rpc_endpoint.user.blank?
- connection.basic_auth(@json_rpc_endpoint.user,
- @json_rpc_endpoint.password)
- end
+ def connection
+ @connection ||= Faraday.new(@json_rpc_endpoint) do |f|
+ f.adapter :net_http_persistent, pool_size: 5, idle_timeout: @idle_timeout
+ end.tap do |connection|
+ unless @json_rpc_endpoint.user.blank?
+ connection.basic_auth(@json_rpc_endpoint.user, @json_rpc_endpoint.password)
end
end
- memoize :connection
end
end
end