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