qiita_trend 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2d951237e3738aac64b419374e01b8774ed218b5adfe154839f21c638b9e0e3a
4
- data.tar.gz: 50d112ccefd325c04299ea4fc84b1e83c87e49725963ad017a25eb5efdb6c0f6
3
+ metadata.gz: b970140f428667c8c6c00f3604d41122bd0f79472cb161b07652d523e4e34cdc
4
+ data.tar.gz: 7b2ade2e8b47322c4a75ff083ff1aa8ebcc54f3d91d505878f1041a214a48fed
5
5
  SHA512:
6
- metadata.gz: 89c8881053b2585a63110b5fa8f4fea5b67fcdfb1846284faecb5323de093eb5c424751b28254e451e13c4049f45dd5764b412baa356c7958d19f615a4c88e69
7
- data.tar.gz: 3b582e329b482c824dd6056635aece16e6197240321f0a6626a60c4d34212ffdd0eefbb8af6404ed61bfc264866e77510d13c5633dd95c37d666c626d1f260f0
6
+ metadata.gz: '001872aee63ed8b15019a022fdec168414d0bafc0edb8bdb0dfd3b13abc9af749e49bf513780e87828e31ce52bea9be7478c4f152490edc491d3e41fef14bf16'
7
+ data.tar.gz: 4ea2f4ab5c792e03b41b18bdccf387da77196ab86f0964edf5b8896d73b85b7090d1b763f4565b11e1d05994cb1a0dfdbb5b452211fdd8feec9a428df70679ca
data/.gitignore CHANGED
@@ -10,4 +10,5 @@
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
12
 
13
+ /cache/
13
14
  /spec/vcr/
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- qiita_trend (0.2.0)
4
+ qiita_trend (0.2.1)
5
5
  mechanize
6
6
  nokogiri (~> 1.9)
7
7
 
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module QiitaTrend
4
+ class Cache
5
+ attr_reader :file_name, :directory, :full_path
6
+
7
+ # キャッシュファイルが格納されるデフォルトのディレクトリ
8
+ DEFAULT_CACHE_DIRECTORY = File.expand_path('../..', __dir__) + '/cache/'
9
+
10
+ # コンストラクタ
11
+ # クラス内で使用するインスタンス変数をセットする
12
+ def initialize(file_name, directory = DEFAULT_CACHE_DIRECTORY)
13
+ @file_name = file_name
14
+ @directory = directory
15
+ @full_path = "#{directory}#{file_name}"
16
+ end
17
+
18
+ # キャッシュファイルを作成する
19
+ # キャッシュフォルダが存在しない時は作成する
20
+ def create_cache(content)
21
+ Dir.mkdir(@directory) unless Dir.exist?(@directory)
22
+ File.open(@full_path, 'wb') do |file|
23
+ file.print(content)
24
+ end
25
+ end
26
+
27
+ # キャッシュファイルを読み込む
28
+ def load_cache
29
+ File.open(@full_path, 'r', &:read)
30
+ end
31
+
32
+ # キャッシュファイルが存在するか?
33
+ def cached?
34
+ File.exist?(@full_path)
35
+ end
36
+
37
+ # キャッシュファイルをクリアする
38
+ def clear_cache
39
+ File.delete(@full_path) if cached?
40
+ rescue StandardError => e
41
+ raise e.class, 'キャッシュファイルの削除に失敗しました'
42
+ end
43
+ end
44
+ end
@@ -4,16 +4,38 @@ require 'mechanize'
4
4
 
5
5
  module QiitaTrend
6
6
  class Page
7
- attr_reader :page, :html
7
+ attr_reader :html
8
8
 
9
9
  QIITA_URI = 'https://qiita.com/'
10
10
 
11
11
  def initialize(ua)
12
+ @html = create_html(ua)
13
+ end
14
+
15
+ private
16
+
17
+ def create_html(ua)
18
+ # キャッシュが存在する場合はキャッシュから取得
19
+ cache = QiitaTrend::Cache.new(target_trend + '.html')
20
+ return cache.load_cache if cache.cached?
21
+
22
+ # キャッシュが存在しない場合はキャッシュを作成しページ情報を取得する
12
23
  agent = Mechanize.new
13
24
  agent.user_agent_alias = ua
25
+ page = agent.get QIITA_URI
26
+ cache.create_cache(page.body)
27
+
28
+ page.body
29
+ end
14
30
 
15
- @page = agent.get QIITA_URI
16
- @html = @page.body
31
+ def target_trend
32
+ if Time.now.hour >= 5 && Time.now.hour < 17
33
+ Date.today.strftime('%Y%m%d') + '05'
34
+ elsif Time.now.hour >= 17
35
+ Date.today.strftime('%Y%m%d') + '17'
36
+ elsif Time.now.hour < 5
37
+ (Date.today - 1).strftime('%Y%m%d') + '17'
38
+ end
17
39
  end
18
40
  end
19
41
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module QiitaTrend
4
- VERSION = '0.2.0'
4
+ VERSION = '0.2.1'
5
5
  end
data/lib/qiita_trend.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  require 'qiita_trend/version'
4
4
  require 'qiita_trend/trend'
5
5
  require 'qiita_trend/page'
6
+ require 'qiita_trend/cache'
6
7
 
7
8
  module QiitaTrend
8
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qiita_trend
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - dodonki1223
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-25 00:00:00.000000000 Z
11
+ date: 2019-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mechanize
@@ -170,6 +170,7 @@ files:
170
170
  - bin/console
171
171
  - bin/setup
172
172
  - lib/qiita_trend.rb
173
+ - lib/qiita_trend/cache.rb
173
174
  - lib/qiita_trend/page.rb
174
175
  - lib/qiita_trend/trend.rb
175
176
  - lib/qiita_trend/version.rb