Sha256: 5f54349671d5edeb31ee0cd352ded1e0ab11b630fc555cca98483d537fcf0e0c

Contents?: true

Size: 1.53 KB

Versions: 43

Compression:

Stored size: 1.53 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
    attr_accessor :ssl_verify
    common_constructor :root_url, :username, :password, default: [nil, nil] do
      self.ssl_verify = true
    end

    def request(service_url_suffix, headers = {}, &body_data_proc)
      r = ::EacRest::Request.new(build_service_url(service_url_suffix),
                                 body_data_proc).ssl_verify(ssl_verify)
      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)
      r = ::Addressable::URI.parse(suffix)
      return r if r.scheme.present?

      s = build_service_url_suffix(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

    # @return [Addressable::URI]
    def build_service_url_suffix(suffix)
      ::Addressable::URI.parse(suffix)
    end
  end
end

Version data entries

43 entries across 43 versions & 3 rubygems

Version Path
eac_rest-0.7.3 lib/eac_rest/api.rb
eac_rest-0.7.2 lib/eac_rest/api.rb
eac_rest-0.7.1 lib/eac_rest/api.rb
eac_rest-0.7.0 lib/eac_rest/api.rb
avm-tools-0.129.0 sub/eac_rest/lib/eac_rest/api.rb
eac_tools-0.16.0 sub/avm-tools/sub/eac_rest/lib/eac_rest/api.rb
avm-tools-0.128.0 sub/eac_rest/lib/eac_rest/api.rb
eac_tools-0.15.0 sub/avm-tools/sub/eac_rest/lib/eac_rest/api.rb
eac_tools-0.14.0 sub/avm-tools/sub/eac_rest/lib/eac_rest/api.rb
eac_tools-0.13.0 sub/avm-tools/sub/eac_rest/lib/eac_rest/api.rb
avm-tools-0.127.0 sub/eac_rest/lib/eac_rest/api.rb
eac_tools-0.12.0 sub/avm-tools/sub/eac_rest/lib/eac_rest/api.rb
avm-tools-0.126.0 sub/eac_rest/lib/eac_rest/api.rb
eac_tools-0.11.1 sub/avm-tools/sub/eac_rest/lib/eac_rest/api.rb
avm-tools-0.125.0 sub/eac_rest/lib/eac_rest/api.rb
eac_tools-0.11.0 sub/avm-tools/sub/eac_rest/lib/eac_rest/api.rb
avm-tools-0.124.0 sub/eac_rest/lib/eac_rest/api.rb
eac_tools-0.10.0 sub/avm-tools/sub/eac_rest/lib/eac_rest/api.rb
avm-tools-0.123.0 sub/eac_rest/lib/eac_rest/api.rb
eac_tools-0.9.0 sub/avm-tools/sub/eac_rest/lib/eac_rest/api.rb