Sha256: 9c90221046fe2e54c76d057a0469375953316e65c75118e63433af5dbebd04ae

Contents?: true

Size: 1.24 KB

Versions: 5

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

require 'eac_rest/request'
require 'eac_ruby_utils/core_ext'

module EacRest
  # Abstract methods
  #   * self.issue_get_url_suffix(provider_issue_id)
  class Api
    require_sub __FILE__, include_modules: true
    common_constructor :root_url, :username, :password, default: [nil, nil]

    def request(service_url_suffix, headers = {}, &body_data_proc)
      r = ::EacRest::Request.new(build_service_url(service_url_suffix),
                                 body_data_proc)
      headers.each { |name, value| r = r.header(name, value) }
      r = r.autenticate(username, password) if username.present?
      r
    end

    def request_json(service_url_suffix, headers = {}, &body_data_proc)
      request(service_url_suffix, headers.merge('Accept' => 'application/json')) do |body_data|
        r = ::JSON.parse(body_data)
        r = body_data_proc.call(r) if body_data_proc
        r
      end
    end

    # @return [Addressable::URI]
    def build_service_url(suffix)
      s = ::Addressable::URI.parse(suffix)
      r = ::Addressable::URI.parse(root_url)
      r.path += s.path
      r.query_values = r.query_values(::Array).if_present([]) +
                       s.query_values(::Array).if_present([])
      r
    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
avm-tools-0.116.1 sub/eac_rest/lib/eac_rest/api.rb
avm-tools-0.116.0 sub/eac_rest/lib/eac_rest/api.rb
avm-tools-0.115.0 sub/eac_rest/lib/eac_rest/api.rb
eac_rest-0.4.0 lib/eac_rest/api.rb
avm-tools-0.114.2 sub/eac_rest/lib/eac_rest/api.rb