class Flickr::Api::Abstract
This class abstracts the interface for communication with the Flickr
API.
@see Flickr::ApiError
@see Flickr::OAuthError
@see Flickr::TimeoutError
Public Class Methods
new(access_token = nil)
click to toggle source
@private
# File lib/flickr/api/abstract.rb, line 27 def initialize(access_token = nil) @access_token = access_token end
object_class()
click to toggle source
@private
# File lib/flickr/api/abstract.rb, line 20 def self.object_class Flickr::Object.const_get(name.match(/^Flickr::Api::/).post_match) end
Public Instance Methods
find(id)
click to toggle source
@param id [String] ID of the object to be instantiated @example
person = Flickr.photos.find("1") person.photos.each do |photo| # ... end
# File lib/flickr/api/abstract.rb, line 39 def find(id) object_class = self.class.object_class object_class.new({"id" => id}, @access_token) end
Private Instance Methods
client()
click to toggle source
# File lib/flickr/api/abstract.rb, line 67 def client { data: Flickr::Client::Data.new(@access_token), upload: Flickr::Client::Upload.new(@access_token), } end
get(flickr_method, params = {})
click to toggle source
# File lib/flickr/api/abstract.rb, line 46 def get(flickr_method, params = {}) make_request(:get, flickr_method, params) end
make_request(http_method, flickr_method, params = {})
click to toggle source
# File lib/flickr/api/abstract.rb, line 54 def make_request(http_method, flickr_method, params = {}) process_params(params, flickr_method) client[:data].send(http_method, "flickr.#{flickr_method}", params) end
new_list(class_name, attributes_list, list_attributes = {})
click to toggle source
@example
photos = new_list(:Photo, [{"id" => "1"}], {"page" => 1}) photos #=> #<Flickr::Object::List:0x007ffe6b51d468 # @attributes={"page"=>1}, # @objects= # [#<Flickr::Object::Photo:0x007ffe6b4ff760 owner=#<Flickr::Object::Person:0x007ffe6b52d408 >>, # #<Flickr::Object::Photo:0x007ffe6b4fdcd0 owner=#<Flickr::Object::Person:0x007ffe6b556ab0 >>]>
# File lib/flickr/api/abstract.rb, line 106 def new_list(class_name, attributes_list, list_attributes = {}) objects = attributes_list.map { |attributes| new_object(class_name, attributes) } list = Flickr::Object::List.new(list_attributes) list.populate(objects) end
new_object(class_name, attributes)
click to toggle source
@example
photo = new_object(:Photo, {"id" => "1"}) photo #=> #<Flickr::Object::Photo:0x007fcb9e08dee8 id="1">
# File lib/flickr/api/abstract.rb, line 92 def new_object(class_name, attributes) object_class = self.class.object_class.const_get(class_name) object_class.new(attributes, @access_token) end
post(flickr_method, params = {})
click to toggle source
# File lib/flickr/api/abstract.rb, line 50 def post(flickr_method, params = {}) make_request(:post, flickr_method, params) end
process_params(params, flickr_method)
click to toggle source
Enhances params, allowing nicer syntax.
@example
params = {sizes: ["Thumbnail", "Medium 500"]} process_params(params, "flickr.photos.search") params #=> {extras: "url_t,url_m"}
@see Flickr::Api::Abstract::ParamsProcessor
# File lib/flickr/api/abstract.rb, line 83 def process_params(params, flickr_method) ParamsProcessor.new(params).process_for(flickr_method) end
replace(params = {})
click to toggle source
# File lib/flickr/api/abstract.rb, line 63 def replace(params = {}) client[:upload].replace(params) end
upload(params = {})
click to toggle source
# File lib/flickr/api/abstract.rb, line 59 def upload(params = {}) client[:upload].upload(params) end