admiral_stats_parser 1.8.0 → 1.9.0

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
  SHA1:
3
- metadata.gz: e127fced6bcbd3b3b30fc503155a7eecb737cdbf
4
- data.tar.gz: bce717d8e702a710a8f67c1dd7b593977636db5f
3
+ metadata.gz: a71d8cdf82776ba8470feed23cbc37df7b153b4c
4
+ data.tar.gz: d538dd7b527aceb0818208b4817ae1526ed6d27b
5
5
  SHA512:
6
- metadata.gz: 699296f94e500e263f7859b4e9afcb2c02af3e87e606b07f6f1db74f2298cc6ddfe4823594f3dfdd2dd6a9aa6aa91496f30a09fc292fe20e0c4cbefd7becfb10
7
- data.tar.gz: 20ae2987ada2b1026d5ead9769ee4940dff1422a9997fab2297025573f50ca94448cb4b13cc0db02e7002ac3c856d546f8f5f0125d52010ad2fe38d8db5683dd
6
+ metadata.gz: 83ad7209a9976a200cb2710617d633c543ba889be25824223d78b923b5b5e13390ba1a2729bb69cfc18bcaf04388c732ed57272b51ecb1b250480c1c825067c3
7
+ data.tar.gz: 1aebe7b34f6e301bbddd9cb2541d19c3703cb2e81081ee187f8773f538b2b095836937678b54d04f3a3b8cf49a179533b54882456d02853e092f34bb8c6e3cfd
data/README.md CHANGED
@@ -63,7 +63,8 @@ AdmiralStatsParser は、以下の API version をサポートしています。
63
63
  | 5 | 2016-12-21 〜 2017-02-13 |
64
64
  | 6 | 2017-02-14 〜 2017-04-25 |
65
65
  | 7 | 2017-04-26 〜 2017-05-31(第2回イベントの終了日) |
66
- | 8 | 2017-06-01 〜 |
66
+ | 8 | 2017-06-01 〜 2017-07-30 |
67
+ | 9 | 2017-07-31 〜 |
67
68
 
68
69
  各 API version でパースできる JSON の種類は以下の通りです。また、同じ情報でも、API version によって、含まれる情報量が異なる場合があります。その場合は Supported (1), Supported (2) のように記載して区別しています。
69
70
 
@@ -71,22 +72,23 @@ AdmiralStatsParser は、以下の API version をサポートしています。
71
72
  |------------:|:-----|:-----|:-----|:-----|
72
73
  | 1 | Supported (1) | Supported (1) | Supported (1) | Supported |
73
74
  | 2 〜 6 | Supported (2) | Supported (2) | Supported (2) | Supported |
74
- | 7 〜 8 | Supported (3) | Supported (3) | Supported (2) | Supported |
75
+ | 7 〜 9 | Supported (3) | Supported (3) | Supported (2) | Supported |
75
76
 
76
77
  | API version | 艦娘一覧 | 装備一覧 | イベント海域情報 |
77
78
  |------------:|:-----|:-----|:-----|
78
79
  | 1 | Unsupported | Unsupported | Unsupported |
79
- | 2 | Supported (1) | Supported | Unsupported |
80
- | 3 | Supported (2) | Supported | Unsupported |
81
- | 4 | Supported (2) | Supported | Supported (1) |
82
- | 5 〜 6 | Supported (3) | Supported | Supported (1) |
83
- | 7 〜 8 | Supported (4) | Supported | Supported (2) |
80
+ | 2 | Supported (1) | Supported (1)| Unsupported |
81
+ | 3 | Supported (2) | Supported (1) | Unsupported |
82
+ | 4 | Supported (2) | Supported (1) | Supported (1) |
83
+ | 5 〜 6 | Supported (3) | Supported (1) | Supported (1) |
84
+ | 7 〜 8 | Supported (4) | Supported (1) | Supported (2) |
85
+ | 9 | Supported (4) | Supported (2) | Supported (2) |
84
86
 
85
87
  | API version | 改装設計図一覧 |
86
88
  |------------:|:-----|
87
89
  | 1 〜 6 | Unsupported |
88
- | 7 | Supported (1) |
89
- | 8 | Supported (2) |
90
+ | 7 | Supported (1) |
91
+ | 8 〜 9 | Supported (2) |
90
92
 
91
93
  ## Development
92
94
 
@@ -12,7 +12,7 @@ require 'admiral_stats_parser/parser/blueprint_list_info_parser'
12
12
  module AdmiralStatsParser
13
13
  # 最新の API バージョンを返します。
14
14
  def self.get_latest_api_version
15
- return 8
15
+ return 9
16
16
  end
17
17
 
18
18
  # エクスポート時刻を元に、API バージョンを推測して返します。
@@ -38,6 +38,9 @@ module AdmiralStatsParser
38
38
  # version 8 の開始日
39
39
  return 7 if exported_at < Time.parse('2017-06-01T07:00:00+0900')
40
40
 
41
+ # version 9 の開始日
42
+ return 8 if exported_at < Time.parse('2017-07-31T07:00:00+0900')
43
+
41
44
  return self.get_latest_api_version
42
45
  end
43
46
 
@@ -48,7 +51,7 @@ module AdmiralStatsParser
48
51
  PersonalBasicInfoParser.parse(json, 1)
49
52
  when 2..6
50
53
  PersonalBasicInfoParser.parse(json, 2)
51
- when 7..8
54
+ when 7..9
52
55
  PersonalBasicInfoParser.parse(json, 3)
53
56
  else
54
57
  raise 'unsupported API version'
@@ -62,7 +65,7 @@ module AdmiralStatsParser
62
65
  AreaCaptureInfoParser.parse(json, 1)
