Sha256: 7ed0c1484456b398ac05955f2fea5ea2aa8e7a2d77bf221983fddc8a2bf72221

Contents?: true

Size: 1.63 KB

Versions: 18

Compression:

Stored size: 1.63 KB

Contents

# frozen_string_literal: true

module Frodo
  module Concerns
    module Verbs
      # Internal: Define methods to handle a verb.
      #
      # verbs - A list of verbs to define methods for.
      #
      # Examples
      #
      #   define_verbs :get, :post
      #
      # Returns nil.
      def define_verbs(*verbs)
        verbs.each do |verb|
          define_verb(verb)
          define_api_verb(verb)
        end
      end

      # Internal: Defines a method to handle HTTP requests with the passed in
      # verb.
      #
      # verb - Symbol name of the verb (e.g. :get).
      #
      # Examples
      #
      #   define_verb :get
      #   # => get '/path/to/entity'
      #
      # Returns nil.
      def define_verb(verb)
        define_method verb do |*args, &block|
          retries = options[:authentication_retries]
          begin
            connection.send(verb, *args, &block)
          rescue Frodo::UnauthorizedError
            if retries.positive?
              retries -= 1
              connection.url_prefix = options[:instance_url]
              retry
            end
            raise
          end
        end
      end

      # Internal: Defines a method to handle HTTP requests with the passed in
      # verb to a Dynamics api endpoint.
      #
      # verb - Symbol name of the verb (e.g. :get).
      #
      # Examples
      #
      #   define_api_verb :get
      #   # => api_get 'entity_set'
      #
      # Returns nil.
      def define_api_verb(verb)
        define_method :"api_#{verb}" do |*args, &block|
          args[0] = api_path(args[0])
          send(verb, *args, &block)
        end
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
frodo-0.12.8 lib/frodo/concerns/verbs.rb
frodo-0.12.7 lib/frodo/concerns/verbs.rb
frodo-0.12.6 lib/frodo/concerns/verbs.rb
frodo-0.12.5 lib/frodo/concerns/verbs.rb
frodo-0.12.4 lib/frodo/concerns/verbs.rb
frodo-0.12.2 lib/frodo/concerns/verbs.rb
frodo-0.12.1 lib/frodo/concerns/verbs.rb
frodo-0.12.0 lib/frodo/concerns/verbs.rb
frodo-0.11.0 lib/frodo/concerns/verbs.rb
frodo-0.10.8 lib/frodo/concerns/verbs.rb
frodo-0.10.7 lib/frodo/concerns/verbs.rb
frodo-0.10.6 lib/frodo/concerns/verbs.rb
frodo-0.10.5 lib/frodo/concerns/verbs.rb
frodo-0.10.4 lib/frodo/concerns/verbs.rb
frodo-0.10.3 lib/frodo/concerns/verbs.rb
frodo-0.10.2 lib/frodo/concerns/verbs.rb
frodo-0.10.1 lib/frodo/concerns/verbs.rb
frodo-0.10.0 lib/frodo/concerns/verbs.rb