admiral_stats_parser 1.15.1 → 1.17.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: 9ea59c2d245a42dc8f39a547f0e8a9dcaa11eb69
4
- data.tar.gz: 157a5e8d6041955e5bf6ab51ae0906e05edd4779
3
+ metadata.gz: a8a532fc6d719dca51bff3ac91ee7e8bb9897ee6
4
+ data.tar.gz: 49bb96a6f5fa6ce7dc5b2ebd46a671cc5d563689
5
5
  SHA512:
6
- metadata.gz: 1047dbcda7963215ad882296c5c1a379f8a48a444e1000e4587c62d0635ce3b01bd46b73af893e49125e9718638d71908753649eb7aa7183fe0c19d7902d784d
7
- data.tar.gz: 4fb806706a9328465a9539bcbdce05bee1967f83d274afe70e6853489e4b576f9d4c2b30cab276ba24256ea30c025031311b6a27c25cdbad1ed7badeafea86a6
6
+ metadata.gz: a8a5916ec9b77b552bb39096d2b2999a5b6db7c2d4e3aa4ac0e363454f94ea26e18bea92ca6a501f7e5c5a6690a79e567d1e426512435f262a03581f33c49230
7
+ data.tar.gz: d6f27c93cd393546cac9ac983f9483782af798d95be97c1e53ec73191708999b2c86571792c808f158c1360519443e9c659070cbb340a2c9f04d9b33537f8452
data/README.md CHANGED
@@ -73,7 +73,9 @@ AdmiralStatsParser は、以下の API version をサポートしています。
73
73
  | 12 | 2018-02-16 (ケッコンカッコカリの実装日) 〜 2018-04-18 |
74
74
  | 13 | 2018-04-19 (第4回イベントの EO 開始日) 〜 2018-05-13 |
75
75
  | 14 | 2018-05-14 (大型艦建造の実装日) 〜 2018-07-23 |
76
- | 15 | 2018-07-24 (VERSION B のリリース日) 〜 |
76
+ | 15 | 2018-07-24 (VERSION B のリリース日) 〜 2019-05-08 |
77
+ | 16 | 2019-05-09 (三周年記念キャンペーンの開始日) 〜 2019-07-03 |
78
+ | 17 | 2019-07-04 (VERSION B REVISION 6 のリリース日 〜 |
77
79
 
78
80
  各 API version でパースできる JSON の種類は以下の通りです。また、同じ情報でも、API version によって、含まれる情報量が異なる場合があります。その場合は Supported (1), Supported (2) のように記載して区別しています。
79
81
 
@@ -85,6 +87,7 @@ AdmiralStatsParser は、以下の API version をサポートしています。
85
87
  | 11 | Supported (3) | Supported (4) | Supported (2) | Supported |
86
88
  | 12 〜 13 | Supported (3) | Supported (4) | Supported (3) | Supported |
87
89
  | 14 〜 15 | Supported (3) | Supported (4) | Supported (4) | Supported |
90
+ | 17 | Supported (3) | Supported (4) | Supported (5) | Supported |
88
91
 
89
92
  | API version | 艦娘一覧 | 装備一覧 | イベント海域情報 |
90
93
  |------------:|:-----|:-----|:-----|
@@ -97,14 +100,14 @@ AdmiralStatsParser は、以下の API version をサポートしています。
97
100
  | 9 〜 11 | Supported (4) | Supported (2) | Supported (2) |
98
101
  | 12 | Supported (5) | Supported (2) | Supported (2) |
99
102
  | 13 | Supported (5) | Supported (2) | Supported (3) |
100
- | 14 〜 15 | Supported (6) | Supported (2) | Supported (3) |
103
+ | 14 〜 17 | Supported (6) | Supported (2) | Supported (3) |
101
104
 
102
105
  | API version | 改装設計図一覧 | 輸送イベント海域情報 |
103
106
  |------------:|:-----|:-----|
104
- | 1 〜 6 | Unsupported | Unsupported |
105
- | 7 | Supported (1) | Unsupported |
106
- | 8 〜 14 | Supported (2) | Unsupported |
107
- | 15 | Supported (2) | Supported (1) |
107
+ | 1 〜 6 | Unsupported | Unsupported |
108
+ | 7 | Supported (1) | Unsupported |
109
+ | 8 〜 14 | Supported (2) | Unsupported |
110
+ | 15 〜 17 | Supported (2) | Supported (1) |
108
111
 
109
112
  ## Development
110
113
 
@@ -54,6 +54,17 @@ class TcBookInfoParser
54
54
  lv: Integer,
55
55
  status_img: Array,
56
56
  },
