Sha256: 1ac123aa62cbd3e4449b07eb07d88feefe0c326851526192f8e52c1f95cd0248

Contents?: true

Size: 776 Bytes

Versions: 2

Compression:

Stored size: 776 Bytes

Contents

# frozen_string_literal: true
require "async"
require "async/barrier"

module Qravan
  # Requests processing class
  class Request
    attr_accessor :resources, :sources, :cargo

    def initialize(request, cargo = {})
      @query = request["query"]
      @credentials = request["credentials"]
      @resources = []
      @cargo ||= cargo

      validate
      extract_resources
    end

    def validate
      @query
    end

    def extract_resources
      barrier = Async::Barrier.new
      barrier.async do
        @query.each do |key, resource|
          @resources << { key => Qravan::Resource.new(key, resource, cargo).extract }
        end
      ensure
        @resources
      end
      barrier.wait
    end

    def credentials
      @credentials
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
qravan-0.1.1 lib/qravan/query/request.rb
qravan-0.1.0 lib/qravan/query/request.rb