class Ripcord::Client
Attributes
authentication[RW]
last_request[R]
last_response[R]
logger[R]
Public Class Methods
new(endpoint_url)
click to toggle source
# File lib/ripcord/client.rb, line 17 def initialize(endpoint_url) @endpoint_url = URI.parse(endpoint_url) set_basic_auth_from_url if @endpoint_url.user && @endpoint_url.password @http_client = Net::HTTP.new(@endpoint_url.host, @endpoint_url.port) if @endpoint_url.is_a?(URI::HTTPS) @http_client.use_ssl = true # @http_client.verify_mode = OpenSSL::SSL::VERIFY_NONE end end
Public Instance Methods
call(method, params)
click to toggle source
# File lib/ripcord/client.rb, line 30 def call(method, params) request = Ripcord::JsonRPC::Request.new(method, params, generate_request_id) @last_request = request http_response = execute_request(request) parse_response(http_response) end
inspect()
click to toggle source
# File lib/ripcord/client.rb, line 43 def inspect "#<Ripcord::Client endpoint=#{@endpoint_url}>" end
logger=(logger)
click to toggle source
# File lib/ripcord/client.rb, line 38 def logger=(logger) @logger = logger @http_client.set_debug_output(logger) end
Private Instance Methods
execute_request(json_rpc_request)
click to toggle source
# File lib/ripcord/client.rb, line 49 def execute_request(json_rpc_request) request = Net::HTTP::Post.new(@endpoint_url.request_uri) request.content_type = "application/json" payload_hash = json_rpc_request.to_payload authentication&.apply_to(request, payload_hash) request.body = JSON.generate(payload_hash) @http_client.request(request) end
generate_request_id()
click to toggle source
# File lib/ripcord/client.rb, line 84 def generate_request_id SecureRandom.hex(16) end
parse_response(http_response)
click to toggle source
# File lib/ripcord/client.rb, line 62 def parse_response(http_response) # Check status code status_code = http_response.code.to_i raise Ripcord::Error::InvalidResponse, http_response.body if status_code < 200 || status_code > 299 # try to parse json begin json_data = JSON.parse(http_response.body, symbolize_names: true) rescue JSON::ParserError raise Ripcord::Error::InvalidJSON, http_response.body end case json_data when Hash # Handle single response Ripcord::JsonRPC::Response.from_data(json_data) when Array # Handle batch response json_data.map do |request_json| Ripcord::JsonRPC::Response.from_data(request_json) end end end
set_basic_auth_from_url()
click to toggle source
# File lib/ripcord/client.rb, line 88 def set_basic_auth_from_url self.authentication = Ripcord::Authentication::HTTPBasicAuth.new(@endpoint_url.user, @endpoint_url.password) end