@@ -11,36 +11,33 @@ import okhttp3.Request
1111
1212class GgApi2Client (
1313 private val httpClient : OkHttpClient ,
14- private val objectMapper : ObjectMapper ,
15- apiUrl : String
14+ private val objectMapper : ObjectMapper
1615) {
1716
18- // http://api2.goodgame.ru/apigility/documentation/Goodgame-v2
19-
20- private val apiUrl = apiUrl.removeSuffix(" /" )
17+ private companion object {
18+ // Documentation: https://api2.goodgame.ru/apigility/documentation/Goodgame-v2
19+ const val apiUrl = " https://api2.goodgame.ru/v2"
20+ }
2121
22- /* * @return viewers count for only a goodgame player. */
22+ /* * @return viewers count for a goodgame video player. */
2323 suspend fun requestViewersCount (channelName : String ): Int {
2424 val request = Request .Builder ()
2525 .get()
2626 .url(" $apiUrl /streams/$channelName " )
2727 .header(" Accept" , " application/vnd.goodgame.v2+json" )
2828 .build()
2929
30- val response = httpClient.newCall(request).await()
31-
32- if (response.code != 200 ) throw UnexpectedResponseCodeException (response.code)
33- val responseBody = response.body ? : throw UnexpectedResponseException (" null body" )
34- val responseNode = objectMapper.readTree(responseBody.string())
35-
36-
37- val streamLive = responseNode.get(" status" ).textValue() == " Live"
38- val ggPlayerLive = responseNode.get(" is_broadcast" ).booleanValue()
30+ val response = httpClient.newCall(request).await().use { response ->
31+ if (response.code != 200 ) throw UnexpectedResponseCodeException (response.code)
32+ val responseBody = response.body ? : throw UnexpectedResponseException (" null body" )
33+ objectMapper.readValue(responseBody.charStream(), StreamResponse ::class .java)
34+ }
3935
40- if (! streamLive) throw ChannelOfflineException (GOODGAME , channelName)
41- if (! ggPlayerLive) return 0
36+ if (response.status != " Live" ) {
37+ throw ChannelOfflineException (GOODGAME , channelName)
38+ }
4239
43- return responseNode.get( " player_viewers " ).asInt()
40+ return response.playerViewers
4441 }
4542
4643}
0 commit comments