Sha256: 423803eb5350a6b4a352ccf73e8ada1c0799c1e2c88f08f8d02dd7069d9f05c0

Contents?: true

Size: 1.15 KB

Versions: 6

Compression:

Stored size: 1.15 KB

Contents

require 'faraday'

require 'yardi/utils'
require 'yardi/utils/configuration_validator'

module Yardi
  module Utils
    # Send a SOAP request to Yardi
    class RequestFetcher
      # @param generator [RequestGenerator] an instance of a RequestGenerator,
      #   which responds to #generate.
      # @param connection [Faraday::Connection] The connection we'll use to
      #   make the request
      def initialize(connection:, endpoint:, generator:)
        @connection = connection
        @endpoint = endpoint
        @generator = generator
      end

      # @return [String] the XML response from Yardi
      def fetch
        ConfigurationValidator.new.validate!

        response = perform!

        raise Yardi::Error::ResourceNotFound, response.body if response.status == 404

        response.body
      end

      private

      attr_reader :connection, :endpoint, :generator

      def perform!
        connection.post(endpoint) do |request|
          request.body = generator.body
          request.headers = generator.headers
        end
      rescue Errno::EADDRNOTAVAIL => e
        raise Yardi::Error::ConnectionError, e.message
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
yardi-4.11.4 lib/yardi/utils/request_fetcher.rb
yardi-4.11.3 lib/yardi/utils/request_fetcher.rb
yardi-5.0.1 lib/yardi/utils/request_fetcher.rb
yardi-4.11.2 lib/yardi/utils/request_fetcher.rb
yardi-4.11.1 lib/yardi/utils/request_fetcher.rb
yardi-4.11.0 lib/yardi/utils/request_fetcher.rb