diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamgameserver/SteamGameServer.kt b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamgameserver/SteamGameServer.kt index f9b802bc..1d66e14a 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamgameserver/SteamGameServer.kt +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamgameserver/SteamGameServer.kt @@ -8,7 +8,6 @@ import `in`.dragonbra.javasteam.enums.EMsg import `in`.dragonbra.javasteam.enums.EResult import `in`.dragonbra.javasteam.enums.EServerFlags import `in`.dragonbra.javasteam.generated.MsgClientLogon -import `in`.dragonbra.javasteam.protobufs.steamclient.SteammessagesBase.CMsgIPAddress import `in`.dragonbra.javasteam.protobufs.steamclient.SteammessagesClientserverGameservers.CMsgGSServerType import `in`.dragonbra.javasteam.protobufs.steamclient.SteammessagesClientserverLogin.CMsgClientLogOff import `in`.dragonbra.javasteam.protobufs.steamclient.SteammessagesClientserverLogin.CMsgClientLogon @@ -18,11 +17,9 @@ import `in`.dragonbra.javasteam.steam.handlers.steamgameserver.callback.TicketAu import `in`.dragonbra.javasteam.steam.handlers.steamuser.callback.LoggedOnCallback import `in`.dragonbra.javasteam.steam.steamclient.callbackmgr.CallbackMsg import `in`.dragonbra.javasteam.steam.steamclient.callbacks.DisconnectedCallback -import `in`.dragonbra.javasteam.types.AsyncJobSingle import `in`.dragonbra.javasteam.types.SteamID import `in`.dragonbra.javasteam.util.HardwareUtils import `in`.dragonbra.javasteam.util.NetHelpers -import `in`.dragonbra.javasteam.util.NetHelpers.obfuscatePrivateIP import `in`.dragonbra.javasteam.util.Utils import `in`.dragonbra.javasteam.util.obfuscatePrivateIP import java.net.Inet6Address @@ -38,20 +35,19 @@ class SteamGameServer : ClientMsgHandler() { * The client should already have been connected at this point. * Results are return in a [LoggedOnCallback]. * @param details The details to use for logging on. - * @return The Job ID of the request. This can be used to fine the appropriate [LoggedOnCallback] * @throws IllegalArgumentException token is not set within [details]. */ @Throws(IllegalArgumentException::class) - fun logOn(details: LogOnDetails): AsyncJobSingle { - require(!details.token.isBlank()) { "LogOn requires a game server token to be set in 'details'." } - - val logon = ClientMsgProtobuf(CMsgClientLogon::class.java, EMsg.ClientLogonGameServer) + fun logOn(details: LogOnDetails) { + require(details.token.isNotBlank()) { "LogOn requires a game server token to be set in 'details'." } if (!client.isConnected) { - client.postCallback(LoggedOnCallback(EResult.NoConnection, logon.sourceJobID)) - return AsyncJobSingle(client, logon.sourceJobID) + client.postCallback(LoggedOnCallback(EResult.NoConnection)) + return } + val logon = ClientMsgProtobuf(CMsgClientLogon::class.java, EMsg.ClientLogonGameServer) + val gsId = SteamID(0, 0, client.universe, EAccountType.GameServer) logon.protoHeader.clientSessionid = 0 @@ -68,8 +64,6 @@ class SteamGameServer : ClientMsgHandler() { logon.body.gameServerToken = details.token client.send(logon) - - return AsyncJobSingle(client, logon.sourceJobID) } /** @@ -78,17 +72,17 @@ class SteamGameServer : ClientMsgHandler() { * Results are return in a [LoggedOnCallback]. * * @param appId The AppID served by this game server, or 0 for the default. - * @return The Job ID of the request. This can be used to fine the appropriate [LoggedOnCallback] */ @JvmOverloads - fun logOnAnonymous(appId: Int = 0): AsyncJobSingle { - val logon = ClientMsgProtobuf(CMsgClientLogon::class.java, EMsg.ClientLogonGameServer) - + fun logOnAnonymous(appId: Int = 0) { if (!client.isConnected) { - client.postCallback(LoggedOnCallback(EResult.NoConnection, logon.sourceJobID)) - return AsyncJobSingle(client, logon.sourceJobID) + client.postCallback(LoggedOnCallback(EResult.NoConnection)) + return } + // Was EMsg.ClientLogonGameServer, changed to match SK. + val logon = ClientMsgProtobuf(CMsgClientLogon::class.java, EMsg.ClientLogon) + val gsId = SteamID(0, 0, client.universe, EAccountType.AnonGameServer) logon.protoHeader.clientSessionid = 0 @@ -103,8 +97,6 @@ class SteamGameServer : ClientMsgHandler() { logon.body.machineId = ByteString.copyFrom(HardwareUtils.getMachineID()) client.send(logon) - - return AsyncJobSingle(client, logon.sourceJobID) } /** diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuser/SteamUser.kt b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuser/SteamUser.kt index fbe37795..9f383d02 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuser/SteamUser.kt +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuser/SteamUser.kt @@ -26,7 +26,6 @@ import `in`.dragonbra.javasteam.steam.handlers.steamuser.callback.WalletInfoCall import `in`.dragonbra.javasteam.steam.handlers.steamuser.callback.WebAPIUserNonceCallback import `in`.dragonbra.javasteam.steam.steamclient.callbackmgr.CallbackMsg import `in`.dragonbra.javasteam.steam.steamclient.callbacks.DisconnectedCallback -import `in`.dragonbra.javasteam.types.AsyncJobSingle import `in`.dragonbra.javasteam.types.SteamID import `in`.dragonbra.javasteam.util.HardwareUtils import `in`.dragonbra.javasteam.util.JavaSteamAddition @@ -57,22 +56,21 @@ class SteamUser : ClientMsgHandler() { * The client should already have been connected at this point. * Results are returned in a [LoggedOnCallback]. * @param details The details to use for logging on. - * @return The Job ID of the request. This can be used to find the appropriate [LoggedOnCallback]/ * @throws IllegalArgumentException Username or password are not set within [details]. */ @Throws(IllegalArgumentException::class) - fun logOn(details: LogOnDetails): AsyncJobSingle { + fun logOn(details: LogOnDetails) { if (details.username.isEmpty() || (details.password.isNullOrEmpty() && details.accessToken.isNullOrEmpty())) { throw IllegalArgumentException("LogOn requires a username and password or access token to be set in 'details'.") } - val logon = ClientMsgProtobuf(CMsgClientLogon::class.java, EMsg.ClientLogon) - if (!client.isConnected) { - client.postCallback(LoggedOnCallback(EResult.NoConnection, logon.sourceJobID)) - return AsyncJobSingle(client, logon.sourceJobID) + client.postCallback(LoggedOnCallback(EResult.NoConnection)) + return } + val logon = ClientMsgProtobuf(CMsgClientLogon::class.java, EMsg.ClientLogon) + val steamID = SteamID(details.accountID, details.accountInstance, client.universe, EAccountType.Individual) if (details.loginID != null) { @@ -144,8 +142,6 @@ class SteamUser : ClientMsgHandler() { } client.send(logon) - - return AsyncJobSingle(client, logon.sourceJobID) } /** @@ -153,17 +149,16 @@ class SteamUser : ClientMsgHandler() { * The client should already have been connected at this point. * Results are returned in a [LoggedOnCallback]. * @param details The details to use for logging on. - * @return The Job ID of the request. This can be used to find the appropriate [LoggedOnCallback] */ @JvmOverloads - fun logOnAnonymous(details: AnonymousLogOnDetails = AnonymousLogOnDetails()): AsyncJobSingle { - val logon = ClientMsgProtobuf(CMsgClientLogon::class.java, EMsg.ClientLogon) - + fun logOnAnonymous(details: AnonymousLogOnDetails = AnonymousLogOnDetails()) { if (!client.isConnected) { - client.postCallback(LoggedOnCallback(EResult.NoConnection, logon.sourceJobID)) - return AsyncJobSingle(client, logon.sourceJobID) + client.postCallback(LoggedOnCallback(EResult.NoConnection)) + return } + val logon = ClientMsgProtobuf(CMsgClientLogon::class.java, EMsg.ClientLogon) + val auId = SteamID(0, 0, client.universe, EAccountType.AnonUser) logon.protoHeader.clientSessionid = 0 @@ -177,8 +172,6 @@ class SteamUser : ClientMsgHandler() { logon.body.machineId = ByteString.copyFrom(HardwareUtils.getMachineID()) client.send(logon) - - return AsyncJobSingle(client, logon.sourceJobID) } /** diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuser/callback/LoggedOffCallback.kt b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuser/callback/LoggedOffCallback.kt index 5eac8344..25527cf6 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuser/callback/LoggedOffCallback.kt +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuser/callback/LoggedOffCallback.kt @@ -24,11 +24,9 @@ class LoggedOffCallback(packetMsg: IPacketMsg) : CallbackMsg() { SteammessagesClientserverLogin.CMsgClientLoggedOff::class.java, packetMsg ) - jobID = loggedOff.targetJobID result = EResult.from(loggedOff.body.eresult) } else { val loggedOff = ClientMsg(MsgClientLoggedOff::class.java, packetMsg) - jobID = loggedOff.targetJobID result = loggedOff.body.result } } diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuser/callback/LoggedOnCallback.kt b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuser/callback/LoggedOnCallback.kt index 9f2bfe19..bfe64be7 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuser/callback/LoggedOnCallback.kt +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuser/callback/LoggedOnCallback.kt @@ -12,7 +12,6 @@ import `in`.dragonbra.javasteam.protobufs.steamclient.SteammessagesParentalObjec import `in`.dragonbra.javasteam.steam.handlers.steamuser.LogOnDetails import `in`.dragonbra.javasteam.steam.handlers.steamuser.SteamUser import `in`.dragonbra.javasteam.steam.steamclient.callbackmgr.CallbackMsg -import `in`.dragonbra.javasteam.types.JobID import `in`.dragonbra.javasteam.types.SteamID import `in`.dragonbra.javasteam.util.NetHelpers import `in`.dragonbra.javasteam.util.log.LogManager @@ -162,7 +161,6 @@ class LoggedOnCallback : CallbackMsg { ) val resp = loginResp.body - jobID = loginResp.targetJobID result = EResult.from(resp.eresult) extendedResult = EResult.from(resp.eresultExtended) @@ -205,16 +203,14 @@ class LoggedOnCallback : CallbackMsg { clientInstanceId = resp.clientInstanceId } - constructor(result: EResult, jobID: JobID) { + constructor(result: EResult) { this.result = result - this.jobID = jobID } private fun handleNonProtoLogon(packetMsg: IPacketMsg) { val loginResp = ClientMsg(MsgClientLogOnResponse::class.java, packetMsg) val resp = loginResp.body - jobID = loginResp.targetJobID result = resp.result outOfGameSecsPerHeartbeat = resp.outOfGameHeartbeatRateSec diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuserstats/AchievementBlocks.kt b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuserstats/AchievementBlocks.kt index f201dfa2..f9f624be 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuserstats/AchievementBlocks.kt +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuserstats/AchievementBlocks.kt @@ -36,6 +36,7 @@ data class AchievementBlocks( */ val hasProgress: Boolean get() = progressMax != null && progressMax > 0f + /** * Returns true if this achievement is unlocked. * An achievement is considered unlocked if it has any non-zero unlock time. diff --git a/src/test/java/in/dragonbra/javasteam/steam/handlers/steamgameserver/SteamGameServerTest.java b/src/test/java/in/dragonbra/javasteam/steam/handlers/steamgameserver/SteamGameServerTest.java index fce82c78..71b329b6 100644 --- a/src/test/java/in/dragonbra/javasteam/steam/handlers/steamgameserver/SteamGameServerTest.java +++ b/src/test/java/in/dragonbra/javasteam/steam/handlers/steamgameserver/SteamGameServerTest.java @@ -29,7 +29,7 @@ public void logOnPostsLoggedOnCallbackWhenNoConnection() { Mockito.when(steamClient.isConnected()).thenReturn(false); var details = new LogOnDetails("SuperSecretToken", 0); - var asyncJob = handler.logOn(details); + handler.logOn(details); var callback = getCallback(); Assertions.assertNotNull(callback); @@ -37,14 +37,13 @@ public void logOnPostsLoggedOnCallbackWhenNoConnection() { var loc = (LoggedOnCallback) callback; Assertions.assertEquals(EResult.NoConnection, loc.getResult()); - Assertions.assertEquals(asyncJob.getJobID(), loc.getJobID()); } @Test public void logOnAnonymousPostsLoggedOnCallbackWhenNoConnection() { Mockito.when(steamClient.isConnected()).thenReturn(false); - var asyncJob = handler.logOnAnonymous(); + handler.logOnAnonymous(); var callback = getCallback(); Assertions.assertNotNull(callback); @@ -52,6 +51,5 @@ public void logOnAnonymousPostsLoggedOnCallbackWhenNoConnection() { var loc = (LoggedOnCallback) callback; Assertions.assertEquals(EResult.NoConnection, loc.getResult()); - Assertions.assertEquals(asyncJob.getJobID(), loc.getJobID()); } } diff --git a/src/test/java/in/dragonbra/javasteam/steam/handlers/steamuser/SteamUserTest.java b/src/test/java/in/dragonbra/javasteam/steam/handlers/steamuser/SteamUserTest.java index 9e9a5f65..aae4087d 100644 --- a/src/test/java/in/dragonbra/javasteam/steam/handlers/steamuser/SteamUserTest.java +++ b/src/test/java/in/dragonbra/javasteam/steam/handlers/steamuser/SteamUserTest.java @@ -42,7 +42,7 @@ public void logOnPostsLoggedOnCallbackWhenNoConnection() { var details = new LogOnDetails(); details.setUsername("iamauser"); details.setPassword("lamepassword"); - var asyncJob = handler.logOn(details); + handler.logOn(details); var callback = getCallback(); Assertions.assertNotNull(callback); @@ -50,7 +50,6 @@ public void logOnPostsLoggedOnCallbackWhenNoConnection() { var loc = (LoggedOnCallback) callback; Assertions.assertEquals(EResult.NoConnection, loc.getResult()); - Assertions.assertEquals(asyncJob.getJobID(), loc.getJobID()); } @Test @@ -100,7 +99,7 @@ public void logOnDoesNotThrowExceptionIfUserNameAndAccessTokenProvided() { public void logOnAnonymousPostsLoggedOnCallbackWhenNoConnection() { Mockito.when(steamClient.isConnected()).thenReturn(false); - var asyncJob = handler.logOnAnonymous(); + handler.logOnAnonymous(); var callback = getCallback(); Assertions.assertNotNull(callback); @@ -108,7 +107,6 @@ public void logOnAnonymousPostsLoggedOnCallbackWhenNoConnection() { var loc = (LoggedOnCallback) callback; Assertions.assertEquals(EResult.NoConnection, loc.getResult()); - Assertions.assertEquals(asyncJob.getJobID(), loc.getJobID()); } @Test