class Koine::RestClient::AsyncBuilder
takes care of async requests
Public Class Methods
new(client, response_parser, queue = AsyncQueue.new)
click to toggle source
# File lib/koine/rest_client/async_builder.rb, line 7 def initialize(client, response_parser, queue = AsyncQueue.new) @client = client @response_parser = response_parser @queue = queue @error_handler = proc do |error| raise error end end
Public Instance Methods
delete(*args, &block)
click to toggle source
# File lib/koine/rest_client/async_builder.rb, line 32 def delete(*args, &block) queue(:delete, *args, &block) end
get(*args, &block)
click to toggle source
# File lib/koine/rest_client/async_builder.rb, line 16 def get(*args, &block) queue(:get, *args, &block) end
on_error(&block)
click to toggle source
# File lib/koine/rest_client/async_builder.rb, line 46 def on_error(&block) @error_handler = block end
parsed_responses()
click to toggle source
# File lib/koine/rest_client/async_builder.rb, line 36 def parsed_responses blocks = @queue.map { |_request, block| block } threads = @queue.map do |request| Thread.new { @client.perform_request(request) } end @queue.clear responses = threads.map(&:value) parse_responses(responses, blocks) end
patch(*args, &block)
click to toggle source
# File lib/koine/rest_client/async_builder.rb, line 28 def patch(*args, &block) queue(:patch, *args, &block) end
post(*args, &block)
click to toggle source
# File lib/koine/rest_client/async_builder.rb, line 20 def post(*args, &block) queue(:post, *args, &block) end
put(*args, &block)
click to toggle source
# File lib/koine/rest_client/async_builder.rb, line 24 def put(*args, &block) queue(:put, *args, &block) end
Private Instance Methods
parse_responses(responses, blocks)
click to toggle source
# File lib/koine/rest_client/async_builder.rb, line 52 def parse_responses(responses, blocks) responses.map.with_index do |response, index| block = blocks[index] begin @response_parser.parse(response, &block) rescue StandardError => exception @error_handler.call(exception) end end end
queue(type, *args, &block)
click to toggle source
# File lib/koine/rest_client/async_builder.rb, line 63 def queue(type, *args, &block) request = @client.__send__("create_#{type}_request", *args) @queue.push(request, &block) end