57
+ 5 => {
58
+ book_no: Integer,
59
+ ship_class: String,
60
+ ship_type: String,
61
+ ship_name: String,
62
+ card_index_img: String,
63
+ card_list: :card_list,
64
+ variation_num: Integer,
65
+ acquire_num: Integer,
66
+ lv: Integer,
67
+ },
57
68
  }
58
69
 
59
70
  OPTIONAL_KEYS = {
@@ -68,6 +79,21 @@ class TcBookInfoParser
68
79
  is_married: Array,
69
80
  married_img: Array,
70
81
  },
82
+ 5 => {
83
+ ship_class_index: Integer,
84
+ is_married: Array,
85
+ married_img: Array,
86
+ },
87
+ }
88
+
89
+ CARD_LIST_MANDATORY_KEYS = {
90
+ 5 => {
91
+ priority: Integer,
92
+ card_img_list: Array,
93
+ status_img: Array,
94
+ variation_num_in_page: Integer,
95
+ acquire_num_in_page: Integer,
96
+ },
71
97
  }
72
98
 
73
99
  def self.parse(json, api_version)
@@ -88,6 +114,13 @@ class TcBookInfoParser
88
114
  raise "Mandatory key #{key} does not exist"
89
115
  end
90
116
 
117
+ # # 有効期限の情報を格納するために、特別な処理を追加
118
+ if key_class == :card_list
119
+ result.instance_variable_set(
120
+ "@#{key.to_s}", TcBookInfoParser.parse_card_list(result, items[camel_case_key], api_version))
121
+ next
122
+ end
123
+
91
124
  # 結果のクラスが合わなければエラー
92
125
  unless items[camel_case_key].is_a?(key_class)
93
126
  raise "Mandatory key #{key} is not class #{key_class}"
@@ -114,4 +147,63 @@ class TcBookInfoParser
114
147
 
115
148
  results
116
149
  end
150
+
151
+ def self.parse_card_list(tc_book_info, card_list, api_version)
152
+ results = []
153
+
154
+ card_list.each do |c|
155
+ result = TcBookInfoParser::CardList.new
156
+
157
+ CARD_LIST_MANDATORY_KEYS[api_version].each do |key, key_class|
158
+ # 必須のキーが含まれなければエラー
159
+ camel_case_key = key.to_s.split('_').inject([]){ |buffer,e| buffer.push(buffer.empty? ? e : e.capitalize) }.join
160
+ unless c.include?(camel_case_key)
161
+ raise "Mandatory key #{key} does not exist"
162
+ end
163
+
164
+ # 結果のクラスが合わなければエラー
165
+ unless c[camel_case_key].is_a?(key_class)
166
+ raise "Optional key #{key} is not class #{key_class}"
167
+ end
168
+
169
+ result.instance_variable_set("@#{key.to_s}", c[camel_case_key])
170
+ end
171
+
172
+ results << result
173
+ end
174
+
175
+ case results.size
176
+ when 0
177
+ # 未入手の場合
178
+ tc_book_info.card_img_list = []
179
+ tc_book_info.status_img = []
180
+ when 1
181
+ tc_book_info.card_img_list = results[0].card_img_list
182
+ tc_book_info.status_img = results[0].status_img
183
+ else
184
+ raise "Number of entry in card_list is #{results.size}"
185
+ end
186
+ end
187
+
188
+ class CardList
189
+ # 不明
190
+ # いまは配列中の要素が1個しかないが、これが2個以上になったときに意味が出てくる?
191
+ attr_accessor :priority
192
+
193
+ # 取得済み画像のファイル名
194
+ # Array
195
+ # 未取得の場合は、空の Array
196
+ attr_accessor :card_img_list
197
+
198
+ # 艦娘のステータス画像(横長の画像)のファイル名 (From API version 2)
199
+ # Array
200
+ # 未取得の場合は、空の Array
201
+ attr_accessor :status_img
202
+
203
+ # 不明
204
+ attr_accessor :variation_num_in_page
205
+
206
+ # 不明
207
+ attr_accessor :acquire_num_in_page
208
+ end
117
209
  end
@@ -1,3 +1,3 @@
1
1
  module AdmiralStatsParser
2
- VERSION = '1.15.1'
2
+ VERSION = '1.17.0'
3
3
  end
@@ -13,7 +13,7 @@ require 'admiral_stats_parser/parser/cop_info_parser'
13
13
  module AdmiralStatsParser
14
14
  # 最新の API バージョンを返します。
15
15
  def self.get_latest_api_version
16
- return 15
16
+ return 17
17
17
  end
18
18
 
19
19
  # エクスポート時刻を元に、API バージョンを推測して返します。
@@ -60,6 +60,12 @@ module AdmiralStatsParser
60
60
  # version 15 の開始日
61
61
  return 14 if exported_at < Time.parse('2018-07-24T07:00:00+0900')
62
62
 
