Class: OAuthActiveResource::Resource
- Inherits:
-
ActiveResource::Base
- Object
- ActiveResource::Base
- OAuthActiveResource::Resource
- Defined in:
- lib/oauth_active_resource/resource.rb
Class Attribute Summary collapse
-
.oauth_connection ⇒ Object
Returns the value of attribute oauth_connection.
Class Method Summary collapse
-
.belongs_to(*args) ⇒ Object
belongs_to :user => will look for a user-id tag and load this user.
- .connection(refresh = false) ⇒ Object
-
.has_many(*args) ⇒ Object
has_many allows resources with sub-resources which arent nested to be accessable.
- .load_collection(*args) ⇒ Object
-
.multipart_bug_fix(params) ⇒ Object
ignore is added because the multipart gem is adding an extra new line to the last parameter which will break parsing of track.
-
.send_multipart_request(method, path, files, params = {}) ⇒ Object
allows you to POST/PUT an oauth authenticated multipart request.
Instance Method Summary collapse
- #==(other) ⇒ Object
-
#load(*args) ⇒ Object
TODO remove when soundcloud api is fixed if self has no id, try extracting from uri.
Class Attribute Details
.oauth_connection ⇒ Object
Returns the value of attribute oauth_connection.
9 10 11 |
# File 'lib/oauth_active_resource/resource.rb', line 9 def oauth_connection @oauth_connection end |
Class Method Details
.belongs_to(*args) ⇒ Object
belongs_to :user
=> will look for a user-id tag and load this user
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/oauth_active_resource/resource.rb', line 39 def self.belongs_to(*args) args.each do |k| name = k.to_s define_method(k) do if @belongs_to_cache.nil? @belongs_to_cache = {} end if not @belongs_to_cache[name] resource = find_or_create_resource_for(name) @belongs_to_cache[name] = resource.find(self.send("#{name}_id")) end return @belongs_to_cache[name] end end end |
.connection(refresh = false) ⇒ Object
12 13 14 15 16 |
# File 'lib/oauth_active_resource/resource.rb', line 12 def self.connection(refresh = false) @connection = Connection.new(oauth_connection, site,format) if @connection.nil? || refresh @connection.timeout = timeout if timeout return @connection end |
.has_many(*args) ⇒ Object
has_many allows resources with sub-resources which arent nested to be accessable.
Example: User 123 (example.com/users/123/) has many friends The list of friends can be accessed by example.com/users/123/friends Our class definition:
class User < Resource
has_many :friends
end
user = User.find(123)
user.friends.each do |friend|
p friend.name
end
# adding a friend
stranger = User.find(987)
user.friends << stranger
user.friends.save
=> sends a PUT with collection of friends to http://example.com/users/123/friends ## OUTDATED!!?
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/oauth_active_resource/resource.rb', line 77 def self.has_many(*args) args.each do |k| name = k.to_s singular = name.singularize define_method(k) do |*| = .first || {} #if @has_many_cache.nil? # @has_many_cache = {} #end @has_many_cache ||= {} cache_name = "#{name}#{options.hash}" if not @has_many_cache[cache_name] collection_path = "/#{self.element_name.pluralize}/#{self.id}/#{name}" resource = find_or_create_resource_for(singular) @has_many_cache[cache_name] = OAuthActiveResource::UniqueResourceArray.new(self.connection,resource,collection_path,) end return @has_many_cache[cache_name] end end end |
.load_collection(*args) ⇒ Object
31 32 33 |
# File 'lib/oauth_active_resource/resource.rb', line 31 def self.load_collection(*args) instantiate_collection(*args) end |
.multipart_bug_fix(params) ⇒ Object
ignore is added because the multipart gem is adding an extra new line to the last parameter which will break parsing of track
103 104 105 106 107 108 109 110 |
# File 'lib/oauth_active_resource/resource.rb', line 103 def self.multipart_bug_fix(params) ordered_params = ActiveSupport::OrderedHash.new params.each do |k,v| ordered_params[k] = v end ordered_params[:ignore] = 'multipart bug' ordered_params end |
.send_multipart_request(method, path, files, params = {}) ⇒ Object
allows you to POST/PUT an oauth authenticated multipart request
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/oauth_active_resource/resource.rb', line 113 def self.send_multipart_request(method, path, files, params={}) req = Net::HTTP::Post.new(path) if method == :put params[:_method] = "PUT" end params = multipart_bug_fix(params) file_hash = {} files.each do |k,v| file_hash[k] = Net::HTTP::FileForPost.new(v) end req.set_multipart_data(file_hash, params) oauth_connection.sign!(req) if not oauth_connection.nil? res = Net::HTTP.new(site.host, site.port).start do |http| http.request(req) end res end |
Instance Method Details
#==(other) ⇒ Object
25 26 27 28 29 |
# File 'lib/oauth_active_resource/resource.rb', line 25 def ==(other) return (other.is_a? Resource) && (self.is_a? Resource) && (self.element_name == other.element_name) && (self.id == other.id) rescue return super(other) end |
#load(*args) ⇒ Object
TODO remove when soundcloud api is fixed if self has no id, try extracting from uri
20 21 22 23 |
# File 'lib/oauth_active_resource/resource.rb', line 20 def load(*args) super(*args) self.id = self.uri.split('/').last if self.id.nil? and defined? self.uri end |