Sha256: 4951b7312f12547969cd33737bf141d11e21f55d2a50cde2cbc3760ff6dcb0f7
Contents?: true
Size: 1.6 KB
Versions: 1
Compression:
Stored size: 1.6 KB
Contents
# frozen_string_literal: true require 'mechanize' module QiitaTrend class Page attr_reader :target, :html, :cache QIITA_URI = 'https://qiita.com/' QIITA_LOGIN_URI = 'https://qiita.com/login' def initialize(trend_type = TrendType::DAILY, date = nil) @target = Target.new(trend_type, date) save_cache_directory = QiitaTrend.configuration.cache_directory.nil? ? Cache::DEFAULT_CACHE_DIRECTORY : QiitaTrend.configuration.cache_directory @cache = Cache.new(target.cache, save_cache_directory) # 指定されたキャッシュファイルが存在しない場合は処理を終了 unless date.nil? raise Error::NotExistsCacheError, @cache unless @cache.cached? end # キャッシュが存在する場合はキャッシュから取得 @html = @cache.cached? ? @cache.load_cache : create_html(@target) # キャッシュが存在しない時はキャッシュを作成する @cache.create_cache(@html) unless @cache.cached? end private def create_html(target) agent = Mechanize.new agent.user_agent_alias = 'Mac Safari' login_qiita(agent) if target.need_login agent.get(target.url).body end def login_qiita(agent) form = agent.get(QIITA_LOGIN_URI).forms.first form['identity'] = QiitaTrend.configuration.user_name form['password'] = QiitaTrend.configuration.password logged_page = form.submit # ページのタイトルにLoginが含まれていたらログイン失敗とする raise Error::LoginFailureError if logged_page.title.include?('Login') end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
qiita_trend-0.2.8 | lib/qiita_trend/page.rb |