File tree Expand file tree Collapse file tree 12 files changed +651
-86
lines changed
main/kotlin/com/github/sylux6/kongou
test/kotlin/com/github/sylux6/kongou Expand file tree Collapse file tree 12 files changed +651
-86
lines changed Original file line number Diff line number Diff line change 1
1
# Kongou
2
- (WIP) A Kotlin wrapper for Azur Lane JSON
2
+ A Kotlin wrapper for Azur Lane JSON
Original file line number Diff line number Diff line change 1
1
plugins {
2
2
`build- scan`
3
- kotlin(" jvm" ) version " 1.3.60 "
3
+ kotlin(" jvm" ) version " 1.3.61 "
4
4
}
5
5
6
6
group = " com.github.sylux6.kongou"
@@ -16,6 +16,7 @@ dependencies {
16
16
testImplementation(" org.junit.jupiter:junit-jupiter:5.5.2" )
17
17
implementation(" com.github.kittinunf.fuel:fuel:2.2.1" )
18
18
implementation(" com.github.kittinunf.fuel:fuel-json:2.2.1" )
19
+ implementation(" org.json" , " json" , " 20190722" )
19
20
}
20
21
21
22
tasks.test {
Original file line number Diff line number Diff line change
1
+ package com.github.sylux6.kongou.database
2
+
3
+ import com.github.kittinunf.fuel.httpGet
4
+ import com.github.kittinunf.fuel.json.responseJson
5
+ import com.github.sylux6.kongou.internal.entities.Ship
6
+ import com.github.sylux6.kongou.internal.exceptions.DatabaseException
7
+ import com.github.sylux6.kongou.utils.ShipParser
8
+ import org.json.JSONObject
9
+
10
+ /* *
11
+ * JSON deserializer object
12
+ */
13
+ object Haruna {
14
+
15
+ private lateinit var database: JSONObject
16
+ var shipsById = HashMap <String , Ship >()
17
+ var shipsByName = HashMap <String , Ship >()
18
+
19
+ init {
20
+ reloadDatabase()
21
+ }
22
+
23
+ fun loadJSON (): JSONObject {
24
+ val (_, response, result) = HarunaInfo .JSON_SOURCE
25
+ .httpGet()
26
+ .responseJson()
27
+ return if (response.statusCode == 200 ) {
28
+ result.get().obj()
29
+ } else {
30
+ throw DatabaseException (" Could not load database: (error ${response.statusCode} )" )
31
+ }
32
+ }
33
+
34
+ fun reloadDatabase () {
35
+ try {
36
+ database = loadJSON()
37
+ for (shipId in database.keySet()) {
38
+ val ship = ShipParser .jsonToShip(database.getJSONObject(shipId), shipId)
39
+ shipsById[ship.id] = ship
40
+ shipsByName[ship.names.en] = ship
41
+ }
42
+ } catch (e: Exception ) {
43
+ throw DatabaseException (" Could not reload database: (${e.message} )" )
44
+ }
45
+ }
46
+ }
Original file line number Diff line number Diff line change 1
- package com.github.sylux6.kongou.json
1
+ package com.github.sylux6.kongou.database
2
2
3
3
/* *
4
4
* JSON deserializer info
Original file line number Diff line number Diff line change 1
1
package com.github.sylux6.kongou.internal.entities
2
2
3
+ /* *
4
+ * Stars of a ship
5
+ * @param stars
6
+ * @param value
7
+ */
3
8
data class Stars (
4
9
val stars : String ,
5
10
val value : Int
6
11
)
7
12
13
+ /* *
14
+ * Details about a skin of a ship
15
+ * @param enClient
16
+ * @param cnClient
17
+ * @param jpClient
18
+ * @param obtainedFrom
19
+ * @param cost
20
+ * @param isLive2D
21
+ */
8
22
data class SkinInfo (
23
+ val enClient : String ,
24
+ val cnClient : String ,
25
+ val jpClient : String ,
9
26
val obtainedFrom : String ,
10
- val live2D : Boolean
27
+ val cost : Int ,
28
+ val isLive2D : Boolean
11
29
)
12
30
31
+ /* *
32
+ * Skin of a ship
33
+ * @param image
34
+ * @param background
35
+ * @param name
36
+ * @param chibi
37
+ * @param info
38
+ */
13
39
data class Skin (
14
40
val image : String ,
15
- val background : String ,
41
+ val background : String? ,
16
42
val name : String ,
17
- val chibi : String ,
18
- val info : SkinInfo
43
+ val chibi : String? ,
44
+ val info : SkinInfo ?
19
45
)
20
46
47
+ /* *
48
+ * Names of a ship in different language
49
+ * @param jp japanese name
50
+ * @param kr korean name
51
+ * @param en english name
52
+ * @param cn chinese name
53
+ */
21
54
data class Name (
22
- val jp : String ,
23
- val kr : String ,
55
+ val jp : String? ,
56
+ val kr : String? ,
24
57
val en : String ,
25
- val cn : String
58
+ val cn : String?
26
59
)
27
60
61
+ /* *
62
+ * Stats details
63
+ * @param speed
64
+ * @param aviation
65
+ * @param health
66
+ * @param torpedo
67
+ * @param evasion
68
+ * @param luck
69
+ * @param armor
70
+ * @param reload
71
+ * @param antiAir
72
+ * @param oil
73
+ * @param accuracy
74
+ * @param antiSub
75
+ * @param firepower
76
+ */
28
77
data class StatsDetails (
29
- val speed : String ,
30
- val aviation : String ,
31
- val health : String ,
32
- val torpedo : String ,
33
- val evasion : String ,
34
- val luck : String ,
78
+ val speed : Int ,
79
+ val aviation : Int ,
80
+ val health : Int ,
81
+ val torpedo : Int ,
82
+ val evasion : Int ,
83
+ val luck : Int ,
35
84
val armor : String ,
36
- val reload : String ,
37
- val antiAir : String ,
38
- val oil : String ,
39
- val accuracy : String ,
40
- val antiSub : String ,
41
- val firepower : String
85
+ val reload : Int ,
86
+ val antiAir : Int ,
87
+ val oil : Int ,
88
+ val accuracy : Int ,
89
+ val antiSub : Int ,
90
+ val firepower : Int
42
91
)
43
92
93
+ /* *
94
+ * Base stats and stats of a ship at level 120, 100
95
+ * @param level120
96
+ * @param level100
97
+ * @param base
98
+ */
44
99
data class Stats (
45
100
val level120 : StatsDetails ,
46
101
val level100 : StatsDetails ,
47
102
val base : StatsDetails
48
103
)
49
104
105
+ /* *
106
+ * Url
107
+ * @param name
108
+ * @param url
109
+ */
110
+ data class Url (
111
+ val name : String ,
112
+ val url : String
113
+ )
114
+
115
+ /* *
116
+ * Miscellaneous info of a ship
117
+ * @param voice
118
+ * @param twitter
119
+ * @param artist
120
+ * @param web
121
+ * @param pixiv
122
+ */
50
123
data class Miscellaneous (
51
- val voice : String ,
52
- val twitter : String ,
53
- val artist : String ,
54
- val web : String ,
55
- val pixiv : String
124
+ val voice : String? ,
125
+ val twitter : Url ? ,
126
+ val artist : String? ,
127
+ val web : Url ? ,
128
+ val pixiv : Url ?
56
129
)
57
130
131
+ /* *
132
+ * Class representation of a ship
133
+ * @param thumbnail
134
+ * @param buildTime
135
+ * @param stars
136
+ * @param skins
137
+ * @param names
138
+ * @param nationality
139
+ * @param rarity
140
+ * @param stats
141
+ * @param wikiUrl
142
+ * @param id
143
+ * @param shipClass
144
+ * @param hullType
145
+ * @param misc
146
+ */
58
147
data class Ship (
59
- val thumbnail : String ,
60
- val buildTime : String ,
61
- val stars : Stars ,
62
- val skins : List <Skin >,
63
- val names : Name ,
64
- val nationality : String ,
65
- val stats : Stats ,
66
148
val wikiUrl : String ,
67
149
val id : String ,
150
+ val names : Name ,
68
151
val shipClass : String ,
152
+ val nationality : String ,
69
153
val hullType : String ,
70
- val misc : Miscellaneous
154
+ val thumbnail : String ,
155
+ val skins : List <Skin >,
156
+ val buildTime : String ,
157
+ val rarity : String ,
158
+ val stars : Stars ? ,
159
+ val stats : Stats ? ,
160
+ val misc : Miscellaneous ?
71
161
)
72
162
Original file line number Diff line number Diff line change 1
1
package com.github.sylux6.kongou.internal.exceptions
2
2
3
- class ApiException {
3
+ class ApiException ( s : String = " " ) : Exception(s) {
4
4
}
Original file line number Diff line number Diff line change
1
+ package com.github.sylux6.kongou.internal.exceptions
2
+
3
+ import java.lang.Exception
4
+
5
+ class DatabaseException (s : String = " " ) : Exception(s) {
6
+ }
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments