class Tumblikes::Client

Constants

MAX_LIMIT_NUM

Public Class Methods

new(config) click to toggle source
# 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

Public Instance Methods

image_urls(options = {}) click to toggle source
# 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_count() click to toggle source
# File lib/tumblikes/client.rb, line 16
def liked_count
  @_liked_count ||= @client.likes.dig('liked_count').to_i
end