class Irasutoya::Irasuto

Attributes

description[R]
has_multiple_images[R]
image_url[R]
image_urls[R]
postthumb_image_url[R]
title[R]
url[R]

Public Class Methods

new(url:, title:, description:, image_urls:) click to toggle source
# File lib/irasutoya/irasuto.rb, line 11
def initialize(url:, title:, description:, image_urls:)
  @url = url
  @title = title
  @description = description
  @image_urls = image_urls
  @has_multiple_images = image_urls.size > 1
  @postthumb_image_url = image_urls.first if @has_multiple_images
  @image_url = image_urls.first
end
random() click to toggle source
# File lib/irasutoya/irasuto.rb, line 22
def random
  url = random_url
  document = fetch_page_and_parse(url)
  parsed = parse_show_page(document: document)

  Irasuto.new(url: url, title: parsed[:title], description: parsed[:description], image_urls: parsed[:image_urls])
end

Private Class Methods

random_api_path() click to toggle source
# File lib/irasutoya/irasuto.rb, line 45
def random_api_path
  max_index = 22_208
  luck = Random.rand(max_index)
  "/feeds/posts/summary?start-index=#{luck}&max-results=1&alt=json-in-script"
end
random_url() click to toggle source
# File lib/irasutoya/irasuto.rb, line 51
def random_url
  jsonp = Net::HTTP.get('www.irasutoya.com', random_api_path)
  JSON.parse(jsonp[/{.+}/]) # rubocop:disable Style/SingleArgumentDig
      .dig('feed', 'entry')
      .first
      .dig('link')
      .select { |link| link['rel'] == 'alternate' }
      .first
      .dig('href')
end