class DuodealerAPI::Base

Attributes

early_july_pagination[RW]

Public Class Methods

activate_session(session) click to toggle source
# File lib/duodealer_api/resources/base.rb, line 45
def activate_session(session)
  raise InvalidSessionError.new("Session cannot be nil") if session.nil?
  self.site = session.site
  self.headers.merge!('X-DuoDealer-Access-Token' => session.token)
  self.api_version = session.api_version
end
api_version() click to toggle source
# File lib/duodealer_api/resources/base.rb, line 60
def api_version
  if _api_version_defined?
    _api_version
  elsif superclass != Object && superclass.site
    superclass.api_version.dup.freeze
  else
    ApiVersion::NullVersion
  end
end
api_version=(version) click to toggle source
# File lib/duodealer_api/resources/base.rb, line 70
def api_version=(version)
  self._api_version = ApiVersion::NullVersion.matches?(version) ? ApiVersion::NullVersion : ApiVersion.find_version(version)
end
clear_session() click to toggle source
# File lib/duodealer_api/resources/base.rb, line 52
def clear_session
  self.site = nil
  self.password = nil
  self.user = nil
  self.api_version = nil
  self.headers.delete('X-DuoDealer-Access-Token')
end
early_july_pagination?() click to toggle source
# File lib/duodealer_api/resources/base.rb, line 131
def early_july_pagination?
  !!early_july_pagination
end
headers() click to toggle source
# File lib/duodealer_api/resources/base.rb, line 35
def headers
  if _headers_defined?
    _headers
  elsif superclass != Object && superclass.headers
    superclass.headers
  else
    _headers ||= {}
  end
end
init_prefix(resource) click to toggle source
# File lib/duodealer_api/resources/base.rb, line 119
def init_prefix(resource)
  init_prefix_explicit(resource.to_s.pluralize, "#{resource}_id")
end
init_prefix_explicit(resource_type, resource_id) click to toggle source
# File lib/duodealer_api/resources/base.rb, line 123
def init_prefix_explicit(resource_type, resource_id)
  self.resource_prefix = "#{resource_type}/:#{resource_id}/"

  define_method resource_id.to_sym do
    @prefix_options[resource_id]
  end
end
prefix(options = {}) click to toggle source
# File lib/duodealer_api/resources/base.rb, line 74
def prefix(options = {})
  api_version.construct_api_path(resource_prefix(options))
end
prefix=(value) click to toggle source
# File lib/duodealer_api/resources/base.rb, line 105
def prefix=(value)
  if value.start_with?('/admin')
    raise ArgumentError, "'#{value}' can no longer start /admin/. Change to using resource_prefix="
  end

  warn(
    '[DEPRECATED] DuodealerAPI::Base#prefix= is deprecated and will be removed in a future version. ' \
      'Use `self.resource_prefix=` instead.'
  )
  self.resource_prefix = value
end
Also aliased as: set_prefix
prefix_source() click to toggle source
# File lib/duodealer_api/resources/base.rb, line 78
def prefix_source
  ''
end
resource_prefix(_options = {}) click to toggle source
# File lib/duodealer_api/resources/base.rb, line 82
def resource_prefix(_options = {})
  ''
end
resource_prefix=(value) click to toggle source

Sets the prefix for a resource's nested URL (e.g., prefix/collectionname/1.json). Default value is site.path.

# File lib/duodealer_api/resources/base.rb, line 88
      def resource_prefix=(value)
        @prefix_parameters = nil

        resource_prefix_call = value.gsub(/:\w+/) { |key| "\#{URI.parser.escape options[#{key}].to_s}" }

        silence_warnings do
          # Redefine the new methods.
          instance_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
            def prefix_source() "#{value}" end
            def resource_prefix(options={}) "#{resource_prefix_call}" end
          RUBY_EVAL
        end
      rescue => e
        logger&.error("Couldn't set prefix: #{e}\n  #{code}")
        raise
      end
set_prefix(value)
Alias for: prefix=
version_validation!(minimum_version) click to toggle source
# File lib/duodealer_api/resources/base.rb, line 135
def version_validation!(minimum_version)
  available_in_version = DuodealerAPI::ApiVersion.find_version(minimum_version)

  unless DuodealerAPI::Base.api_version >= available_in_version
    raise NotImplementedError, "The minimum supported version is #{minimum_version}."
  end
end

Private Class Methods

early_july_pagination_release!() click to toggle source
# File lib/duodealer_api/resources/base.rb, line 147
def early_july_pagination_release!
  self.early_july_pagination = true
end

Public Instance Methods

as_json(options = nil) click to toggle source
# File lib/duodealer_api/resources/base.rb, line 23
def as_json(options = nil)
  root = options[:root] if options.try(:key?, :root)
  if include_root_in_json
    root = self.class.model_name.element if root == true
    { root => serializable_hash(options) }
  else
    serializable_hash(options)
  end
end
encode(options = {}) click to toggle source
# File lib/duodealer_api/resources/base.rb, line 16
def encode(options = {})
  same = dup
  same.attributes = {self.class.element_name => same.attributes} if self.class.format.extension == 'json'

  same.send("to_#{self.class.format.extension}", options)
end
persisted?() click to toggle source
# File lib/duodealer_api/resources/base.rb, line 152
def persisted?
  !id.nil?
end

Private Instance Methods

only_id() click to toggle source
# File lib/duodealer_api/resources/base.rb, line 158
def only_id
  encode(:only => :id, :include => [], :methods => [])
end