Class: Tumblikes::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/tumblikes/client.rb

Constant Summary collapse

MAX_LIMIT_NUM =
20

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Client

Returns a new instance of Client.



7
8
9
10
11
12
13
14
# File 'lib/tumblikes/client.rb', line 7

def initialize(config)
  @client = Tumblr::Client.new(
    consumer_key: config[:consumer_key],
    consumer_secret: config[:consumer_secret],
    oauth_token: config[:access_token],
    oauth_token_secret: config[:access_token_secret]
  )
end

Instance Method Details

#image_urls(options = {}) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/tumblikes/client.rb', line 20

def image_urls(options = {})
  offset = options[:offset].to_i
  limit  = options[:limit].to_i
  fail 'LIMIT exceeded your LIKED_COUNT ' if limit > liked_count - offset

  request_num = ([liked_count - offset, limit].min / MAX_LIMIT_NUM).ceil

  image_chunks = (0..request_num).map do |req_num|
    liked_posts = @client.likes(limit: MAX_LIMIT_NUM, offset: offset + req_num * MAX_LIMIT_NUM).dig('liked_posts')
    photos = liked_posts.map { |post| post.dig('photos') }.flatten.compact

    photos.map { |photo| photo.dig('original_size', 'url') }
  end

  image_chunks.flatten
end

#liked_countObject



16
17
18
# File 'lib/tumblikes/client.rb', line 16

def liked_count
  @_liked_count ||= @client.likes.dig('liked_count').to_i
end