module Frodo::Concerns::Verbs

Public Instance Methods

define_api_verb(verb) click to toggle source

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.

# File lib/frodo/concerns/verbs.rb, line 60
def define_api_verb(verb)
  define_method :"api_#{verb}" do |*args, &block|
    args[0] = api_path(args[0])
    send(verb, *args, &block)
  end
end
define_verb(verb) click to toggle source

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.

# File lib/frodo/concerns/verbs.rb, line 33
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
define_verbs(*verbs) click to toggle source

Internal: Define methods to handle a verb.

verbs - A list of verbs to define methods for.

Examples

define_verbs :get, :post

Returns nil.

# File lib/frodo/concerns/verbs.rb, line 15
def define_verbs(*verbs)
  verbs.each do |verb|
    define_verb(verb)
    define_api_verb(verb)
  end
end