admiral_stats_parser 1.7.0 → 1.8.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e127fced6bcbd3b3b30fc503155a7eecb737cdbf
|
4
|
+
data.tar.gz: bce717d8e702a710a8f67c1dd7b593977636db5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 699296f94e500e263f7859b4e9afcb2c02af3e87e606b07f6f1db74f2298cc6ddfe4823594f3dfdd2dd6a9aa6aa91496f30a09fc292fe20e0c4cbefd7becfb10
|
7
|
+
data.tar.gz: 20ae2987ada2b1026d5ead9769ee4940dff1422a9997fab2297025573f50ca94448cb4b13cc0db02e7002ac3c856d546f8f5f0125d52010ad2fe38d8db5683dd
|
data/README.md
CHANGED
@@ -62,7 +62,8 @@ AdmiralStatsParser は、以下の API version をサポートしています。
|
|
62
62
|
| 4 | 2016-10-27 〜 2016-12-20 |
|
63
63
|
| 5 | 2016-12-21 〜 2017-02-13 |
|
64
64
|
| 6 | 2017-02-14 〜 2017-04-25 |
|
65
|
-
| 7 | 2017-04-26 〜 |
|
65
|
+
| 7 | 2017-04-26 〜 2017-05-31(第2回イベントの終了日) |
|
66
|
+
| 8 | 2017-06-01 〜 |
|
66
67
|
|
67
68
|
各 API version でパースできる JSON の種類は以下の通りです。また、同じ情報でも、API version によって、含まれる情報量が異なる場合があります。その場合は Supported (1), Supported (2) のように記載して区別しています。
|
68
69
|
|
@@ -70,7 +71,7 @@ AdmiralStatsParser は、以下の API version をサポートしています。
|
|
70
71
|
|------------:|:-----|:-----|:-----|:-----|
|
71
72
|
| 1 | Supported (1) | Supported (1) | Supported (1) | Supported |
|
72
73
|
| 2 〜 6 | Supported (2) | Supported (2) | Supported (2) | Supported |
|
73
|
-
| 7
|
74
|
+
| 7 〜 8 | Supported (3) | Supported (3) | Supported (2) | Supported |
|
74
75
|
|
75
76
|
| API version | 艦娘一覧 | 装備一覧 | イベント海域情報 |
|
76
77
|
|------------:|:-----|:-----|:-----|
|
@@ -79,7 +80,13 @@ AdmiralStatsParser は、以下の API version をサポートしています。
|
|
79
80
|
| 3 | Supported (2) | Supported | Unsupported |
|
80
81
|
| 4 | Supported (2) | Supported | Supported (1) |
|
81
82
|
| 5 〜 6 | Supported (3) | Supported | Supported (1) |
|
82
|
-
| 7
|
83
|
+
| 7 〜 8 | Supported (4) | Supported | Supported (2) |
|
84
|
+
|
85
|
+
| API version | 改装設計図一覧 |
|
86
|
+
|------------:|:-----|
|
87
|
+
| 1 〜 6 | Unsupported |
|
88
|
+
| 7 | Supported (1) |
|
89
|
+
| 8 | Supported (2) |
|
83
90
|
|
84
91
|
## Development
|
85
92
|
|
data/lib/admiral_stats_parser.rb
CHANGED
@@ -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
|
15
|
+
return 8
|
16
16
|
end
|
17
17
|
|
18
18
|
# エクスポート時刻を元に、API バージョンを推測して返します。
|
@@ -35,6 +35,9 @@ module AdmiralStatsParser
|
|
35
35
|
# version 7 の開始日
|
36
36
|
return 6 if exported_at < Time.parse('2017-04-26T07:00:00+0900')
|
37
37
|
|
38
|
+
# version 8 の開始日
|
39
|
+
return 7 if exported_at < Time.parse('2017-06-01T07:00:00+0900')
|
40
|
+
|
38
41
|
return self.get_latest_api_version
|
39
42
|
end
|
40
43
|
|
@@ -45,7 +48,7 @@ module AdmiralStatsParser
|
|
45
48
|
PersonalBasicInfoParser.parse(json, 1)
|
46
49
|
when 2..6
|
47
50
|
PersonalBasicInfoParser.parse(json, 2)
|
48
|
-
when 7
|
51
|
+
when 7..8
|
49
52
|
PersonalBasicInfoParser.parse(json, 3)
|
50
53
|
else
|
51
54
|
raise 'unsupported API version'
|
@@ -59,7 +62,7 @@ module AdmiralStatsParser
|
|
59
62
|
AreaCaptureInfoParser.parse(json, 1)
|
60
63
|
when 2..6
|
61
64
|
AreaCaptureInfoParser.parse(json, 2)
|
62
|
-
when 7
|
65
|
+
when 7..8
|
63
66
|
AreaCaptureInfoParser.parse(json, 3)
|
64
67
|
else
|
65
68
|
raise 'unsupported API version'
|
@@ -71,7 +74,7 @@ module AdmiralStatsParser
|
|
71
74
|
case api_version
|
72
75
|
when 1
|
73
76
|
TcBookInfoParser.parse(json, 1)
|
74
|
-
when 2..
|
77
|
+
when 2..8
|
75
78
|
TcBookInfoParser.parse(json, 2)
|
76
79
|
else
|
77
80
|
raise 'unsupported API version'
|
@@ -81,7 +84,7 @@ module AdmiralStatsParser
|
|
81
84
|
# 装備図鑑をパースします。
|
82
85
|
def self.parse_equip_book_info(json, api_version)
|
83
86
|
case api_version
|
84
|
-
when 1..
|
87
|
+
when 1..8
|
85
88
|
EquipBookInfoParser.parse(json)
|
86
89
|
else
|
87
90
|
raise 'unsupported API version'
|
@@ -99,7 +102,7 @@ module AdmiralStatsParser
|
|
99
102
|
CharacterListInfoParser.parse(json, 2)
|
100
103
|
when 5..6
|
101
104
|
CharacterListInfoParser.parse(json, 3)
|
102
|
-
when 7
|
105
|
+
when 7..8
|
103
106
|
CharacterListInfoParser.parse(json, 4)
|
104
107
|
else
|
105
108
|
raise 'unsupported API version'
|
@@ -111,7 +114,7 @@ module AdmiralStatsParser
|
|
111
114
|
case api_version
|
112
115
|
when 1
|
113
116
|
raise 'API version 1 does not support equip list info'
|
114
|
-
when 2..
|
117
|
+
when 2..8
|
115
118
|
EquipListInfoParser.parse(json)
|
116
119
|
else
|
117
120
|
raise 'unsupported API version'
|
@@ -125,7 +128,7 @@ module AdmiralStatsParser
|
|
125
128
|
raise "API version #{api_version} does not support event info"
|
126
129
|
when 4..6
|
127
130
|
EventInfoParser.parse(json, 1)
|
128
|
-
when 7
|
131
|
+
when 7..8
|
129
132
|
EventInfoParser.parse(json, 2)
|
130
133
|
else
|
131
134
|
raise 'unsupported API version'
|
@@ -137,7 +140,7 @@ module AdmiralStatsParser
|
|
137
140
|
case api_version
|
138
141
|
when 1..3
|
139
142
|
raise "API version #{api_version} does not support event info"
|
140
|
-
when 4..
|
143
|
+
when 4..8
|
141
144
|
{
|
142
145
|
opened: EventInfoParser.opened?(event_info_list, level, period),
|
143
146
|
all_cleared: EventInfoParser.all_cleared?(event_info_list, level, period),
|
@@ -158,6 +161,8 @@ module AdmiralStatsParser
|
|
158
161
|
raise "API version #{api_version} does not support blueprint list info"
|
159
162
|
when 7
|
160
163
|
BlueprintListInfoParser.parse(json, 1)
|
164
|
+
when 8
|
165
|
+
BlueprintListInfoParser.parse(json, 2)
|
161
166
|
else
|
162
167
|
raise 'unsupported API version'
|
163
168
|
end
|
@@ -23,6 +23,9 @@ class BlueprintListInfo
|
|
23
23
|
# 改装設計図の総数
|
24
24
|
attr_accessor :blueprint_total_num
|
25
25
|
|
26
|
+
# 有効期限切れの警告を表示するか (From API version 8)
|
27
|
+
attr_accessor :exists_warning_for_expiration
|
28
|
+
|
26
29
|
# 有効期限の詳細
|
27
30
|
attr_accessor :expiration_date_list
|
28
31
|
|
@@ -36,5 +39,8 @@ class BlueprintListInfo
|
|
36
39
|
|
37
40
|
# 上記の有効期限を持つ改装設計図の枚数
|
38
41
|
attr_accessor :blueprint_num
|
42
|
+
|
43
|
+
# 今月で有効期限切れかどうか (From API version 8)
|
44
|
+
attr_accessor :expire_this_month
|
39
45
|
end
|
40
46
|
end
|
@@ -13,11 +13,29 @@ class BlueprintListInfoParser
|
|
13
13
|
blueprint_total_num: Integer,
|
14
14
|
expiration_date_list: :expiration_date_list,
|
15
15
|
},
|
16
|
+
2 => {
|
17
|
+
ship_class_id: Integer,
|
18
|
+
ship_class_index: Integer,
|
19
|
+
ship_sort_no: Integer,
|
20
|
+
ship_type: String,
|
21
|
+
ship_name: String,
|
22
|
+
status_img: String,
|
23
|
+
blueprint_total_num: Integer,
|
24
|
+
exists_warning_for_expiration: :boolean,
|
25
|
+
expiration_date_list: :expiration_date_list,
|
26
|
+
}
|
16
27
|
}
|
17
28
|
|
18
29
|
EXPIRATION_DATE_MANDATORY_KEYS = {
|
19
|
-
|
20
|
-
|
30
|
+
1 => {
|
31
|
+
expiration_date: Integer,
|
32
|
+
blueprint_num: Integer,
|
33
|
+
},
|
34
|
+
2 => {
|
35
|
+
expiration_date: Integer,
|
36
|
+
blueprint_num: Integer,
|
37
|
+
expire_this_month: :boolean,
|
38
|
+
}
|
21
39
|
}
|
22
40
|
|
23
41
|
def self.parse(json, api_version)
|
@@ -41,13 +59,20 @@ class BlueprintListInfoParser
|
|
41
59
|
# 有効期限の情報を格納するために、特別な処理を追加
|
42
60
|
if key_class == :expiration_date_list
|
43
61
|
result.instance_variable_set(
|
44
|
-
"@#{key.to_s}", BlueprintListInfoParser.parse_expiration_date_list(items[camel_case_key]))
|
62
|
+
"@#{key.to_s}", BlueprintListInfoParser.parse_expiration_date_list(items[camel_case_key], api_version))
|
45
63
|
next
|
46
64
|
end
|
47
65
|
|
48
66
|
# 結果のクラスが合わなければエラー
|
49
|
-
|
50
|
-
|
67
|
+
# ruby には Boolean クラスがないので、そこだけ特別な処理を用意する
|
68
|
+
if key_class == :boolean
|
69
|
+
unless [true, false].include?(items[camel_case_key])
|
70
|
+
raise "Mandatory key #{key} is not boolean"
|
71
|
+
end
|
72
|
+
else
|
73
|
+
unless items[camel_case_key].is_a?(key_class)
|
74
|
+
raise "Mandatory key #{key} is not class #{key_class}"
|
75
|
+
end
|
51
76
|
end
|
52
77
|
|
53
78
|
result.instance_variable_set("@#{key.to_s}", items[camel_case_key])
|
@@ -59,13 +84,13 @@ class BlueprintListInfoParser
|
|
59
84
|
results
|
60
85
|
end
|
61
86
|
|
62
|
-
def self.parse_expiration_date_list(expiration_date_list)
|
87
|
+
def self.parse_expiration_date_list(expiration_date_list, api_version)
|
63
88
|
results = []
|
64
89
|
|
65
90
|
expiration_date_list.each do |ed|
|
66
91
|
result = BlueprintListInfo::ExpirationDate.new
|
67
92
|
|
68
|
-
EXPIRATION_DATE_MANDATORY_KEYS.each do |key, key_class|
|
93
|
+
EXPIRATION_DATE_MANDATORY_KEYS[api_version].each do |key, key_class|
|
69
94
|
# 必須のキーが含まれなければエラー
|
70
95
|
camel_case_key = key.to_s.split('_').inject([]){ |buffer,e| buffer.push(buffer.empty? ? e : e.capitalize) }.join
|
71
96
|
unless ed.include?(camel_case_key)
|
@@ -73,8 +98,15 @@ class BlueprintListInfoParser
|
|
73
98
|
end
|
74
99
|
|
75
100
|
# 結果のクラスが合わなければエラー
|
76
|
-
|
77
|
-
|
101
|
+
# ruby には Boolean クラスがないので、そこだけ特別な処理を用意する
|
102
|
+
if key_class == :boolean
|
103
|
+
unless [true, false].include?(ed[camel_case_key])
|
104
|
+
raise "Mandatory key #{key} is not boolean"
|
105
|
+
end
|
106
|
+
else
|
107
|
+
unless ed[camel_case_key].is_a?(key_class)
|
108
|
+
raise "Mandatory key #{key} is not class #{key_class}"
|
109
|
+
end
|
78
110
|
end
|
79
111
|
|
80
112
|
result.instance_variable_set("@#{key.to_s}", ed[camel_case_key])
|
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.
|
4
|
+
version: 1.8.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-
|
11
|
+
date: 2017-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|