Class: Tumblr::Client
- Inherits:
-
Object
- Object
- Tumblr::Client
- Defined in:
- lib/tumblr.rb
Instance Method Summary collapse
- #api_key_get(hostname, path, params = {}) ⇒ Object
- #followers(hostname) ⇒ Object
- #info(hostname) ⇒ Object
-
#initialize(opts = {}) ⇒ Client
constructor
A new instance of Client.
- #post_pages(hostname, opts = {}) {|{:result => result, :offset => offset, :page_number => page_number, :per_page => limit}| ... } ⇒ Object
- #posts_page(hostname, opts = {}) ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ Client
Returns a new instance of Client.
7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/tumblr.rb', line 7 def initialize(opts = {}) @consumer_key = opts.delete(:consumer_key) consumer_secret = opts.delete(:consumer_secret) oauth_token = opts.delete(:oauth_token) oauth_token_secret = opts.delete(:oauth_token_secret) @consumer = OAuth::Consumer.new(@consumer_key, consumer_secret, {:site => "http://www.tumblr.com/"}) token_hash = {:oauth_token => oauth_token, :oauth_token_secret => oauth_token_secret} @access_token = OAuth::AccessToken.from_hash(@consumer, token_hash) end |
Instance Method Details
#api_key_get(hostname, path, params = {}) ⇒ Object
63 64 65 66 67 68 |
# File 'lib/tumblr.rb', line 63 def api_key_get(hostname, path, params = {}) params[:api_key] ||= @consumer_key query = URI.escape(params.collect{|k,v| "#{k}=#{v}"}.join('&')) uri = "http://api.tumblr.com/v2/blog/#{hostname}/#{path}?#{query}" open(uri).read end |
#followers(hostname) ⇒ Object
23 24 25 26 |
# File 'lib/tumblr.rb', line 23 def followers(hostname) response = @access_token.get("http://api.tumblr.com/v2/blog/#{hostname}/followers") JSON.parse(response.body) end |
#info(hostname) ⇒ Object
19 20 21 |
# File 'lib/tumblr.rb', line 19 def info(hostname) JSON.parse api_key_get(hostname, 'info') end |
#post_pages(hostname, opts = {}) {|{:result => result, :offset => offset, :page_number => page_number, :per_page => limit}| ... } ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/tumblr.rb', line 35 def post_pages(hostname, opts = {}) page_limit = opts.delete(:number_of_pages).to_i limit = opts.delete(:per_page) || 20 offset = 0 result = posts_page(hostname, opts.merge(:offset => offset, :limit => limit)) total = result['response']['total_posts'] total_pages = (total.to_f / limit.to_f).ceil page_number = 1 yield({:result => result, :offset => offset, :page_number => page_number, :per_page => limit}) if total_pages > 1 while(page_number <= total_pages) do break if page_limit > 0 && page_number == page_limit offset = (offset + limit) result = posts_page(hostname, opts.merge(:offset => offset, :limit => limit)) yield({:result => result, :offset => offset, :page_number => page_number, :per_page => limit}) page_number += 1 end end end |
#posts_page(hostname, opts = {}) ⇒ Object
28 29 30 31 32 33 |
# File 'lib/tumblr.rb', line 28 def posts_page(hostname, opts = {}) defaults = {:offset => 0, :limit => 20} opts = defaults.merge(opts) response = api_key_get(hostname, 'posts', opts) JSON.parse(response) end |