class Europeana::API::Queue

A queue of API requests to run in parallel

Constants

Item

Attributes

client[R]

Public Class Methods

new(client) click to toggle source
# File lib/europeana/api/queue.rb, line 11
def initialize(client)
  @client = client
  @items = []
end

Public Instance Methods

add(resource, method, **params) click to toggle source
# File lib/europeana/api/queue.rb, line 20
def add(resource, method, **params)
  @items << Item.new(resource, method, **params)
end
present?() click to toggle source
# File lib/europeana/api/queue.rb, line 16
def present?
  @items.present?
end
run() click to toggle source
# File lib/europeana/api/queue.rb, line 24
def run
  responses = []

  client.connection.in_parallel do
    @items.each do |item|
      resource_class = Europeana::API.send(item.resource)
      request = resource_class.send(:api_request_for_endpoint, item.method, item.params)
      request.client = client
      responses << request.execute
    end
  end

  responses.map do |response|
    begin
      response.validate!
      response.body
    rescue StandardError => exception
      exception
    end
  end
end