lib/qiita_trend/page.rb in qiita_trend-0.2.1 vs lib/qiita_trend/page.rb in qiita_trend-0.2.2

- old
+ new

@@ -2,40 +2,45 @@ require 'mechanize' module QiitaTrend class Page - attr_reader :html + attr_reader :target, :html, :cache QIITA_URI = 'https://qiita.com/' + QIITA_LOGIN_URI = 'https://qiita.com/login' - def initialize(ua) - @html = create_html(ua) - end + def initialize(trend_type = TrendType::DAILY, date = nil) + @target = Target.new(trend_type, date) + @cache = Cache.new(target.cache) - private + # 指定されたキャッシュファイルが存在しない場合は処理を終了 + unless date.nil? + raise StandardError, '指定されたキャッシュファイルが存在しません' unless @cache.cached? + end - def create_html(ua) # キャッシュが存在する場合はキャッシュから取得 - cache = QiitaTrend::Cache.new(target_trend + '.html') - return cache.load_cache if cache.cached? + @html = @cache.cached? ? @cache.load_cache : create_html(@target) - # キャッシュが存在しない場合はキャッシュを作成しページ情報を取得する - agent = Mechanize.new - agent.user_agent_alias = ua - page = agent.get QIITA_URI - cache.create_cache(page.body) - - page.body + # キャッシュが存在しない時はキャッシュを作成する + @cache.create_cache(@html) unless @cache.cached? end - def target_trend - if Time.now.hour >= 5 && Time.now.hour < 17 - Date.today.strftime('%Y%m%d') + '05' - elsif Time.now.hour >= 17 - Date.today.strftime('%Y%m%d') + '17' - elsif Time.now.hour < 5 - (Date.today - 1).strftime('%Y%m%d') + '17' + private + + def create_html(target) + agent = Mechanize.new + agent.user_agent_alias = 'Mac Safari' + + # ログイン処理 + if target.need_login + form = agent.get(QIITA_LOGIN_URI).forms.first + form['identity'] = QiitaTrend.configuration.user_name + form['password'] = QiitaTrend.configuration.password + logged_page = form.submit + raise StandardError, 'ログインに失敗しました(ユーザー名とパスワードでログインできることを確認してください)' if logged_page.title.include?('Login') end + + agent.get(target.url).body end end end