class Aeolus::Image::Factory::Base

Public Class Methods

collection_path(prefix_options = {}, query_options = nil) click to toggle source

Remove format from the url for collections

# File lib/aeolus_image/model/factory/base.rb, line 31
def collection_path(prefix_options = {}, query_options = nil)
  prefix_options, query_options = split_options(prefix_options) if query_options.nil?
  "#{prefix(prefix_options)}#{collection_name}#{query_string(query_options)}"
end
config() click to toggle source

This approach does mean you’re limited to one server at a time

# File lib/aeolus_image/model/factory/base.rb, line 58
def config
  defined?(@@config) ? @@config : {}
end
config=(conf={}) click to toggle source
# File lib/aeolus_image/model/factory/base.rb, line 61
def config=(conf={})
  @@config = conf
  self.site = @@config[:site]
end
custom_method_collection_url(method_name, options = {}) click to toggle source

Modifying the url formations to make them Factory compliant

# File lib/aeolus_image/model/factory/base.rb, line 97
def self.custom_method_collection_url(method_name, options = {})
  prefix_options, query_options = split_options(options)
  url = "#{prefix(prefix_options)}#{collection_name}/#{method_name}#{query_string(query_options)}"
  url
end
element_path(id, prefix_options = {}, query_options = nil) click to toggle source

Remove format from the url for resources

# File lib/aeolus_image/model/factory/base.rb, line 25
def element_path(id, prefix_options = {}, query_options = nil)
  prefix_options, query_options = split_options(prefix_options) if query_options.nil?
  "#{prefix(prefix_options)}#{collection_name}/#{id}#{query_string(query_options)}"
end
get(method_name, options = {}) click to toggle source

The objects returned from this method are not automatically converted into ActiveResource instances - they are ordinary Hashes. Modifications below ensures that you get ActiveResource instances.

# File lib/aeolus_image/model/factory/base.rb, line 48
def get(method_name, options = {})
  object_array = connection.get(custom_method_collection_url(method_name, options), headers)
  if object_array.class.to_s=="Array"
    object_array.collect! {|record| self.class.new.load(record)}
  else
    self.class.new.load(object_array)
  end
end
instantiate_collection(collection, prefix_options = {}) click to toggle source

For a collection call, ActiveResource formatting is not compliant with Factory’s output.

# File lib/aeolus_image/model/factory/base.rb, line 38
def instantiate_collection(collection, prefix_options = {})
  unless collection.kind_of? Array
    [instantiate_record(collection, prefix_options)]
  else
    collection.collect! { |record| instantiate_record(record, prefix_options) }
  end
end
new(attributes = {}, persisted = nil) click to toggle source
Calls superclass method
# File lib/aeolus_image/model/factory/base.rb, line 72
def initialize(attributes = {}, persisted = nil)
  # The !! operator is required to set modified_persisted to false when
  # persisted == nil && attributes[:id] == nil
  modified_persisted = (persisted.nil? && attributes[:id]) ? true : !!persisted

  if ActiveResource::VERSION::MAJOR >= 3 && ActiveResource::VERSION::MINOR >= 1
    super(attributes, modified_persisted)
  else
    super(attributes)
  end
end
use_oauth?() click to toggle source

Should we use OAuth?

# File lib/aeolus_image/model/factory/base.rb, line 67
def use_oauth?
  config[:consumer_key] && config[:consumer_secret] && config[:site]
end

Public Instance Methods

custom_method_element_url(method_name, options = {}) click to toggle source

Modifying the url formations to make them Factory compliant

# File lib/aeolus_image/model/factory/base.rb, line 91
def custom_method_element_url(method_name, options = {})
  "#{self.class.prefix(prefix_options)}#{self.class.collection_name}/#{id}/" +
  "#{method_name}#{self.class.send!(:query_string, options)}"
end
get(method_name, options = {}) click to toggle source

Instance Methods: (modifying the ActiveRecord::CustomMethods). This modification is same as defined in above method

# File lib/aeolus_image/model/factory/base.rb, line 86
def get(method_name, options = {})
  self.class.new.load(connection.get(custom_method_element_url(method_name, options), self.class.headers))
end