Sha256: 0a1c529ec773db8da4700ee64864435e6d2a62c8b7b46ceced87472aec704c98

Contents?: true

Size: 1.38 KB

Versions: 19

Compression:

Stored size: 1.38 KB

Contents

# frozen_string_literal: true

module LedgerSync
  module Ledgers
    class Request
      attr_reader :body,
                  :headers,
                  :method,
                  :params,
                  :response,
                  :url

      def initialize(args = {})
        @body = args.fetch(:body, nil)
        @headers = args.fetch(:headers, {})
        @method = args.fetch(:method, nil)
        @params = args.fetch(:params, {})
        @url = args.fetch(:url, nil)
      end

      def perform
        raise 'Request already performed' if performed?

        url_with_params = Util::URLHelpers.merge_params_in_url(params: params, url: url)

        faraday_response = Faraday.send(method, url_with_params) do |req|
          req.headers = headers
          req.body = body.to_json unless body.nil?
        end

        @response = Response.new_from_faraday_response(faraday_response: faraday_response, request: self)
        @performed = true
        @response
      end

      def performed?
        @performed == true
      end

      def self.delete(**keywords)
        new(keywords.merge(method: :delete))
      end

      def self.get(**keywords)
        new(keywords.merge(method: :get))
      end

      def self.post(**keywords)
        new(keywords.merge(method: :post))
      end

      def self.put(**keywords)
        new(keywords.merge(method: :put))
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
ledger_sync-2.3.1 lib/ledger_sync/ledgers/request.rb
ledger_sync-2.2.3 lib/ledger_sync/ledgers/request.rb
ledger_sync-2.2.1 lib/ledger_sync/ledgers/request.rb
ledger_sync-2.2.0 lib/ledger_sync/ledgers/request.rb
ledger_sync-2.0.2 lib/ledger_sync/ledgers/request.rb
ledger_sync-2.0.1 lib/ledger_sync/ledgers/request.rb
ledger_sync-2.0.0 lib/ledger_sync/ledgers/request.rb
ledger_sync-2.0.0.pre.1 lib/ledger_sync/ledgers/request.rb
ledger_sync-1.8.1 lib/ledger_sync/ledgers/request.rb
ledger_sync-1.8.0 lib/ledger_sync/ledgers/request.rb
ledger_sync-1.7.0 lib/ledger_sync/ledgers/request.rb
ledger_sync-1.6.0 lib/ledger_sync/ledgers/request.rb
ledger_sync-1.5.2 lib/ledger_sync/ledgers/request.rb
ledger_sync-1.5.1 lib/ledger_sync/ledgers/request.rb
ledger_sync-1.5.0 lib/ledger_sync/ledgers/request.rb
ledger_sync-1.4.4 lib/ledger_sync/ledgers/request.rb
ledger_sync-1.4.2 lib/ledger_sync/ledgers/request.rb
ledger_sync-1.4.1 lib/ledger_sync/ledgers/request.rb
ledger_sync-1.4.0 lib/ledger_sync/ledgers/request.rb