tumblr-fu 0.1.0.1 → 0.1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/tumblr.rb +43 -3
  2. metadata +2 -2
@@ -10,14 +10,14 @@ module Tumblr
10
10
  oauth_token = opts.delete(:oauth_token)
11
11
  oauth_token_secret = opts.delete(:oauth_token_secret)
12
12
  @consumer = OAuth::Consumer.new(@consumer_key, consumer_secret,
13
- {:site => "http://www.tumblr.com/"})
13
+ {:site => "http://www.tumblr.com/"})
14
14
  token_hash = {:oauth_token => oauth_token,
15
15
  :oauth_token_secret => oauth_token_secret}
16
16
  @access_token = OAuth::AccessToken.from_hash(@consumer, token_hash)
17
17
  end
18
18
 
19
19
  def info(hostname)
20
- JSON.parse open("http://api.tumblr.com/v2/blog/#{hostname}/info?api_key=#{@consumer_key}").read
20
+ JSON.parse api_key_get(hostname, 'info')
21
21
  end
22
22
 
23
23
  def followers(hostname)
@@ -25,7 +25,47 @@ module Tumblr
25
25
  JSON.parse(response.body)
26
26
  end
27
27
 
28
- private
28
+ def posts_page(hostname, opts = {})
29
+ defaults = {:offset => 0, :limit => 20}
30
+ opts = defaults.merge(opts)
31
+ response = api_key_get(hostname, 'posts', opts)
32
+ JSON.parse(response)
33
+ end
34
+
35
+ def post_pages(hostname, opts = {})
36
+ page_limit = opts.delete(:number_of_pages).to_i
37
+ limit = opts.delete(:per_page) || 20
38
+ offset = 0
39
+ result = posts_page(hostname, opts.merge(:offset => offset,
40
+ :limit => limit))
41
+ total = result['response']['total_posts']
42
+ total_pages = (total.to_f / limit.to_f).ceil
43
+ page_number = 1
44
+ yield({:result => result,
45
+ :offset => offset,
46
+ :page_number => page_number,
47
+ :per_page => limit})
48
+ if total_pages > 1
49
+ while(page_number <= total_pages) do
50
+ break if page_limit > 0 && page_number == page_limit
51
+ offset = (offset + limit)
52
+ result = posts_page(hostname, opts.merge(:offset => offset,
53
+ :limit => limit))
54
+ yield({:result => result,
55
+ :offset => offset,
56
+ :page_number => page_number,
57
+ :per_page => limit})
58
+ page_number += 1
59
+ end
60
+ end
61
+ end
62
+
63
+ def api_key_get(hostname, path, params = {})
64
+ params[:api_key] ||= @consumer_key
65
+ query = URI.escape(params.collect{|k,v| "#{k}=#{v}"}.join('&'))
66
+ uri = "http://api.tumblr.com/v2/blog/#{hostname}/#{path}?#{query}"
67
+ open(uri).read
68
+ end
29
69
 
30
70
  end
31
71
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tumblr-fu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.1
4
+ version: 0.1.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-07 00:00:00.000000000 Z
12
+ date: 2012-12-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: oauth