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
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