63
+ # version 16 の開始日
64
+ return 15 if exported_at < Time.parse('2019-05-09T07:00:00+0900')
65
+
66
+ # version 17 の開始日
67
+ return 16 if exported_at < Time.parse('2019-07-04T07:00:00+0900')
68
+
63
69
  return self.get_latest_api_version
64
70
  end
65
71
 
@@ -70,7 +76,7 @@ module AdmiralStatsParser
70
76
  PersonalBasicInfoParser.parse(json, 1)
71
77
  when 2..6
72
78
  PersonalBasicInfoParser.parse(json, 2)
73
- when 7..15
79
+ when 7..17
74
80
  PersonalBasicInfoParser.parse(json, 3)
75
81
  else
76
82
  raise 'unsupported API version'
@@ -86,7 +92,7 @@ module AdmiralStatsParser
86
92
  AreaCaptureInfoParser.parse(json, 2)
87
93
  when 7..10
88
94
  AreaCaptureInfoParser.parse(json, 3)
89
- when 11..15
95
+ when 11..17
90
96
  AreaCaptureInfoParser.parse(json, 4)
91
97
  else
92
98
  raise 'unsupported API version'
@@ -102,8 +108,10 @@ module AdmiralStatsParser
102
108
  TcBookInfoParser.parse(json, 2)
103
109
  when 12..13
104
110
  TcBookInfoParser.parse(json, 3)
105
- when 14..15
111
+ when 14..16
106
112
  TcBookInfoParser.parse(json, 4)
113
+ when 17
114
+ TcBookInfoParser.parse(json, 5)
107
115
  else
108
116
  raise 'unsupported API version'
109
117
  end
@@ -112,7 +120,7 @@ module AdmiralStatsParser
112
120
  # 装備図鑑をパースします。
113
121
  def self.parse_equip_book_info(json, api_version)
114
122
  case api_version
115
- when 1..15
123
+ when 1..17
116
124
  EquipBookInfoParser.parse(json)
117
125
  else
118
126
  raise 'unsupported API version'
@@ -134,7 +142,7 @@ module AdmiralStatsParser
134
142
  CharacterListInfoParser.parse(json, 4)
135
143
  when 12..13
136
144
  CharacterListInfoParser.parse(json, 5)
137
- when 14..15
145
+ when 14..17
138
146
  CharacterListInfoParser.parse(json, 6)
139
147
  else
140
148
  raise 'unsupported API version'
@@ -148,7 +156,7 @@ module AdmiralStatsParser
148
156
  raise 'API version 1 does not support equip list info'
149
157
  when 2..8
150
158
  EquipListInfoParser.parse(json, 1)
151
- when 9..15
159
+ when 9..17
152
160
  EquipListInfoParser.parse(json, 2)
153
161
  else
154
162
  raise 'unsupported API version'
@@ -160,7 +168,7 @@ module AdmiralStatsParser
160
168
  case api_version
161
169
  when 1..8
162
170
  EquipListInfoParser.parse_max_slot_num(json, 1)
163
- when 9..15
171
+ when 9..17
164
172
  EquipListInfoParser.parse_max_slot_num(json, 2)
165
173
  else
166
174
  raise 'unsupported API version'
@@ -176,7 +184,7 @@ module AdmiralStatsParser
176
184
  EventInfoParser.parse(json, 1)
177
185
  when 7..12
178
186
  EventInfoParser.parse(json, 2)
179
- when 13..15
187
+ when 13..17
180
188
  EventInfoParser.parse(json, 3)
181
189
  else
182
190
  raise 'unsupported API version'
@@ -188,7 +196,7 @@ module AdmiralStatsParser
188
196
  case api_version
189
197
  when 1..3
190
198
  raise "API version #{api_version} does not support event info"
191
- when 4..15
199
+ when 4..17
192
200
  {
193
201
  opened: EventInfoParser.opened?(event_info_list, level, period),
194
202
  all_cleared: EventInfoParser.all_cleared?(event_info_list, level, period),
@@ -209,7 +217,7 @@ module AdmiralStatsParser
209
217
  raise "API version #{api_version} does not support blueprint list info"
210
218
  when 7
211
219
  BlueprintListInfoParser.parse(json, 1)
212
- when 8..15
220
+ when 8..17
213
221
  BlueprintListInfoParser.parse(json, 2)
214
222
  else
215
223
  raise 'unsupported API version'
@@ -221,7 +229,7 @@ module AdmiralStatsParser
221
229
  case api_version
222
230
  when 1..14
223
231
  raise "API version #{api_version} does not support cop info"
224
- when 15
232
+ when 15..17
225
233
  CopInfoParser.parse(json, 1)
226
234
  else
227
235
  raise 'unsupported API version'
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.15.1
4
+ version: 1.17.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: 2018-10-02 00:00:00.000000000 Z
11
+ date: 2019-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler