Class: Tim::ImageFactory::Base

Inherits:
ActiveResource::Base
  • Object
show all
Defined in:
lib/image_factory/model/base.rb

Direct Known Subclasses

BaseImage, ProviderImage, TargetImage

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.callback_urlObject



16
17
18
# File 'lib/image_factory/model/base.rb', line 16

def callback_url
  @callback_url
end

.callback_url=(url) ⇒ Object

Add Callback URL for listening to callback requests



12
13
14
# File 'lib/image_factory/model/base.rb', line 12

def callback_url=(url)
  @callback_url = URI.parse(url)
end

.collection_path(prefix_options = {}, query_options = nil) ⇒ Object

Remove format from the url for collections



27
28
29
30
# File 'lib/image_factory/model/base.rb', line 27

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

.configObject

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



54
55
56
# File 'lib/image_factory/model/base.rb', line 54

def config
  defined?(@@config) ? @@config : {}
end

.config=(conf = {}) ⇒ Object



57
58
59
60
# File 'lib/image_factory/model/base.rb', line 57

def config=(conf={})
  @@config = conf
  self.site = @@config[:site]
end

.custom_method_collection_url(method_name, options = {}) ⇒ Object

Modifying the url formations to make them Factory compliant



81
82
83
84
85
# File 'lib/image_factory/model/base.rb', line 81

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) ⇒ Object

Remove format from the url for resources



21
22
23
24
# File 'lib/image_factory/model/base.rb', line 21

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 = {}) ⇒ Object

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.


44
45
46
47
48
49
50
51
# File 'lib/image_factory/model/base.rb', line 44

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 = {}) ⇒ Object

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



34
35
36
37
38
39
40
# File 'lib/image_factory/model/base.rb', line 34

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

.use_oauth?Boolean

Should we use OAuth?

Returns:

  • (Boolean)


63
64
65
# File 'lib/image_factory/model/base.rb', line 63

def use_oauth?
  config[:consumer_key] && config[:consumer_secret] && config[:site]
end

Instance Method Details

#custom_method_element_url(method_name, options = {}) ⇒ Object

Modifying the url formations to make them Factory compliant



75
76
77
78
# File 'lib/image_factory/model/base.rb', line 75

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 = {}) ⇒ Object

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



70
71
72
# File 'lib/image_factory/model/base.rb', line 70

def get(method_name, options = {})
  self.class.new.load(connection.get(custom_method_element_url(method_name, options), self.class.headers))
end