admiral_stats_parser 1.7.0 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
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
|