63
66
  when 2..6
64
67
  AreaCaptureInfoParser.parse(json, 2)
65
- when 7..8
68
+ when 7..9
66
69
  AreaCaptureInfoParser.parse(json, 3)
67
70
  else
68
71
  raise 'unsupported API version'
@@ -74,7 +77,7 @@ module AdmiralStatsParser
74
77
  case api_version
75
78
  when 1
76
79
  TcBookInfoParser.parse(json, 1)
77
- when 2..8
80
+ when 2..9
78
81
  TcBookInfoParser.parse(json, 2)
79
82
  else
80
83
  raise 'unsupported API version'
@@ -84,7 +87,7 @@ module AdmiralStatsParser
84
87
  # 装備図鑑をパースします。
85
88
  def self.parse_equip_book_info(json, api_version)
86
89
  case api_version
87
- when 1..8
90
+ when 1..9
88
91
  EquipBookInfoParser.parse(json)
89
92
  else
90
93
  raise 'unsupported API version'
@@ -102,7 +105,7 @@ module AdmiralStatsParser
102
105
  CharacterListInfoParser.parse(json, 2)
103
106
  when 5..6
104
107
  CharacterListInfoParser.parse(json, 3)
105
- when 7..8
108
+ when 7..9
106
109
  CharacterListInfoParser.parse(json, 4)
107
110
  else
108
111
  raise 'unsupported API version'
@@ -115,7 +118,21 @@ module AdmiralStatsParser
115
118
  when 1
116
119
  raise 'API version 1 does not support equip list info'
117
120
  when 2..8
118
- EquipListInfoParser.parse(json)
121
+ EquipListInfoParser.parse(json, 1)
122
+ when 9
123
+ EquipListInfoParser.parse(json, 2)
124
+ else
125
+ raise 'unsupported API version'
126
+ end
127
+ end
128
+
129
+ # 装備一覧をパースして、最大装備保有数のみを取得します。
130
+ def self.parse_max_slot_num(json, api_version)
131
+ case api_version
132
+ when 1..8
133
+ EquipListInfoParser.parse_max_slot_num(json, 1)
134
+ when 9
135
+ EquipListInfoParser.parse_max_slot_num(json, 2)
119
136
  else
120
137
  raise 'unsupported API version'
121
138
  end
@@ -128,7 +145,7 @@ module AdmiralStatsParser
128
145
  raise "API version #{api_version} does not support event info"
129
146
  when 4..6
130
147
  EventInfoParser.parse(json, 1)
131
- when 7..8
148
+ when 7..9
132
149
  EventInfoParser.parse(json, 2)
133
150
  else
134
151
  raise 'unsupported API version'
@@ -140,7 +157,7 @@ module AdmiralStatsParser
140
157
  case api_version
141
158
  when 1..3
142
159
  raise "API version #{api_version} does not support event info"
143
- when 4..8
160
+ when 4..9
144
161
  {
145
162
  opened: EventInfoParser.opened?(event_info_list, level, period),
146
163
  all_cleared: EventInfoParser.all_cleared?(event_info_list, level, period),
@@ -161,7 +178,7 @@ module AdmiralStatsParser
161
178
  raise "API version #{api_version} does not support blueprint list info"
162
179
  when 7
163
180
  BlueprintListInfoParser.parse(json, 1)
164
- when 8
181
+ when 8..9
165
182
  BlueprintListInfoParser.parse(json, 2)
166
183
  else
167
184
  raise 'unsupported API version'
@@ -10,15 +10,49 @@ class EquipListInfoParser
10
10
  img: String,
11
11
  }
12
12
 
13
- def self.parse(json)
14
- items_array = JSON.parse(json)
13
+ # 装備一覧のみをパースした結果を返します。
14
+ def self.parse(json, api_version)
15
+ case api_version
16
+ when 1
17
+ # 最初のバージョンには、装備情報の配列のみが入っている
18
+ equip_list = JSON.parse(json)
19
+ unless equip_list.is_a?(Array)
20
+ raise 'json is not an Array'
21
+ end
22
+
23
+ parse_equip_list(equip_list)
24
+ when 2
25
+ # 第2のバージョンには、連想配列が入っている
26
+ info = JSON.parse(json)
27
+ unless info.is_a?(Hash)
28
+ raise 'json is not a Hash'
29
+ end
15
30
 
16
- unless items_array.is_a?(Array)
17
- raise 'json is not an Array'
31
+ parse_equip_list(info['equipList'])
18
32
  end
33
+ end
34
+
35
+ # 最大装備保有数のみをパースした結果を返します。
36
+ def self.parse_max_slot_num(json, api_version)
37
+ case api_version
38
+ when 1
39
+ # 最大装備保有数の拡張に対応する前なので、常に 500
40
+ 500
41
+ when 2
42
+ info = JSON.parse(json)
43
+ unless info.is_a?(Hash)
44
+ raise 'json is not a Hash'
45
+ end
46
+ info['maxSlotNum']
47
+ end
48
+ end
49
+
50
+ private
19
51
 
52
+ # version 1 の配列、および version 2 の equipList キーの値を受け取り、その結果を EquipListInfo[] に変換して返します。
53
+ def self.parse_equip_list(equip_list)
20
54
  results = []
21
- items_array.each do |items|
55
+ equip_list.each do |items|
22
56
  result = EquipListInfo.new
23
57
 
24
58
  MANDATORY_KEYS.each do |key, key_class|
@@ -1,3 +1,3 @@
1
1
  module AdmiralStatsParser
2
- VERSION = "1.8.0"
2
+ VERSION = "1.9.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: admiral_stats_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masahiro Yoshizawa
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-21 00:00:00.000000000 Z
11
+ date: 2017-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler