class Tsumamigui::Request
Constants
- INTERVAL
Attributes
urls[R]
Public Class Methods
new(*urls)
click to toggle source
@param [String] urls @param [Array<String>] urls
# File lib/tsumamigui/request.rb, line 22 def initialize(*urls) @urls = urls.flatten raise ArgumentError, 'No argument is specified' if @urls.empty? end
run(*urls)
click to toggle source
@param [String] urls @param [Array<String>] urls @return [Array<Tsumamigui::Response>] response instances
# File lib/tsumamigui/request.rb, line 11 def run(*urls) new(urls).exec_request end
Public Instance Methods
exec_request()
click to toggle source
Execute request and return responses @return [Array<Tsumamigui::Response>] response instances
# File lib/tsumamigui/request.rb, line 29 def exec_request @urls.map { |url| fetch(url) } end
Private Instance Methods
fetch(url)
click to toggle source
Fetch HTML from url and convert to response object @param [String] url @return [Tsumamigui::Response] response @raise [Tsumamigui::RequestError] rubocop:disable Security/Open
# File lib/tsumamigui/request.rb, line 40 def fetch(url) charset = nil sleep(sleep_interval) html = open(url, request_options) do |f| charset = f.charset f.read end Response.new(url, html, charset) rescue => e raise RequestError, e.message end
request_options()
click to toggle source
@return [Hash] options
# File lib/tsumamigui/request.rb, line 60 def request_options site = 'https://github.com/obiyuta/tsumamigui' {'User-Agent' => "Tsumamigui/#{Tsumamigui::VERSION} (+#{site})"} end
sleep_interval()
click to toggle source
@return [Float] sec 1.0-3.0秒
# File lib/tsumamigui/request.rb, line 55 def sleep_interval Random.rand(INTERVAL) end