From 730f6214f43aceb700f08d78b767b3d7c7a8997b Mon Sep 17 00:00:00 2001 From: Lossy Date: Sun, 1 Jan 2023 01:32:36 -0600 Subject: [PATCH 01/22] Update protobufs and steamd --- .../dragonbra/javasteam/steam/CMClient.java | 2 +- .../steamuser/callback/LoggedOnCallback.java | 4 +- .../protobufs/steamclient/enums.proto | 385 +++++++ .../steamclient/steammessages_base.proto | 39 +- .../steammessages_clientserver.proto | 18 + .../steammessages_clientserver_2.proto | 15 +- ...eammessages_clientserver_gameservers.proto | 3 +- .../steammessages_clientserver_login.proto | 14 +- .../steammessages_clientserver_uds.proto | 28 +- ...ammessages_contentsystem.steamclient.proto | 104 ++ .../steammessages_player.steamclient.proto | 986 ++++++++++++++++++ ...ges_remoteclient_service.steamclient.proto | 93 ++ ...ssages_remoteclient_service_messages.proto | 201 ++++ .../steamd/in/dragonbra/javasteam/emsg.steamd | 12 + 14 files changed, 1888 insertions(+), 16 deletions(-) create mode 100644 src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/enums.proto create mode 100644 src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_contentsystem.steamclient.proto create mode 100644 src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_player.steamclient.proto create mode 100644 src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_remoteclient_service.steamclient.proto create mode 100644 src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_remoteclient_service_messages.proto diff --git a/src/main/java/in/dragonbra/javasteam/steam/CMClient.java b/src/main/java/in/dragonbra/javasteam/steam/CMClient.java index 560c7fea..ecb8fea8 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/CMClient.java +++ b/src/main/java/in/dragonbra/javasteam/steam/CMClient.java @@ -410,7 +410,7 @@ private void handleLogOnResponse(IPacketMsg packetMsg) { // restart heartbeat heartBeatFunc.stop(); - heartBeatFunc.setDelay(logonResp.getBody().getOutOfGameHeartbeatSeconds() * 1000L); + heartBeatFunc.setDelay(logonResp.getBody().getLegacyOutOfGameHeartbeatSeconds() * 1000L); heartBeatFunc.start(); } else if (logonResponse == EResult.TryAnotherCM || logonResponse == EResult.ServiceUnavailable) { getServers().tryMark(connection.getCurrentEndPoint(), connection.getProtocolTypes(), ServerQuality.BAD); diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuser/callback/LoggedOnCallback.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuser/callback/LoggedOnCallback.java index fe1ed4b2..778a2633 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuser/callback/LoggedOnCallback.java +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamuser/callback/LoggedOnCallback.java @@ -62,8 +62,8 @@ public LoggedOnCallback(CMsgClientLogonResponse.Builder resp) { result = EResult.from(resp.getEresult()); extendedResult = EResult.from(resp.getEresultExtended()); - outOfGameSecsPerHeartbeat = resp.getOutOfGameHeartbeatSeconds(); - inGameSecsPerHeartbeat = resp.getInGameHeartbeatSeconds(); + outOfGameSecsPerHeartbeat = resp.getLegacyOutOfGameHeartbeatSeconds(); + inGameSecsPerHeartbeat = resp.getHeartbeatSeconds(); publicIP = NetHelpers.getIPAddress(resp.getPublicIp().getV4()); // Has ipV6 support, but still using ipV4 serverTime = new Date(resp.getRtime32ServerTime() * 1000L); diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/enums.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/enums.proto new file mode 100644 index 00000000..232182c6 --- /dev/null +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/enums.proto @@ -0,0 +1,385 @@ +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_base.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum EPublishedFileQueryType { + k_PublishedFileQueryType_RankedByVote = 0; + k_PublishedFileQueryType_RankedByPublicationDate = 1; + k_PublishedFileQueryType_AcceptedForGameRankedByAcceptanceDate = 2; + k_PublishedFileQueryType_RankedByTrend = 3; + k_PublishedFileQueryType_FavoritedByFriendsRankedByPublicationDate = 4; + k_PublishedFileQueryType_CreatedByFriendsRankedByPublicationDate = 5; + k_PublishedFileQueryType_RankedByNumTimesReported = 6; + k_PublishedFileQueryType_CreatedByFollowedUsersRankedByPublicationDate = 7; + k_PublishedFileQueryType_NotYetRated = 8; + k_PublishedFileQueryType_RankedByTotalUniqueSubscriptions = 9; + k_PublishedFileQueryType_RankedByTotalVotesAsc = 10; + k_PublishedFileQueryType_RankedByVotesUp = 11; + k_PublishedFileQueryType_RankedByTextSearch = 12; + k_PublishedFileQueryType_RankedByPlaytimeTrend = 13; + k_PublishedFileQueryType_RankedByTotalPlaytime = 14; + k_PublishedFileQueryType_RankedByAveragePlaytimeTrend = 15; + k_PublishedFileQueryType_RankedByLifetimeAveragePlaytime = 16; + k_PublishedFileQueryType_RankedByPlaytimeSessionsTrend = 17; + k_PublishedFileQueryType_RankedByLifetimePlaytimeSessions = 18; + k_PublishedFileQueryType_RankedByInappropriateContentRating = 19; + k_PublishedFileQueryType_RankedByBanContentCheck = 20; + k_PublishedFileQueryType_RankedByLastUpdatedDate = 21; +} + +enum EPublishedFileInappropriateProvider { + k_EPublishedFileInappropriateProvider_Invalid = 0; + k_EPublishedFileInappropriateProvider_Google = 1; + k_EPublishedFileInappropriateProvider_Amazon = 2; +} + +enum EPublishedFileInappropriateResult { + k_EPublishedFileInappropriateResult_NotScanned = 0; + k_EPublishedFileInappropriateResult_VeryUnlikely = 1; + k_EPublishedFileInappropriateResult_Unlikely = 30; + k_EPublishedFileInappropriateResult_Possible = 50; + k_EPublishedFileInappropriateResult_Likely = 75; + k_EPublishedFileInappropriateResult_VeryLikely = 100; +} + +enum EPersonaStateFlag { + k_EPersonaStateFlag_HasRichPresence = 1; + k_EPersonaStateFlag_InJoinableGame = 2; + k_EPersonaStateFlag_Golden = 4; + k_EPersonaStateFlag_RemotePlayTogether = 8; + k_EPersonaStateFlag_ClientTypeWeb = 256; + k_EPersonaStateFlag_ClientTypeMobile = 512; + k_EPersonaStateFlag_ClientTypeTenfoot = 1024; + k_EPersonaStateFlag_ClientTypeVR = 2048; + k_EPersonaStateFlag_LaunchTypeGamepad = 4096; + k_EPersonaStateFlag_LaunchTypeCompatTool = 8192; +} + +enum EContentCheckProvider { + k_EContentCheckProvider_Invalid = 0; + k_EContentCheckProvider_Google = 1; + k_EContentCheckProvider_Amazon = 2; + k_EContentCheckProvider_Local = 3; +} + +enum EProfileCustomizationType { + k_EProfileCustomizationTypeInvalid = 0; + k_EProfileCustomizationTypeRareAchievementShowcase = 1; + k_EProfileCustomizationTypeGameCollector = 2; + k_EProfileCustomizationTypeItemShowcase = 3; + k_EProfileCustomizationTypeTradeShowcase = 4; + k_EProfileCustomizationTypeBadges = 5; + k_EProfileCustomizationTypeFavoriteGame = 6; + k_EProfileCustomizationTypeScreenshotShowcase = 7; + k_EProfileCustomizationTypeCustomText = 8; + k_EProfileCustomizationTypeFavoriteGroup = 9; + k_EProfileCustomizationTypeRecommendation = 10; + k_EProfileCustomizationTypeWorkshopItem = 11; + k_EProfileCustomizationTypeMyWorkshop = 12; + k_EProfileCustomizationTypeArtworkShowcase = 13; + k_EProfileCustomizationTypeVideoShowcase = 14; + k_EProfileCustomizationTypeGuides = 15; + k_EProfileCustomizationTypeMyGuides = 16; + k_EProfileCustomizationTypeAchievements = 17; + k_EProfileCustomizationTypeGreenlight = 18; + k_EProfileCustomizationTypeMyGreenlight = 19; + k_EProfileCustomizationTypeSalien = 20; + k_EProfileCustomizationTypeLoyaltyRewardReactions = 21; + k_EProfileCustomizationTypeSingleArtworkShowcase = 22; + k_EProfileCustomizationTypeAchievementsCompletionist = 23; +} + +enum EPublishedFileStorageSystem { + k_EPublishedFileStorageSystemInvalid = 0; + k_EPublishedFileStorageSystemLegacyCloud = 1; + k_EPublishedFileStorageSystemDepot = 2; + k_EPublishedFileStorageSystemUGCCloud = 3; +} + +enum ECloudStoragePersistState { + k_ECloudStoragePersistStatePersisted = 0; + k_ECloudStoragePersistStateForgotten = 1; + k_ECloudStoragePersistStateDeleted = 2; +} + +enum ESDCardFormatStage { + k_ESDCardFormatStage_Invalid = 0; + k_ESDCardFormatStage_Starting = 1; + k_ESDCardFormatStage_Testing = 2; + k_ESDCardFormatStage_Rescuing = 3; + k_ESDCardFormatStage_Formatting = 4; + k_ESDCardFormatStage_Finalizing = 5; +} + +enum ESystemFanControlMode { + k_SystemFanControlMode_Invalid = 0; + k_SystemFanControlMode_Disabled = 1; + k_SystemFanControlMode_Default = 2; +} + +enum EColorProfile { + k_EColorProfile_Invalid = 0; + k_EColorProfile_Native = 1; + k_EColorProfile_Standard = 2; + k_EColorProfile_Vivid = 3; +} + +enum EBluetoothDeviceType { + k_BluetoothDeviceType_Invalid = 0; + k_BluetoothDeviceType_Unknown = 1; + k_BluetoothDeviceType_Phone = 2; + k_BluetoothDeviceType_Computer = 3; + k_BluetoothDeviceType_Headset = 4; + k_BluetoothDeviceType_Headphones = 5; + k_BluetoothDeviceType_Speakers = 6; + k_BluetoothDeviceType_OtherAudio = 7; + k_BluetoothDeviceType_Mouse = 8; + k_BluetoothDeviceType_Joystick = 9; + k_BluetoothDeviceType_Gamepad = 10; + k_BluetoothDeviceType_Keyboard = 11; +} + +enum ESystemAudioDirection { + k_SystemAudioDirection_Invalid = 0; + k_SystemAudioDirection_Input = 1; + k_SystemAudioDirection_Output = 2; +} + +enum ESystemAudioChannel { + k_SystemAudioChannel_Invalid = 0; + k_SystemAudioChannel_Aggregated = 1; + k_SystemAudioChannel_FrontLeft = 2; + k_SystemAudioChannel_FrontRight = 3; + k_SystemAudioChannel_LFE = 4; + k_SystemAudioChannel_BackLeft = 5; + k_SystemAudioChannel_BackRight = 6; + k_SystemAudioChannel_FrontCenter = 7; + k_SystemAudioChannel_Unknown = 8; + k_SystemAudioChannel_Mono = 9; +} + +enum ESystemAudioPortType { + k_SystemAudioPortType_Invalid = 0; + k_SystemAudioPortType_Unknown = 1; + k_SystemAudioPortType_Audio32f = 2; + k_SystemAudioPortType_Midi8b = 3; + k_SystemAudioPortType_Video32RGBA = 4; +} + +enum ESystemAudioPortDirection { + k_SystemAudioPortDirection_Invalid = 0; + k_SystemAudioPortDirection_Input = 1; + k_SystemAudioPortDirection_Output = 2; +} + +enum ESystemServiceState { + k_ESystemServiceState_Unavailable = 0; + k_ESystemServiceState_Disabled = 1; + k_ESystemServiceState_Enabled = 2; +} + +enum EGraphicsPerfOverlayLevel { + k_EGraphicsPerfOverlayLevel_Hidden = 0; + k_EGraphicsPerfOverlayLevel_Basic = 1; + k_EGraphicsPerfOverlayLevel_Medium = 2; + k_EGraphicsPerfOverlayLevel_Full = 3; + k_EGraphicsPerfOverlayLevel_Minimal = 4; +} + +enum EGPUPerformanceLevel { + k_EGPUPerformanceLevel_Invalid = 0; + k_EGPUPerformanceLevel_Auto = 1; + k_EGPUPerformanceLevel_Manual = 2; + k_EGPUPerformanceLevel_Low = 3; + k_EGPUPerformanceLevel_High = 4; + k_EGPUPerformanceLevel_Profiling = 5; +} + +enum EScalingFilter { + k_EScalingFilter_Invalid = 0; + k_EScalingFilter_FSR = 1; + k_EScalingFilter_Nearest = 2; + k_EScalingFilter_Integer = 3; + k_EScalingFilter_Linear = 4; + k_EScalingFilter_NIS = 5; +} + +enum ESplitScalingFilter { + k_ESplitScalingFilter_Invalid = 0; + k_ESplitScalingFilter_Linear = 1; + k_ESplitScalingFilter_Nearest = 2; + k_ESplitScalingFilter_FSR = 3; + k_ESplitScalingFilter_NIS = 4; +} + +enum ESplitScalingScaler { + k_ESplitScalingScaler_Invalid = 0; + k_ESplitScalingScaler_Auto = 1; + k_ESplitScalingScaler_Integer = 2; + k_ESplitScalingScaler_Fit = 3; + k_ESplitScalingScaler_Fill = 4; + k_ESplitScalingScaler_Stretch = 5; +} + +enum ECPUGovernor { + k_ECPUGovernor_Invalid = 0; + k_ECPUGovernor_Perf = 1; + k_ECPUGovernor_Powersave = 2; + k_ECPUGovernor_Manual = 3; +} + +enum EUpdaterType { + k_EUpdaterType_Invalid = 0; + k_EUpdaterType_Client = 1; + k_EUpdaterType_OS = 2; + k_EUpdaterType_BIOS = 3; + k_EUpdaterType_Aggregated = 4; + k_EUpdaterType_Test1 = 5; + k_EUpdaterType_Test2 = 6; + k_EUpdaterType_Dummy = 7; +} + +enum EUpdaterState { + k_EUpdaterState_Invalid = 0; + k_EUpdaterState_UpToDate = 2; + k_EUpdaterState_Checking = 3; + k_EUpdaterState_Available = 4; + k_EUpdaterState_Applying = 5; + k_EUpdaterState_ClientRestartPending = 6; + k_EUpdaterState_SystemRestartPending = 7; +} + +enum EStorageBlockContentType { + k_EStorageBlockContentType_Invalid = 0; + k_EStorageBlockContentType_Unknown = 1; + k_EStorageBlockContentType_FileSystem = 2; + k_EStorageBlockContentType_Crypto = 3; + k_EStorageBlockContentType_Raid = 4; +} + +enum EStorageBlockFileSystemType { + k_EStorageBlockFileSystemType_Invalid = 0; + k_EStorageBlockFileSystemType_Unknown = 1; + k_EStorageBlockFileSystemType_VFat = 2; + k_EStorageBlockFileSystemType_Ext4 = 3; +} + +enum EStorageDriveMediaType { + k_EStorageDriveMediaType_Invalid = 0; + k_EStorageDriveMediaType_Unknown = 1; + k_EStorageDriveMediaType_HDD = 2; + k_EStorageDriveMediaType_SSD = 3; + k_EStorageDriveMediaType_Removable = 4; +} + +enum ESystemDisplayCompatibilityMode { + k_ESystemDisplayCompatibilityMode_Invalid = 0; + k_ESystemDisplayCompatibilityMode_None = 1; + k_ESystemDisplayCompatibilityMode_MinimalBandwith = 2; +} + +enum ESteamDeckCompatibilityCategory { + k_ESteamDeckCompatibilityCategory_Unknown = 0; + k_ESteamDeckCompatibilityCategory_Unsupported = 1; + k_ESteamDeckCompatibilityCategory_Playable = 2; + k_ESteamDeckCompatibilityCategory_Verified = 3; +} + +enum ESteamDeckCompatibilityResultDisplayType { + k_ESteamDeckCompatibilityResultDisplayType_Invisible = 0; + k_ESteamDeckCompatibilityResultDisplayType_Informational = 1; + k_ESteamDeckCompatibilityResultDisplayType_Unsupported = 2; + k_ESteamDeckCompatibilityResultDisplayType_Playable = 3; + k_ESteamDeckCompatibilityResultDisplayType_Verified = 4; +} + +enum EACState { + k_EACState_Unknown = 0; + k_EACState_Disconnected = 1; + k_EACState_Connected = 2; + k_EACState_ConnectedSlow = 3; +} + +enum EBatteryState { + k_EBatteryState_Unknown = 0; + k_EBatteryState_Discharging = 1; + k_EBatteryState_Charging = 2; + k_EBatteryState_Full = 3; +} + +enum EOSBranch { + k_EOSBranch_Unknown = 0; + k_EOSBranch_Release = 1; + k_EOSBranch_ReleaseCandidate = 2; + k_EOSBranch_Beta = 3; + k_EOSBranch_BetaCandidate = 4; + k_EOSBranch_Main = 5; + k_EOSBranch_Staging = 6; +} + +enum ECommunityItemClass { + k_ECommunityItemClass_Invalid = 0; + k_ECommunityItemClass_Badge = 1; + k_ECommunityItemClass_GameCard = 2; + k_ECommunityItemClass_ProfileBackground = 3; + k_ECommunityItemClass_Emoticon = 4; + k_ECommunityItemClass_BoosterPack = 5; + k_ECommunityItemClass_Consumable = 6; + k_ECommunityItemClass_GameGoo = 7; + k_ECommunityItemClass_ProfileModifier = 8; + k_ECommunityItemClass_Scene = 9; + k_ECommunityItemClass_SalienItem = 10; + k_ECommunityItemClass_Sticker = 11; + k_ECommunityItemClass_ChatEffect = 12; + k_ECommunityItemClass_MiniProfileBackground = 13; + k_ECommunityItemClass_AvatarFrame = 14; + k_ECommunityItemClass_AnimatedAvatar = 15; + k_ECommunityItemClass_SteamDeckKeyboardSkin = 16; + k_ECommunityItemClass_SteamDeckStartupMovie = 17; +} + +enum ESteamDeckCompatibilityFeedback { + k_ESteamDeckCompatibilityFeedback_Unset = 0; + k_ESteamDeckCompatibilityFeedback_Agree = 1; + k_ESteamDeckCompatibilityFeedback_Disagree = 2; + k_ESteamDeckCompatibilityFeedback_Ignore = 3; +} + +enum EProvideDeckFeedbackPreference { + k_EProvideDeckFeedbackPreference_Unset = 0; + k_EProvideDeckFeedbackPreference_Yes = 1; + k_EProvideDeckFeedbackPreference_No = 2; +} + +enum ETouchGesture { + k_ETouchGestureNone = 0; + k_ETouchGestureTouch = 1; + k_ETouchGestureTap = 2; + k_ETouchGestureDoubleTap = 3; + k_ETouchGestureShortPress = 4; + k_ETouchGestureLongPress = 5; + k_ETouchGestureLongTap = 6; + k_ETouchGestureTwoFingerTap = 7; + k_ETouchGestureTapCancelled = 8; + k_ETouchGesturePinchBegin = 9; + k_ETouchGesturePinchUpdate = 10; + k_ETouchGesturePinchEnd = 11; + k_ETouchGestureFlingStart = 12; + k_ETouchGestureFlingCancelled = 13; +} + +enum ESessionPersistence { + k_ESessionPersistence_Invalid = -1; + k_ESessionPersistence_Ephemeral = 0; + k_ESessionPersistence_Persistent = 1; +} + +enum ENewSteamAnnouncementState { + k_ENewSteamAnnouncementState_Invalid = 0; + k_ENewSteamAnnouncementState_AllRead = 1; + k_ENewSteamAnnouncementState_NewAnnouncement = 2; + k_ENewSteamAnnouncementState_FeaturedAnnouncement = 3; +} diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_base.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_base.proto index 9336f579..d557f35b 100644 --- a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_base.proto +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_base.proto @@ -20,6 +20,17 @@ extend .google.protobuf.FieldOptions { optional bool allow_field_named_steam_id = 50024 [default = false]; } +enum EBanContentCheckResult { + k_EBanContentCheckResult_NotScanned = 0; + k_EBanContentCheckResult_Reset = 1; + k_EBanContentCheckResult_NeedsChecking = 2; + k_EBanContentCheckResult_VeryUnlikely = 5; + k_EBanContentCheckResult_Unlikely = 30; + k_EBanContentCheckResult_Possible = 50; + k_EBanContentCheckResult_Likely = 75; + k_EBanContentCheckResult_VeryLikely = 100; +} + enum EProtoClanEventType { k_EClanOtherEvent = 1; k_EClanGameEvent = 2; @@ -77,6 +88,11 @@ message CMsgIPAddressBucket { optional fixed64 bucket = 2; } +message CMsgGCRoutingProtoBufHeader { + optional uint64 dst_gcid_queue = 1; + optional uint32 dst_gc_dir_index = 2; +} + message CMsgProtoBufHeader { optional fixed64 steamid = 1; optional int32 client_sessionid = 2; @@ -99,9 +115,13 @@ message CMsgProtoBufHeader { optional bool is_from_external_source = 26; repeated uint32 forward_to_sysid = 27; optional uint32 cm_sysid = 28; - optional string wg_token = 30; optional uint32 launcher_type = 31 [default = 0]; optional uint32 realm = 32 [default = 0]; + optional int32 timeout_ms = 33 [default = -1]; + optional string debug_source = 34; + optional uint32 debug_source_string_index = 35; + optional uint64 token_id = 36; + optional .CMsgGCRoutingProtoBufHeader routing_gc = 37; oneof ip_addr { uint32 ip = 15; @@ -126,14 +146,13 @@ message CMsgAuthTicket { optional uint32 h_steam_pipe = 5; optional uint32 ticket_crc = 6; optional bytes ticket = 7; + optional bytes server_secret = 8; } message CCDDBAppDetailCommon { optional uint32 appid = 1; optional string name = 2; optional string icon = 3; - optional string logo = 4; - optional string logo_small = 5; optional bool tool = 6; optional bool demo = 7; optional bool media = 8; @@ -142,6 +161,9 @@ message CCDDBAppDetailCommon { optional string propagation = 11; optional bool has_adult_content = 12; optional bool is_visible_in_steam_china = 13; + optional uint32 app_type = 14; + optional bool has_adult_content_sex = 15; + optional bool has_adult_content_violence = 16; } message CMsgAppRights { @@ -222,6 +244,8 @@ message CCommunity_ClanAnnouncementInfo { optional fixed64 event_gid = 13; optional int32 voteupcount = 14; optional int32 votedowncount = 15; + optional .EBanContentCheckResult ban_check_result = 16 [default = k_EBanContentCheckResult_NotScanned]; + optional bool banned = 17; } message CClanEventData { @@ -280,3 +304,12 @@ message CPackageReservationStatus { optional uint32 time_expires = 7; optional uint32 time_reserved = 8; } + +message CMsgKeyValuePair { + optional string name = 1; + optional string value = 2; +} + +message CMsgKeyValueSet { + repeated .CMsgKeyValuePair pairs = 1; +} diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver.proto index dbea200b..a68b8588 100644 --- a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver.proto +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver.proto @@ -88,6 +88,12 @@ message CMsgClientGameConnectTokens { } message CMsgClientGamesPlayed { + message ProcessInfo { + optional uint32 process_id = 1; + optional uint32 process_id_parent = 2; + optional bool parent_is_steam = 3; + } + message GamePlayed { optional uint64 steam_id_gs = 1; optional fixed64 game_id = 2; @@ -114,11 +120,19 @@ message CMsgClientGamesPlayed { optional .CMsgIPAddress game_ip_address = 23; optional uint32 controller_connection_type = 24 [default = 0]; optional int32 game_os_platform = 25; + optional uint32 game_build_id = 26; + optional uint32 compat_tool_id = 27 [default = 0]; + optional string compat_tool_cmd = 28; + optional uint32 compat_tool_build_id = 29; + optional string beta_name = 30; + optional uint32 dlc_context = 31; + repeated .CMsgClientGamesPlayed.ProcessInfo process_id_list = 32; } repeated .CMsgClientGamesPlayed.GamePlayed games_played = 1; optional uint32 client_os_type = 2; optional uint32 cloud_gaming_platform = 3; + optional bool recent_reauthentication = 4; } message CMsgGSApprove { @@ -233,6 +247,10 @@ message CMsgClientConnectionStats { optional uint32 seconds_running = 5; optional uint32 msec_tologonthistime = 6; optional uint32 count_bad_cms = 7; + optional bool no_udp_connectivity = 8; + optional bool no_tcp_connectivity = 9; + optional bool no_websocket_443_connectivity = 10; + optional bool no_websocket_non_443_connectivity = 11; } message Stats_UDP { diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_2.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_2.proto index e0df78d1..aad3d5bf 100644 --- a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_2.proto +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_2.proto @@ -607,8 +607,8 @@ message CMsgClientServiceMethodLegacyResponse { } message CMsgClientUIMode { - optional uint32 uimode = 1; - optional uint32 chat_mode = 2; + optional uint32 uimode = 1; // uimode set value: 1 = Big Picture, 0 = Desktop + optional uint32 chat_mode = 2; // chat_mode set value: 2 = Steam Unified Chat } message CMsgClientVanityURLChangedNotification { @@ -776,3 +776,14 @@ message CMsgBadgeCraftedNotification { optional uint32 appid = 1; optional uint32 badge_level = 2; } + +message CMsgClientStartPeerContentServer { + optional fixed64 steamid = 1; + optional fixed64 client_remote_id = 2; + optional uint32 app_id = 3; +} + +message CMsgClientStartPeerContentServerResponse { + optional uint32 result = 1; + optional uint32 server_port = 2; +} diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_gameservers.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_gameservers.proto index d13e9075..51538859 100644 --- a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_gameservers.proto +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_gameservers.proto @@ -50,7 +50,6 @@ message CMsgGameServerData { } optional uint32 revision = 24; - optional fixed64 steam_id_gs = 1; optional uint32 query_port = 3; optional uint32 game_port = 4; optional uint32 spectator_port = 5; @@ -58,6 +57,7 @@ message CMsgGameServerData { optional string game_description = 29; optional string spectator_server_name = 27; optional fixed32 fake_ip = 28; + optional string sdr_ping_location = 30; optional uint32 app_id = 6; optional string gamedir = 7; optional string version = 8; @@ -99,6 +99,7 @@ message CMsgGMSClientServerQueryResponse { optional uint32 players = 8; optional uint32 game_port = 9; optional fixed32 sdr_popid = 10; + optional string sdr_ping_location = 32; optional uint32 flags = 11; optional uint32 app_id = 12; optional uint32 max_players = 13; diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_login.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_login.proto index 0377d7b9..68910464 100644 --- a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_login.proto +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_login.proto @@ -26,6 +26,10 @@ message CMsgClientSecret { optional bytes hmac = 5; } +message CMsgClientHello { + optional uint32 protocol_version = 1; +} + message CMsgClientLogon { optional uint32 protocol_version = 1; optional uint32 deprecated_obfustucated_private_ip = 2; @@ -80,12 +84,16 @@ message CMsgClientLogon { optional int32 priority_reason = 104; optional .CMsgClientSecret embedded_client_secret = 105; optional bool disable_partner_autogrants = 106; + optional bool is_steam_deck = 107; + optional string access_token = 108; + optional bool is_chrome_os = 109; + optional bool is_tesla = 110; } message CMsgClientLogonResponse { optional int32 eresult = 1 [default = 2]; - optional int32 out_of_game_heartbeat_seconds = 2; - optional int32 in_game_heartbeat_seconds = 3; + optional int32 legacy_out_of_game_heartbeat_seconds = 2; + optional int32 heartbeat_seconds = 3; optional uint32 deprecated_public_ip = 4; optional fixed32 rtime32_server_time = 5; optional uint32 account_flags = 6; @@ -108,6 +116,7 @@ message CMsgClientLogonResponse { optional uint64 client_instance_id = 27; optional bool force_client_update_check = 28; optional string agreement_session_url = 29; + optional uint64 token_id = 30; } message CMsgClientRequestWebAPIAuthenticateUserNonce { @@ -143,7 +152,6 @@ message CMsgClientAccountInfo { optional uint32 account_flags = 7; optional uint64 facebook_id = 8; optional string facebook_name = 9; - optional bool steamguard_notify_newmachines = 14; optional string steamguard_machine_name_user_chosen = 15; optional bool is_phone_verified = 16; optional uint32 two_factor_state = 17; diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_uds.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_uds.proto index 52043417..a1f12e2b 100644 --- a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_uds.proto +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_uds.proto @@ -34,13 +34,14 @@ message CMsgClientGetClientDetailsResponse { } optional uint32 package_version = 1; - optional uint32 protocol_version = 8; optional string os = 2; optional string machine_name = 3; optional string ip_public = 4; optional string ip_private = 5; - optional uint64 bytes_available = 7; repeated .CMsgClientGetClientDetailsResponse.Game games_running = 6; + optional uint64 bytes_available = 7; + optional uint32 protocol_version = 8; + optional uint32 clientcomm_version = 9; } message CMsgClientGetClientAppList { @@ -50,6 +51,7 @@ message CMsgClientGetClientAppList { optional bool only_installed = 4; optional bool only_changing = 5; optional bool comics = 6; + optional bool include_client_info = 7; } message CMsgClientGetClientAppListResponse { @@ -66,18 +68,28 @@ message CMsgClientGetClientAppListResponse { optional bool installed = 4; optional bool auto_update = 5; optional uint64 bytes_downloaded = 6; - optional uint64 bytes_needed = 7; + optional uint64 bytes_to_download = 7; optional uint32 bytes_download_rate = 8; + repeated .CMsgClientGetClientAppListResponse.App.DLC dlcs = 9; optional bool download_paused = 11; optional uint32 num_downloading = 12; optional uint32 num_paused = 13; optional bool changing = 14; optional bool available_on_platform = 15; - repeated .CMsgClientGetClientAppListResponse.App.DLC dlcs = 9; + optional uint64 bytes_staged = 16; + optional uint64 bytes_to_stage = 17; + optional uint64 bytes_required = 18; + optional uint32 source_buildid = 19; + optional uint32 target_buildid = 20; + optional uint32 estimated_seconds_remaining = 21; + optional int32 queue_position = 22; + optional bool uninstalling = 23; + optional uint32 rt_time_scheduled = 24; } repeated .CMsgClientGetClientAppListResponse.App apps = 1; optional uint64 bytes_available = 2; + optional .CMsgClientGetClientDetailsResponse client_info = 3; } message CMsgClientInstallClientApp { @@ -104,3 +116,11 @@ message CMsgClientSetClientAppUpdateState { message CMsgClientSetClientAppUpdateStateResponse { optional uint32 result = 1; } + +message CMsgClientEnableOrDisableDownloads { + optional bool enable = 1; +} + +message CMsgClientEnableOrDisableDownloadsResponse { + optional uint32 result = 1; +} diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_contentsystem.steamclient.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_contentsystem.steamclient.proto new file mode 100644 index 00000000..27aa4c9a --- /dev/null +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_contentsystem.steamclient.proto @@ -0,0 +1,104 @@ +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_base.proto"; +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_unified_base.steamclient.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; + +option optimize_for = SPEED; +option java_generic_services = false; + +message CContentServerDirectory_GetServersForSteamPipe_Request { + optional uint32 cell_id = 1 [(description) = "client Cell ID"]; + optional uint32 max_servers = 2 [default = 20, (description) = "max servers in response list"]; + optional string ip_override = 3 [(description) = "client IP address"]; + optional int32 launcher_type = 4 [default = 0, (description) = "launcher type"]; + optional string ipv6_public = 5 [(description) = "client public ipv6 address if it knows it"]; +} + +message CContentServerDirectory_ServerInfo { + optional string type = 1; + optional int32 source_id = 2; + optional int32 cell_id = 3; + optional int32 load = 4; + optional float weighted_load = 5; + optional int32 num_entries_in_client_list = 6; + optional bool steam_china_only = 7; + optional string host = 8; + optional string vhost = 9; + optional bool use_as_proxy = 10; + optional string proxy_request_path_template = 11; + optional string https_support = 12; + repeated uint32 allowed_app_ids = 13; + optional bool preferred_server = 14; +} + +message CContentServerDirectory_GetServersForSteamPipe_Response { + repeated .CContentServerDirectory_ServerInfo servers = 1; +} + +message CContentServerDirectory_GetDepotPatchInfo_Request { + optional uint32 appid = 1; + optional uint32 depotid = 2; + optional uint64 source_manifestid = 3; + optional uint64 target_manifestid = 4; +} + +message CContentServerDirectory_GetDepotPatchInfo_Response { + optional bool is_available = 1; + optional uint64 patch_size = 2; + optional uint64 patched_chunks_size = 3; +} + +message CContentServerDirectory_GetClientUpdateHosts_Request { + optional string cached_signature = 1; +} + +message CContentServerDirectory_GetClientUpdateHosts_Response { + optional string hosts_kv = 1; + optional uint64 valid_until_time = 2; + optional string ip_country = 3; +} + +message CContentServerDirectory_GetManifestRequestCode_Request { + optional uint32 app_id = 1; + optional uint32 depot_id = 2; + optional uint64 manifest_id = 3; + optional string app_branch = 4; + optional string branch_password_hash = 5; +} + +message CContentServerDirectory_GetManifestRequestCode_Response { + optional uint64 manifest_request_code = 1; +} + +message CContentServerDirectory_GetCDNAuthToken_Request { + optional uint32 depot_id = 1; + optional string host_name = 2; + optional uint32 app_id = 3; +} + +message CContentServerDirectory_GetCDNAuthToken_Response { + optional string token = 1; + optional uint32 expiration_time = 2; +} + +message CContentServerDirectory_RequestPeerContentServer_Request { + optional uint64 remote_client_id = 1; + optional uint64 server_steam_id = 2; + optional uint64 server_remote_client_id = 3; + optional uint32 app_id = 4; +} + +message CContentServerDirectory_RequestPeerContentServer_Response { + optional uint32 server_port = 1; +} + +service ContentServerDirectory { + option (service_description) = "Content Server and CDN directory"; + + rpc GetServersForSteamPipe (.CContentServerDirectory_GetServersForSteamPipe_Request) returns (.CContentServerDirectory_GetServersForSteamPipe_Response); + rpc GetDepotPatchInfo (.CContentServerDirectory_GetDepotPatchInfo_Request) returns (.CContentServerDirectory_GetDepotPatchInfo_Response); + rpc GetClientUpdateHosts (.CContentServerDirectory_GetClientUpdateHosts_Request) returns (.CContentServerDirectory_GetClientUpdateHosts_Response); + rpc GetManifestRequestCode (.CContentServerDirectory_GetManifestRequestCode_Request) returns (.CContentServerDirectory_GetManifestRequestCode_Response); + rpc GetCDNAuthToken (.CContentServerDirectory_GetCDNAuthToken_Request) returns (.CContentServerDirectory_GetCDNAuthToken_Response); + rpc RequestPeerContentServer (.CContentServerDirectory_RequestPeerContentServer_Request) returns (.CContentServerDirectory_RequestPeerContentServer_Response); +} \ No newline at end of file diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_player.steamclient.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_player.steamclient.proto new file mode 100644 index 00000000..f2057785 --- /dev/null +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_player.steamclient.proto @@ -0,0 +1,986 @@ +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_base.proto"; +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_unified_base.steamclient.proto"; +import "in/dragonbra/javasteam/protobufs/steamclient/enums.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum EProfileCustomizationStyle { + k_EProfileCustomizationStyleDefault = 0; + k_EProfileCustomizationStyleSelected = 1; + k_EProfileCustomizationStyleRarest = 2; + k_EProfileCustomizationStyleMostRecent = 3; + k_EProfileCustomizationStyleRandom = 4; + k_EProfileCustomizationStyleHighestRated = 5; +} + +enum EAgreementType { + k_EAgreementType_Invalid = -1; + k_EAgreementType_GlobalSSA = 0; + k_EAgreementType_ChinaSSA = 1; +} + +enum ENotificationSetting { + k_ENotificationSettingNotifyUseDefault = 0; + k_ENotificationSettingAlways = 1; + k_ENotificationSettingNever = 2; +} + +enum ETextFilterSetting { + k_ETextFilterSettingSteamLabOptedOut = 0; + k_ETextFilterSettingEnabled = 1; + k_ETextFilterSettingEnabledAllowProfanity = 2; + k_ETextFilterSettingDisabled = 3; +} + +message CPlayer_GetMutualFriendsForIncomingInvites_Request { +} + +message CPlayer_IncomingInviteMutualFriendList { + optional fixed64 steamid = 1; + repeated uint32 mutual_friend_account_ids = 2; +} + +message CPlayer_GetMutualFriendsForIncomingInvites_Response { + repeated .CPlayer_IncomingInviteMutualFriendList incoming_invite_mutual_friends_lists = 1; +} + +message CPlayer_GetOwnedGames_Request { + optional uint64 steamid = 1 [(description) = "The player we're asking about"]; + optional bool include_appinfo = 2 [(description) = "true if we want additional details (name, icon) about each game"]; + optional bool include_played_free_games = 3 [(description) = "Free games are excluded by default. If this is set, free games the user has played will be returned."]; + repeated uint32 appids_filter = 4 [(description) = "if set, restricts result set to the passed in apps"]; + optional bool include_free_sub = 5 [(description) = "Some games are in the free sub, which are excluded by default."]; + optional bool skip_unvetted_apps = 6 [default = true, (description) = "if set, skip unvetted store apps"]; + optional string language = 7 [(description) = "Will return appinfo in this language"]; + optional bool include_extended_appinfo = 8 [(description) = "true if we want even more details (capsule, sortas, and capabilities) about each game. include_appinfo must also be true."]; +} + +message CPlayer_GetOwnedGames_Response { + message Game { + optional int32 appid = 1; + optional string name = 2; + optional int32 playtime_2weeks = 3; + optional int32 playtime_forever = 4; + optional string img_icon_url = 5; + optional bool has_community_visible_stats = 7; + optional int32 playtime_windows_forever = 8; + optional int32 playtime_mac_forever = 9; + optional int32 playtime_linux_forever = 10; + optional uint32 rtime_last_played = 11; + optional string capsule_filename = 12; + optional string sort_as = 13; + optional bool has_workshop = 14; + optional bool has_market = 15; + optional bool has_dlc = 16; + optional bool has_leaderboards = 17; + } + + optional uint32 game_count = 1; + repeated .CPlayer_GetOwnedGames_Response.Game games = 2; +} + +message CPlayer_GetPlayNext_Request { + optional uint32 max_age_seconds = 1; + repeated uint32 ignore_appids = 2; +} + +message CPlayer_GetPlayNext_Response { + optional uint32 last_update_time = 1; + repeated uint32 appids = 2; +} + +message CPlayer_GetFriendsGameplayInfo_Request { + optional uint32 appid = 1; +} + +message CPlayer_GetFriendsGameplayInfo_Response { + message FriendsGameplayInfo { + optional fixed64 steamid = 1; + optional uint32 minutes_played = 2; + optional uint32 minutes_played_forever = 3; + } + + message OwnGameplayInfo { + optional fixed64 steamid = 1; + optional uint32 minutes_played = 2; + optional uint32 minutes_played_forever = 3; + optional bool in_wishlist = 4; + optional bool owned = 5; + } + + optional .CPlayer_GetFriendsGameplayInfo_Response.OwnGameplayInfo your_info = 1; + repeated .CPlayer_GetFriendsGameplayInfo_Response.FriendsGameplayInfo in_game = 2; + repeated .CPlayer_GetFriendsGameplayInfo_Response.FriendsGameplayInfo played_recently = 3; + repeated .CPlayer_GetFriendsGameplayInfo_Response.FriendsGameplayInfo played_ever = 4; + repeated .CPlayer_GetFriendsGameplayInfo_Response.FriendsGameplayInfo owns = 5; + repeated .CPlayer_GetFriendsGameplayInfo_Response.FriendsGameplayInfo in_wishlist = 6; +} + +message CPlayer_GetGameBadgeLevels_Request { + optional uint32 appid = 1; +} + +message CPlayer_GetGameBadgeLevels_Response { + message Badge { + optional int32 level = 1; + optional int32 series = 2; + optional uint32 border_color = 3; + } + + optional uint32 player_level = 1; + repeated .CPlayer_GetGameBadgeLevels_Response.Badge badges = 2; +} + +message CPlayer_GetProfileBackground_Request { + optional fixed64 steamid = 1 [(description) = "The player we're asking about"]; + optional string language = 2; +} + +message ProfileItem { + message ProfileColor { + optional string style_name = 1 [(description) = "EProfileColorStyle string version"]; + optional string color = 2 [(description) = "hex color to apply"]; + } + + optional uint64 communityitemid = 1; + optional string image_small = 2 [(description) = "small image used in backpack or selection"]; + optional string image_large = 3 [(description) = "the image itself"]; + optional string name = 4 [(description) = "english name"]; + optional string item_title = 5 [(description) = "localized title"]; + optional string item_description = 6 [(description) = "localized description"]; + optional uint32 appid = 7; + optional uint32 item_type = 8; + optional uint32 item_class = 9; + optional string movie_webm = 10 [(description) = "URL to webm, if any"]; + optional string movie_mp4 = 11 [(description) = "URL to mp4, if any"]; + optional string movie_webm_small = 13 [(description) = "URL to small webm, if any"]; + optional string movie_mp4_small = 14 [(description) = "URL to small mp4, if any"]; + optional uint32 equipped_flags = 12 [(description) = "Special flags set when equipped (EProfileItemEquippedFlag)"]; + repeated .ProfileItem.ProfileColor profile_colors = 15 [(description) = "Game profile css colors"]; +} + +message CPlayer_GetProfileBackground_Response { + optional .ProfileItem profile_background = 1; +} + +message CPlayer_SetProfileBackground_Request { + optional uint64 communityitemid = 1; +} + +message CPlayer_SetProfileBackground_Response { +} + +message CPlayer_GetMiniProfileBackground_Request { + optional fixed64 steamid = 1 [(description) = "The player we're asking about"]; + optional string language = 2; +} + +message CPlayer_GetMiniProfileBackground_Response { + optional .ProfileItem profile_background = 1; +} + +message CPlayer_SetMiniProfileBackground_Request { + optional uint64 communityitemid = 1; +} + +message CPlayer_SetMiniProfileBackground_Response { +} + +message CPlayer_GetAvatarFrame_Request { + optional fixed64 steamid = 1 [(description) = "The player we're asking about"]; + optional string language = 2; +} + +message CPlayer_GetAvatarFrame_Response { + optional .ProfileItem avatar_frame = 1; +} + +message CPlayer_SetAvatarFrame_Request { + optional uint64 communityitemid = 1; +} + +message CPlayer_SetAvatarFrame_Response { +} + +message CPlayer_GetAnimatedAvatar_Request { + optional fixed64 steamid = 1 [(description) = "The player we're asking about"]; + optional string language = 2; +} + +message CPlayer_GetAnimatedAvatar_Response { + optional .ProfileItem avatar = 1; +} + +message CPlayer_SetAnimatedAvatar_Request { + optional uint64 communityitemid = 1; +} + +message CPlayer_SetAnimatedAvatar_Response { +} + +message CPlayer_GetSteamDeckKeyboardSkin_Request { + optional fixed64 steamid = 1 [(description) = "The player we're asking about"]; + optional string language = 2; +} + +message CPlayer_GetSteamDeckKeyboardSkin_Response { + optional .ProfileItem steam_deck_keyboard_skin = 1; +} + +message CPlayer_SetSteamDeckKeyboardSkin_Request { + optional uint64 communityitemid = 1; +} + +message CPlayer_SetSteamDeckKeyboardSkin_Response { +} + +message CPlayer_GetProfileItemsOwned_Request { + optional string language = 1; + repeated .ECommunityItemClass filters = 2; +} + +message CPlayer_GetProfileItemsOwned_Response { + repeated .ProfileItem profile_backgrounds = 1; + repeated .ProfileItem mini_profile_backgrounds = 2; + repeated .ProfileItem avatar_frames = 3; + repeated .ProfileItem animated_avatars = 4; + repeated .ProfileItem profile_modifiers = 5; + repeated .ProfileItem steam_deck_keyboard_skins = 6; + repeated .ProfileItem steam_deck_startup_movies = 7; +} + +message CPlayer_GetProfileItemsEquipped_Request { + optional fixed64 steamid = 1; + optional string language = 2; +} + +message CPlayer_GetProfileItemsEquipped_Response { + optional .ProfileItem profile_background = 1; + optional .ProfileItem mini_profile_background = 2; + optional .ProfileItem avatar_frame = 3; + optional .ProfileItem animated_avatar = 4; + optional .ProfileItem profile_modifier = 5; + optional .ProfileItem steam_deck_keyboard_skin = 6; +} + +message CPlayer_SetEquippedProfileItemFlags_Request { + optional uint64 communityitemid = 1; + optional uint32 flags = 2 [(description) = "Set of EProfileItemEquippedFlag"]; +} + +message CPlayer_SetEquippedProfileItemFlags_Response { +} + +message CPlayer_GetEmoticonList_Request { +} + +message CPlayer_GetEmoticonList_Response { + message Emoticon { + optional string name = 1; + optional int32 count = 2; + optional uint32 time_last_used = 3; + optional uint32 use_count = 4; + optional uint32 time_received = 5; + optional uint32 appid = 6; + } + + repeated .CPlayer_GetEmoticonList_Response.Emoticon emoticons = 1; +} + +message CPlayer_GetTopAchievementsForGames_Request { + optional uint64 steamid = 1; + optional string language = 2; + optional uint32 max_achievements = 3 [(description) = "The max achievements to load. Max 8"]; + repeated uint32 appids = 4; +} + +message CPlayer_GetTopAchievementsForGames_Response { + message Achievement { + optional uint32 statid = 1; + optional uint32 bit = 2; + optional string name = 3; + optional string desc = 4; + optional string icon = 5; + optional string icon_gray = 6; + optional bool hidden = 7; + optional string player_percent_unlocked = 8 [(description) = "Formatted to one decimal place, min value is 0.1, max value 100"]; + } + + message Game { + optional uint32 appid = 1; + optional uint32 total_achievements = 2; + repeated .CPlayer_GetTopAchievementsForGames_Response.Achievement achievements = 3; + } + + repeated .CPlayer_GetTopAchievementsForGames_Response.Game games = 1; +} + +message CPlayer_GetAchievementsProgress_Request { + optional uint64 steamid = 1; + optional string language = 2; + repeated uint32 appids = 3; +} + +message CPlayer_GetAchievementsProgress_Response { + message AchievementProgress { + optional uint32 appid = 1; + optional uint32 unlocked = 2; + optional uint32 total = 3; + optional float percentage = 4; + optional bool all_unlocked = 5; + optional uint32 cache_time = 6; + } + + repeated .CPlayer_GetAchievementsProgress_Response.AchievementProgress achievement_progress = 1; +} + +message CPlayer_GetGameAchievements_Request { + optional uint32 appid = 1; + optional string language = 2 [(description) = "Lowercase, language shortnames"]; +} + +message CPlayer_GetGameAchievements_Response { + message Achievement { + optional string internal_name = 1 [(description) = "Will come uppercase, internal facing name set by the partner; needed to associate with user unlock"]; + optional string localized_name = 2; + optional string localized_desc = 3; + optional string icon = 4; + optional string icon_gray = 5; + optional bool hidden = 6; + optional string player_percent_unlocked = 7 [(description) = "Formatted to one decimal place, min value is 0.1, max value 100"]; + } + + repeated .CPlayer_GetGameAchievements_Response.Achievement achievements = 1; +} + +message CPlayer_GetFavoriteBadge_Request { + optional uint64 steamid = 1; +} + +message CPlayer_GetFavoriteBadge_Response { + optional bool has_favorite_badge = 1; + optional uint32 badgeid = 2; + optional uint64 communityitemid = 3; + optional uint32 item_type = 4; + optional uint32 border_color = 5; + optional uint32 appid = 6; + optional uint32 level = 7; +} + +message CPlayer_SetFavoriteBadge_Request { + optional uint64 communityitemid = 1; + optional uint32 badgeid = 2; +} + +message CPlayer_SetFavoriteBadge_Response { +} + +message CPlayer_GetProfileCustomization_Request { + optional fixed64 steamid = 1; + optional bool include_inactive_customizations = 2; + optional bool include_purchased_customizations = 3; +} + +message ProfileCustomizationSlot { + optional uint32 slot = 1; + optional uint32 appid = 2; + optional uint64 publishedfileid = 3; + optional uint64 item_assetid = 4; + optional uint64 item_contextid = 5; + optional string notes = 6; + optional string title = 7; + optional uint32 accountid = 8; + optional uint32 badgeid = 9; + optional uint32 border_color = 10; + optional uint64 item_classid = 11; + optional uint64 item_instanceid = 12; + optional .EBanContentCheckResult ban_check_result = 13 [default = k_EBanContentCheckResult_NotScanned]; +} + +message ProfileCustomization { + optional .EProfileCustomizationType customization_type = 1 [default = k_EProfileCustomizationTypeInvalid]; + optional bool large = 2; + repeated .ProfileCustomizationSlot slots = 3; + optional bool active = 4; + optional .EProfileCustomizationStyle customization_style = 5 [default = k_EProfileCustomizationStyleDefault]; + optional uint64 purchaseid = 6; + optional uint32 level = 7; +} + +message ProfileTheme { + optional string theme_id = 1; + optional string title = 2; +} + +message ProfilePreferences { + optional bool hide_profile_awards = 1; +} + +message CPlayer_GetProfileCustomization_Response { + message PurchasedCustomization { + optional uint64 purchaseid = 1; + optional .EProfileCustomizationType customization_type = 2 [default = k_EProfileCustomizationTypeInvalid]; + optional uint32 level = 3; + } + + repeated .ProfileCustomization customizations = 1; + optional uint32 slots_available = 2; + optional .ProfileTheme profile_theme = 3; + repeated .CPlayer_GetProfileCustomization_Response.PurchasedCustomization purchased_customizations = 4; + optional .ProfilePreferences profile_preferences = 5; +} + +message CPlayer_GetPurchasedProfileCustomizations_Request { + optional fixed64 steamid = 1; +} + +message CPlayer_GetPurchasedProfileCustomizations_Response { + message PurchasedCustomization { + optional uint64 purchaseid = 1; + optional .EProfileCustomizationType customization_type = 2 [default = k_EProfileCustomizationTypeInvalid]; + } + + repeated .CPlayer_GetPurchasedProfileCustomizations_Response.PurchasedCustomization purchased_customizations = 1; +} + +message CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Request { + optional fixed64 steamid = 1; +} + +message CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Response { + message PurchasedCustomization { + optional .EProfileCustomizationType customization_type = 1 [default = k_EProfileCustomizationTypeInvalid]; + optional uint32 count = 2; + } + + message UpgradedCustomization { + optional .EProfileCustomizationType customization_type = 1 [default = k_EProfileCustomizationTypeInvalid]; + optional uint32 level = 2; + } + + repeated .CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Response.PurchasedCustomization purchased_customizations = 1; + repeated .CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Response.UpgradedCustomization upgraded_customizations = 2; +} + +message CPlayer_GetProfileThemesAvailable_Request { +} + +message CPlayer_GetProfileThemesAvailable_Response { + repeated .ProfileTheme profile_themes = 1; +} + +message CPlayer_SetProfileTheme_Request { + optional string theme_id = 1; +} + +message CPlayer_SetProfileTheme_Response { +} + +message CPlayer_SetProfilePreferences_Request { + optional .ProfilePreferences profile_preferences = 1; +} + +message CPlayer_SetProfilePreferences_Response { +} + +message CPlayer_PostStatusToFriends_Request { + optional uint32 appid = 1; + optional string status_text = 2; +} + +message CPlayer_PostStatusToFriends_Response { +} + +message CPlayer_GetPostedStatus_Request { + optional uint64 steamid = 1 [(description) = "The player we're asking about"]; + optional uint64 postid = 2; +} + +message CPlayer_GetPostedStatus_Response { + optional uint32 accountid = 1; + optional uint64 postid = 2; + optional string status_text = 3; + optional bool deleted = 4; + optional uint32 appid = 5; +} + +message CPlayer_DeletePostedStatus_Request { + optional uint64 postid = 1; +} + +message CPlayer_DeletePostedStatus_Response { +} + +message CPlayer_GetLastPlayedTimes_Request { + optional uint32 min_last_played = 1 [(description) = "The most recent last-played time the client already knows about"]; +} + +message CPlayer_GetLastPlayedTimes_Response { + message Game { + optional int32 appid = 1; + optional uint32 last_playtime = 2; + optional int32 playtime_2weeks = 3; + optional int32 playtime_forever = 4; + optional uint32 first_playtime = 5; + optional int32 playtime_windows_forever = 6; + optional int32 playtime_mac_forever = 7; + optional int32 playtime_linux_forever = 8; + optional uint32 first_windows_playtime = 9; + optional uint32 first_mac_playtime = 10; + optional uint32 first_linux_playtime = 11; + optional uint32 last_windows_playtime = 12; + optional uint32 last_mac_playtime = 13; + optional uint32 last_linux_playtime = 14; + } + + repeated .CPlayer_GetLastPlayedTimes_Response.Game games = 1; +} + +message CPlayer_GetTimeSSAAccepted_Request { +} + +message CPlayer_GetTimeSSAAccepted_Response { + optional uint32 time_ssa_accepted = 1; + optional uint32 time_ssa_updated = 2; + optional uint32 time_chinassa_accepted = 3; +} + +message CPlayer_AcceptSSA_Request { + optional .EAgreementType agreement_type = 1 [default = k_EAgreementType_Invalid]; + optional uint32 time_signed_utc = 2; +} + +message CPlayer_AcceptSSA_Response { +} + +message CPlayer_GetNicknameList_Request { +} + +message CPlayer_GetNicknameList_Response { + message PlayerNickname { + optional fixed32 accountid = 1; + optional string nickname = 2; + } + + repeated .CPlayer_GetNicknameList_Response.PlayerNickname nicknames = 1; +} + +message CPlayer_GetPerFriendPreferences_Request { +} + +message PerFriendPreferences { + optional fixed32 accountid = 1; + optional string nickname = 2; + optional .ENotificationSetting notifications_showingame = 3 [default = k_ENotificationSettingNotifyUseDefault]; + optional .ENotificationSetting notifications_showonline = 4 [default = k_ENotificationSettingNotifyUseDefault]; + optional .ENotificationSetting notifications_showmessages = 5 [default = k_ENotificationSettingNotifyUseDefault]; + optional .ENotificationSetting sounds_showingame = 6 [default = k_ENotificationSettingNotifyUseDefault]; + optional .ENotificationSetting sounds_showonline = 7 [default = k_ENotificationSettingNotifyUseDefault]; + optional .ENotificationSetting sounds_showmessages = 8 [default = k_ENotificationSettingNotifyUseDefault]; + optional .ENotificationSetting notifications_sendmobile = 9 [default = k_ENotificationSettingNotifyUseDefault]; +} + +message CPlayer_GetPerFriendPreferences_Response { + repeated .PerFriendPreferences preferences = 1; +} + +message CPlayer_SetPerFriendPreferences_Request { + optional .PerFriendPreferences preferences = 1; +} + +message CPlayer_SetPerFriendPreferences_Response { +} + +message CPlayer_AddFriend_Request { + optional fixed64 steamid = 1 [(description) = "Steam ID of user to whom to send a friend invite."]; +} + +message CPlayer_AddFriend_Response { + optional bool invite_sent = 1 [(description) = "True if the operation was successful, false otherwise."]; + optional uint32 friend_relationship = 2 [(description) = "the resulting relationship. Depending on state, may move directly to friends rather than invite sent"]; + optional int32 result = 3; +} + +message CPlayer_RemoveFriend_Request { + optional fixed64 steamid = 1 [(description) = "Steam ID of friend to remove."]; +} + +message CPlayer_RemoveFriend_Response { + optional uint32 friend_relationship = 1 [(description) = "the resulting relationship"]; +} + +message CPlayer_IgnoreFriend_Request { + optional fixed64 steamid = 1; + optional bool unignore = 2 [(description) = "If set, remove from ignore/block list instead of adding "]; +} + +message CPlayer_IgnoreFriend_Response { + optional uint32 friend_relationship = 1 [(description) = "the resulting relationship"]; +} + +message CPlayer_GetCommunityPreferences_Request { +} + +message CPlayer_CommunityPreferences { + optional bool hide_adult_content_violence = 1 [default = true]; + optional bool hide_adult_content_sex = 2 [default = true]; + optional bool parenthesize_nicknames = 4 [default = false]; + optional .ETextFilterSetting text_filter_setting = 5 [default = k_ETextFilterSettingSteamLabOptedOut]; + optional bool text_filter_ignore_friends = 6 [default = true]; + optional uint32 text_filter_words_revision = 7; + optional uint32 timestamp_updated = 3; +} + +message CPlayer_GetCommunityPreferences_Response { + optional .CPlayer_CommunityPreferences preferences = 1; +} + +message CPlayer_SetCommunityPreferences_Request { + optional .CPlayer_CommunityPreferences preferences = 1; +} + +message CPlayer_SetCommunityPreferences_Response { +} + +message CPlayer_GetTextFilterWords_Request { +} + +message CPlayer_TextFilterWords { + repeated string text_filter_custom_banned_words = 1; + repeated string text_filter_custom_clean_words = 2; + optional uint32 text_filter_words_revision = 3; +} + +message CPlayer_GetTextFilterWords_Response { + optional .CPlayer_TextFilterWords words = 1; +} + +message CPlayer_GetNewSteamAnnouncementState_Request { + optional int32 language = 1; +} + +message CPlayer_GetNewSteamAnnouncementState_Response { + optional .ENewSteamAnnouncementState state = 1 [default = k_ENewSteamAnnouncementState_Invalid]; + optional string announcement_headline = 2; + optional string announcement_url = 3; + optional uint32 time_posted = 4; + optional uint64 announcement_gid = 5; +} + +message CPlayer_UpdateSteamAnnouncementLastRead_Request { + optional uint64 announcement_gid = 1; + optional uint32 time_posted = 2; +} + +message CPlayer_UpdateSteamAnnouncementLastRead_Response { +} + +message CPlayer_GetPrivacySettings_Request { +} + +message CPrivacySettings { + optional int32 privacy_state = 1; + optional int32 privacy_state_inventory = 2; + optional int32 privacy_state_gifts = 3; + optional int32 privacy_state_ownedgames = 4; + optional int32 privacy_state_playtime = 5; + optional int32 privacy_state_friendslist = 6; +} + +message CPlayer_GetPrivacySettings_Response { + optional .CPrivacySettings privacy_settings = 1; +} + +message CPlayer_GetDurationControl_Request { + optional uint32 appid = 1; +} + +message CPlayer_GetDurationControl_Response { + optional bool is_enabled = 1; + optional int32 seconds = 2; + optional int32 seconds_today = 3; + optional bool is_steamchina_account = 4; + optional bool is_age_verified = 5; + optional uint32 seconds_allowed_today = 6; + optional bool age_verification_pending = 7; + optional bool block_minors = 8; +} + +message CPlayer_LastPlayedTimes_Notification { + repeated .CPlayer_GetLastPlayedTimes_Response.Game games = 1; +} + +message CPlayer_FriendNicknameChanged_Notification { + optional fixed32 accountid = 1; + optional string nickname = 2; + optional bool is_echo_to_self = 3; +} + +message CPlayer_FriendEquippedProfileItemsChanged_Notification { + optional fixed32 accountid = 1; +} + +message CPlayer_NewSteamAnnouncementState_Notification { + optional .ENewSteamAnnouncementState state = 1 [default = k_ENewSteamAnnouncementState_Invalid]; + optional string announcement_headline = 2; + optional string announcement_url = 3; + optional uint32 time_posted = 4; + optional uint64 announcement_gid = 5; +} + +message CPlayer_CommunityPreferencesChanged_Notification { + optional .CPlayer_CommunityPreferences preferences = 1; +} + +message CPlayer_TextFilterWordsChanged_Notification { + optional .CPlayer_TextFilterWords words = 1; +} + +message CPlayer_PerFriendPreferencesChanged_Notification { + optional fixed32 accountid = 1; + optional .PerFriendPreferences preferences = 2; +} + +message CPlayer_PrivacySettingsChanged_Notification { + optional .CPrivacySettings privacy_settings = 1; +} + +service Player { + option (service_description) = "A service for accessing Steam player data"; + + rpc GetMutualFriendsForIncomingInvites (.CPlayer_GetMutualFriendsForIncomingInvites_Request) returns (.CPlayer_GetMutualFriendsForIncomingInvites_Response) { + option (method_description) = "Get me the mutual friends for each of my pending incoming invites (individuals and clans)."; + } + + rpc GetOwnedGames (.CPlayer_GetOwnedGames_Request) returns (.CPlayer_GetOwnedGames_Response) { + option (method_description) = "Return a list of games owned by the player"; + } + + rpc GetPlayNext (.CPlayer_GetPlayNext_Request) returns (.CPlayer_GetPlayNext_Response) { + option (method_description) = "Return suggested games for player to play next."; + } + + rpc GetFriendsGameplayInfo (.CPlayer_GetFriendsGameplayInfo_Request) returns (.CPlayer_GetFriendsGameplayInfo_Response) { + option (method_description) = "Get a list of friends who are playing, have played, own, or want a game"; + } + + rpc GetGameBadgeLevels (.CPlayer_GetGameBadgeLevels_Request) returns (.CPlayer_GetGameBadgeLevels_Response) { + option (method_description) = "Returns the Steam Level of a user, the Badge level for the game, and if it's foil"; + } + + rpc GetProfileBackground (.CPlayer_GetProfileBackground_Request) returns (.CPlayer_GetProfileBackground_Response) { + option (method_description) = "Gets which profile background is active for a specific user"; + } + + rpc SetProfileBackground (.CPlayer_SetProfileBackground_Request) returns (.CPlayer_SetProfileBackground_Response) { + option (method_description) = "Sets the user's profile background"; + } + + rpc GetMiniProfileBackground (.CPlayer_GetMiniProfileBackground_Request) returns (.CPlayer_GetMiniProfileBackground_Response) { + option (method_description) = "Gets which mini profile background is active for a specific user"; + } + + rpc SetMiniProfileBackground (.CPlayer_SetMiniProfileBackground_Request) returns (.CPlayer_SetMiniProfileBackground_Response) { + option (method_description) = "Sets the user's mini profile background"; + } + + rpc GetAvatarFrame (.CPlayer_GetAvatarFrame_Request) returns (.CPlayer_GetAvatarFrame_Response) { + option (method_description) = "Gets which avatar frame is active for a specific user"; + } + + rpc SetAvatarFrame (.CPlayer_SetAvatarFrame_Request) returns (.CPlayer_SetAvatarFrame_Response) { + option (method_description) = "Sets the user's avatar frame for their profile"; + } + + rpc GetAnimatedAvatar (.CPlayer_GetAnimatedAvatar_Request) returns (.CPlayer_GetAnimatedAvatar_Response) { + option (method_description) = "Gets which animated avatar is active for a specific user"; + } + + rpc SetAnimatedAvatar (.CPlayer_SetAnimatedAvatar_Request) returns (.CPlayer_SetAnimatedAvatar_Response) { + option (method_description) = "Sets the user's animated avatar for their profile"; + } + + rpc GetSteamDeckKeyboardSkin (.CPlayer_GetSteamDeckKeyboardSkin_Request) returns (.CPlayer_GetSteamDeckKeyboardSkin_Response) { + option (method_description) = "Gets which Steam Deck keyboard skin is active for a specific user"; + } + + rpc SetSteamDeckKeyboardSkin (.CPlayer_SetSteamDeckKeyboardSkin_Request) returns (.CPlayer_SetSteamDeckKeyboardSkin_Response) { + option (method_description) = "Sets the user's current Steam Deck keyboard skin"; + } + + rpc GetProfileItemsOwned (.CPlayer_GetProfileItemsOwned_Request) returns (.CPlayer_GetProfileItemsOwned_Response) { + option (method_description) = "Returns the items the user can equip on their profile"; + } + + rpc GetProfileItemsEquipped (.CPlayer_GetProfileItemsEquipped_Request) returns (.CPlayer_GetProfileItemsEquipped_Response) { + option (method_description) = "Returns the items the user has equipped on their profile"; + } + + rpc SetEquippedProfileItemFlags (.CPlayer_SetEquippedProfileItemFlags_Request) returns (.CPlayer_SetEquippedProfileItemFlags_Response) { + option (method_description) = "Sets special flags on the equipped item"; + } + + rpc GetEmoticonList (.CPlayer_GetEmoticonList_Request) returns (.CPlayer_GetEmoticonList_Response) { + option (method_description) = "Gets a list of the emoticons a user has with metadata"; + } + + rpc GetTopAchievementsForGames (.CPlayer_GetTopAchievementsForGames_Request) returns (.CPlayer_GetTopAchievementsForGames_Response) { + option (method_description) = "Gets the best achievements the user has gotten for the specified list of apps."; + } + + rpc GetAchievementsProgress (.CPlayer_GetAchievementsProgress_Request) returns (.CPlayer_GetAchievementsProgress_Response) { + option (method_description) = "Gets the achievement completion stats for the specified list of apps."; + } + + rpc GetGameAchievements (.CPlayer_GetGameAchievements_Request) returns (.CPlayer_GetGameAchievements_Response) { + option (method_description) = "Get a games available achievements for display purposes."; + } + + rpc GetFavoriteBadge (.CPlayer_GetFavoriteBadge_Request) returns (.CPlayer_GetFavoriteBadge_Response) { + option (method_description) = "Gets the badge the user has set as their favorite"; + } + + rpc SetFavoriteBadge (.CPlayer_SetFavoriteBadge_Request) returns (.CPlayer_SetFavoriteBadge_Response) { + option (method_description) = "Sets the badge as the users favorite"; + } + + rpc GetProfileCustomization (.CPlayer_GetProfileCustomization_Request) returns (.CPlayer_GetProfileCustomization_Response) { + option (method_description) = "Returns the customizations (if any) for a profile"; + } + + rpc GetPurchasedProfileCustomizations (.CPlayer_GetPurchasedProfileCustomizations_Request) returns (.CPlayer_GetPurchasedProfileCustomizations_Response) { + option (method_description) = "Returns the purchased profile customizations"; + } + + rpc GetPurchasedAndUpgradedProfileCustomizations (.CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Request) returns (.CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Response) { + option (method_description) = "Returns the purchased and upgraded profile customizations"; + } + + rpc GetProfileThemesAvailable (.CPlayer_GetProfileThemesAvailable_Request) returns (.CPlayer_GetProfileThemesAvailable_Response) { + option (method_description) = "Gets themes available for the user."; + } + + rpc SetProfileTheme (.CPlayer_SetProfileTheme_Request) returns (.CPlayer_SetProfileTheme_Response) { + option (method_description) = "Selects a theme for the profile"; + } + + rpc SetProfilePreferences (.CPlayer_SetProfilePreferences_Request) returns (.CPlayer_SetProfilePreferences_Response) { + option (method_description) = "Sets profile preferences"; + } + + rpc PostStatusToFriends (.CPlayer_PostStatusToFriends_Request) returns (.CPlayer_PostStatusToFriends_Response) { + option (method_description) = "Posts custom status text into the blotter"; + } + + rpc GetPostedStatus (.CPlayer_GetPostedStatus_Request) returns (.CPlayer_GetPostedStatus_Response) { + option (method_description) = "Gets a posted status text for a user by id"; + } + + rpc DeletePostedStatus (.CPlayer_DeletePostedStatus_Request) returns (.CPlayer_DeletePostedStatus_Response) { + option (method_description) = "Deletes a posted status text for a user by id"; + } + + rpc ClientGetLastPlayedTimes (.CPlayer_GetLastPlayedTimes_Request) returns (.CPlayer_GetLastPlayedTimes_Response) { + option (method_description) = "Gets the last-played times for the account"; + } + + rpc GetTimeSSAAccepted (.CPlayer_GetTimeSSAAccepted_Request) returns (.CPlayer_GetTimeSSAAccepted_Response) { + option (method_description) = "Gets the time when the user accepted the SSA"; + } + + rpc AcceptSSA (.CPlayer_AcceptSSA_Request) returns (.CPlayer_AcceptSSA_Response) { + option (method_description) = "User is accepting the SSA"; + } + + rpc GetNicknameList (.CPlayer_GetNicknameList_Request) returns (.CPlayer_GetNicknameList_Response) { + option (method_description) = "Gets the list of nicknames this user has for other users"; + } + + rpc GetPerFriendPreferences (.CPlayer_GetPerFriendPreferences_Request) returns (.CPlayer_GetPerFriendPreferences_Response) { + option (method_description) = "Gets the list of per-friend preferences this user has set for other users"; + } + + rpc SetPerFriendPreferences (.CPlayer_SetPerFriendPreferences_Request) returns (.CPlayer_SetPerFriendPreferences_Response) { + option (method_description) = "Sets the logged in user's per-friend preferences for the given user"; + } + + rpc AddFriend (.CPlayer_AddFriend_Request) returns (.CPlayer_AddFriend_Response) { + option (method_description) = "Invites another Steam user to be a friend"; + } + + rpc RemoveFriend (.CPlayer_RemoveFriend_Request) returns (.CPlayer_RemoveFriend_Response) { + option (method_description) = "Removes a friend or ignores a friend suggestion"; + } + + rpc IgnoreFriend (.CPlayer_IgnoreFriend_Request) returns (.CPlayer_IgnoreFriend_Response) { + option (method_description) = "Blocks or unblocks communication with the user. Despite name, can be a non-friend."; + } + + rpc GetCommunityPreferences (.CPlayer_GetCommunityPreferences_Request) returns (.CPlayer_GetCommunityPreferences_Response) { + option (method_description) = "Returns the player's community preferences"; + } + + rpc SetCommunityPreferences (.CPlayer_SetCommunityPreferences_Request) returns (.CPlayer_SetCommunityPreferences_Response) { + option (method_description) = "Sets the player's community preferences"; + } + + rpc GetTextFilterWords (.CPlayer_GetTextFilterWords_Request) returns (.CPlayer_GetTextFilterWords_Response) { + option (method_description) = "Get the custom text filtering dictionary for this user"; + } + + rpc GetNewSteamAnnouncementState (.CPlayer_GetNewSteamAnnouncementState_Request) returns (.CPlayer_GetNewSteamAnnouncementState_Response) { + option (method_description) = "Calculates and returns what to display for UI that renders new steam announcement available"; + } + + rpc UpdateSteamAnnouncementLastRead (.CPlayer_UpdateSteamAnnouncementLastRead_Request) returns (.CPlayer_UpdateSteamAnnouncementLastRead_Response) { + option (method_description) = "Marks latest announcement timestamp read by user"; + } + + rpc GetPrivacySettings (.CPlayer_GetPrivacySettings_Request) returns (.CPlayer_GetPrivacySettings_Response) { + option (method_description) = "Get current privacy settings."; + } + + rpc GetDurationControl (.CPlayer_GetDurationControl_Request) returns (.CPlayer_GetDurationControl_Response) { + option (method_description) = "Get gameplay duration control settings."; + } +} + +service PlayerClient { + option (service_description) = "Steam player data client notifications"; + option (service_execution_site) = k_EProtoExecutionSiteSteamClient; + + rpc NotifyLastPlayedTimes (.CPlayer_LastPlayedTimes_Notification) returns (.NoResponse) { + option (method_description) = "Notification from server to client of more recent play time"; + } + + rpc NotifyFriendNicknameChanged (.CPlayer_FriendNicknameChanged_Notification) returns (.NoResponse) { + option (method_description) = "Notification from server to client that a friend's nickname has changed"; + } + + rpc NotifyFriendEquippedProfileItemsChanged (.CPlayer_FriendEquippedProfileItemsChanged_Notification) returns (.NoResponse) { + option (method_description) = "Notification from server to client that a friend's equipped profile items have changed"; + } + + rpc NotifyNewSteamAnnouncementState (.CPlayer_NewSteamAnnouncementState_Notification) returns (.NoResponse) { + option (method_description) = "Notifies client of changes to steam announcement state for user"; + } + + rpc NotifyCommunityPreferencesChanged (.CPlayer_CommunityPreferencesChanged_Notification) returns (.NoResponse) { + option (method_description) = "Notification from server to client that their community preferences have changed"; + } + + rpc NotifyTextFilterWordsChanged (.CPlayer_TextFilterWordsChanged_Notification) returns (.NoResponse) { + option (method_description) = "Notification from server to client that their text filtering dictionary has changed"; + } + + rpc NotifyPerFriendPreferencesChanged (.CPlayer_PerFriendPreferencesChanged_Notification) returns (.NoResponse) { + option (method_description) = "Notification from server that per-friend preferences have changed"; + } + + rpc NotifyPrivacyPrivacySettingsChanged (.CPlayer_PrivacySettingsChanged_Notification) returns (.NoResponse) { + option (method_description) = "Notification from server that privacy settings changed"; + } +} diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_remoteclient_service.steamclient.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_remoteclient_service.steamclient.proto new file mode 100644 index 00000000..f16df2cc --- /dev/null +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_remoteclient_service.steamclient.proto @@ -0,0 +1,93 @@ +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_base.proto"; +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_unified_base.steamclient.proto"; +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_remoteclient_service_messages.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; + +option optimize_for = SPEED; +option java_generic_services = false; + +service RemoteClient { + option (service_description) = "Methods for Steam remote client operations"; + + rpc GetPairingInfo (.CRemoteClient_GetPairingInfo_Request) returns (.CRemoteClient_GetPairingInfo_Response) { + option (method_description) = "Get pairing info for an entered PIN"; + } + + rpc NotifyOnline (.CRemoteClient_Online_Notification) returns (.NoResponse) { + option (method_description) = "Let the service know we're available for status listeners"; + } + + rpc NotifyReplyPacket (.CRemoteClient_ReplyPacket_Notification) returns (.NoResponse) { + option (method_description) = "Send a reply to a remote client"; + } + + rpc AllocateTURNServer (.CRemoteClient_AllocateTURNServer_Request) returns (.CRemoteClient_AllocateTURNServer_Response) { + option (method_description) = "Allocate a TURN server for a streaming session"; + } + + rpc AllocateRelayServer (.CRemoteClient_AllocateRelayServer_Request) returns (.CRemoteClient_AllocateRelayServer_Response) { + option (method_description) = "Allocate a UDP relay server for a streaming session"; + } + + rpc AllocateSDR (.CRemoteClient_AllocateSDR_Request) returns (.CRemoteClient_AllocateSDR_Response) { + option (method_description) = "Allocate SDR resources for an app"; + } + + rpc SendSteamBroadcastPacket (.CRemoteClient_SteamBroadcast_Notification) returns (.NoResponse) { + option (method_description) = "Broadcast a packet to remote Steam clients"; + } + + rpc SendSteamToSteamPacket (.CRemoteClient_SteamToSteam_Notification) returns (.NoResponse) { + option (method_description) = "Send a packet to a remote Steam client"; + } + + rpc SendRemotePlaySessionStarted (.CRemotePlay_SessionStarted_Request) returns (.CRemotePlay_SessionStarted_Response) { + option (method_description) = "Let the server know that we started a Remote Play session"; + } + + rpc SendRemotePlaySessionStopped (.CRemotePlay_SessionStopped_Notification) returns (.NoResponse) { + option (method_description) = "Let the server know that we stopped a Remote Play session"; + } + + rpc SendRemotePlayTogetherPacket (.CRemotePlayTogether_Notification) returns (.NoResponse) { + option (method_description) = "Send a Remote Play Together packet to a Steam client"; + } + + rpc CreateRemotePlayTogetherInvitation (.CRemoteClient_CreateRemotePlayTogetherInvitation_Request) returns (.CRemoteClient_CreateRemotePlayTogetherInvitation_Response) { + option (method_description) = "Create a Remote Play Together invitation"; + } + + rpc DeleteRemotePlayTogetherInvitation (.CRemoteClient_DeleteRemotePlayTogetherInvitation_Request) returns (.CRemoteClient_DeleteRemotePlayTogetherInvitation_Response) { + option (method_description) = "Delete a Remote Play Together invitation"; + } +} + +service RemoteClientSteamClient { + option (service_description) = "Methods for Steam remote client operations"; + option (service_execution_site) = k_EProtoExecutionSiteSteamClient; + + rpc NotifyRegisterStatusUpdate (.CRemoteClient_RegisterStatusUpdate_Notification) returns (.NoResponse) { + option (method_description) = "Register for status updates with a Steam client"; + } + + rpc NotifyUnregisterStatusUpdate (.CRemoteClient_UnregisterStatusUpdate_Notification) returns (.NoResponse) { + option (method_description) = "Unregister for status updates with a Steam client"; + } + + rpc NotifyRemotePacket (.CRemoteClient_RemotePacket_Notification) returns (.NoResponse) { + option (method_description) = "Send a packet to a Steam client"; + } + + rpc NotifySteamBroadcastPacket (.CRemoteClient_SteamBroadcast_Notification) returns (.NoResponse) { + option (method_description) = "Broadcast a packet to remote Steam clients"; + } + + rpc NotifySteamToSteamPacket (.CRemoteClient_SteamToSteam_Notification) returns (.NoResponse) { + option (method_description) = "Send a packet to a Steam client from a remote Steam client"; + } + + rpc NotifyRemotePlayTogetherPacket (.CRemotePlayTogether_Notification) returns (.NoResponse) { + option (method_description) = "Send a Remote Play Together packet to a Steam client"; + } +} \ No newline at end of file diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_remoteclient_service_messages.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_remoteclient_service_messages.proto new file mode 100644 index 00000000..a5c89e16 --- /dev/null +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_remoteclient_service_messages.proto @@ -0,0 +1,201 @@ +option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; + +option optimize_for = SPEED; +option java_generic_services = false; + +message CRemoteClient_CreateSession_Request { +} + +message CRemoteClient_CreateSession_Response { + optional fixed64 session_id = 1; + optional int32 euniverse = 2; +} + +message CRemoteClient_StartPairing_Request { + optional fixed64 session_id = 1; +} + +message CRemoteClient_StartPairing_Response { + optional uint32 pin = 1; +} + +message CRemoteClient_SetPairingInfo_Request { + optional fixed64 session_id = 1; + optional fixed64 device_id = 2; + optional bytes request = 3; +} + +message CRemoteClient_SetPairingInfo_Response { +} + +message CRemoteClient_GetPairingInfo_Request { + optional uint32 pin = 1; +} + +message CRemoteClient_GetPairingInfo_Response { + optional fixed64 session_id = 1; + optional fixed64 device_id = 2; + optional bytes request = 3; +} + +message CRemoteClient_CancelPairing_Request { + optional fixed64 session_id = 1; +} + +message CRemoteClient_CancelPairing_Response { +} + +message CRemoteClient_RegisterStatusUpdate_Notification { + optional fixed64 session_id = 1; + optional fixed64 steamid = 2; + optional fixed64 device_id = 3; +} + +message CRemoteClient_UnregisterStatusUpdate_Notification { + optional fixed64 session_id = 1; + optional fixed64 steamid = 2; +} + +message CRemoteClient_Online_Notification { + optional fixed64 steamid = 1; +} + +message CRemoteClient_RemotePacket_Notification { + optional fixed64 session_id = 1; + optional fixed64 steamid = 2; + optional bytes payload = 4; +} + +message CRemoteClient_ReplyPacket_Notification { + optional fixed64 session_id = 1; + optional bytes payload = 2; +} + +message CRemoteClient_GetReplies_Request { + optional fixed64 session_id = 1; +} + +message CRemoteClient_GetReplies_Response { + repeated bytes payload = 1; +} + +message CRemoteClient_AllocateTURNServer_Request { + optional uint32 cellid = 1; + optional string credentials = 2; +} + +message CRemoteClient_AllocateTURNServer_Response { + optional string turn_server = 1; +} + +message CRemoteClient_AllocateRelayServer_Request { + optional uint32 cellid = 1; + optional string credentials = 2; +} + +message CRemoteClient_AllocateRelayServer_Response { + optional string relay_server = 1; +} + +message CRemoteClient_AllocateSDR_Request { + optional uint32 appid = 1; +} + +message CRemoteClient_AllocateSDR_Response { +} + +message CRemoteClient_SteamBroadcast_Notification { + optional fixed64 steamid = 1; + optional fixed64 clientid = 2; + optional bytes payload = 3; +} + +message CRemoteClient_SteamToSteam_Notification { + optional fixed64 steamid = 1; + optional fixed64 src_clientid = 2; + optional fixed64 dst_clientid = 3; + optional uint32 secretid = 4; + optional bytes encrypted_payload = 5; +} + +message CRemotePlay_SessionStarted_Request { + optional uint32 host_account_id = 1; + optional uint32 client_account_id = 2; + optional uint32 appid = 3; + optional int32 device_form_factor = 4; + optional bool remote_play_together = 5; + optional bool guest_session = 6; +} + +message CRemotePlay_SessionStarted_Response { + optional fixed64 record_id = 1; +} + +message CRemotePlay_SessionStopped_Notification { + optional fixed64 record_id = 1; + optional bool used_x264 = 2; + optional bool used_h264 = 3; + optional bool used_hevc = 4; +} + +message CRemotePlayTogether_Notification { + message Player { + optional fixed64 steamid = 1; + optional uint32 guestid = 2; + optional bytes avatar_hash = 3; + optional bool keyboard_enabled = 4; + optional bool mouse_enabled = 5; + optional bool controller_enabled = 6; + } + + message ControllerSlot_obsolete { + optional uint32 slotid = 1; + optional fixed64 steamid = 2; + } + + message ControllerSlot { + optional uint32 slotid = 1; + optional .CRemotePlayTogether_Notification.Player player = 2; + } + + message GroupUpdated { + optional fixed64 host_steamid = 1; + optional fixed64 host_clientid = 2; + repeated fixed64 players_obsolete = 3; + optional fixed64 host_gameid = 4; + repeated .CRemotePlayTogether_Notification.ControllerSlot_obsolete controller_slots_obsolete = 5; + optional bool has_new_players = 6; + repeated .CRemotePlayTogether_Notification.Player player_slots = 7; + repeated .CRemotePlayTogether_Notification.ControllerSlot controller_slots = 8; + } + + optional fixed64 steamid = 1; + + oneof Message { + .CRemotePlayTogether_Notification.GroupUpdated group_updated = 2; + } +} + +message CRemoteClient_CreateRemotePlayTogetherInvitation_Request { + optional uint32 appid = 1; + optional string launch_parameters = 2; +} + +message CRemoteClient_CreateRemotePlayTogetherInvitation_Response { + optional string invitation_code = 1; +} + +message CRemoteClient_DeleteRemotePlayTogetherInvitation_Request { + optional string invitation_code = 1; +} + +message CRemoteClient_DeleteRemotePlayTogetherInvitation_Response { +} + +message CRemoteClient_LookupRemotePlayTogetherInvitation_Request { + optional string invitation_code = 1; +} + +message CRemoteClient_LookupRemotePlayTogetherInvitation_Response { + optional string invitation_url = 1; +} \ No newline at end of file diff --git a/src/main/steamd/in/dragonbra/javasteam/emsg.steamd b/src/main/steamd/in/dragonbra/javasteam/emsg.steamd index bc934bd2..9426b044 100644 --- a/src/main/steamd/in/dragonbra/javasteam/emsg.steamd +++ b/src/main/steamd/in/dragonbra/javasteam/emsg.steamd @@ -70,6 +70,7 @@ enum EMsg UpdateScheduledTaskEnableState_TEST = 244; UpdateScheduledTaskEnableStateResponse_TEST = 245; ContentDescriptionDeltaUpdate = 246; + GMShellAndServerAddressUpdates = 247; BaseGM = 300; Heartbeat = 300; @@ -100,6 +101,7 @@ enum EMsg GMTestNextBuildSchemaConversionResponse = 335; ExpectShellRestart = 336; HotFixProgress = 337; + GMStatsForwardToAdminConnections = 338; BaseAIS = 400; AISRefreshContentDescription = 401; removed @@ -705,6 +707,12 @@ enum EMsg GCHAccountPhoneNumberChange = 2236; GCHAccountTwoFactorChange = 2237; GCHInviteUserToLobby = 2238; + GCHUpdateMultipleSessions = 2239; + GCHMarkAppSessionsAuthoritative = 2240; + GCHRecurringSubscriptionStatusChange = 2241; + GCHAppCheersReceived = 2242; + GCHAppCheersGetAllowedTypes = 2243; + GCHAppCheersGetAllowedTypesResponse = 2244; BaseP2P = 2500; P2PIntroducerMessage = 2502; @@ -1222,6 +1230,8 @@ enum EMsg AMRequestPersonaUpdateForChatServer = 4420; AMPerfectWorldPayment = 4421; AMPerfectWorldPaymentResponse = 4422; + AMECommPayPayment = 4423; + AMECommPayPaymentResponse = 4424; BasePSRange = 5000; PSCreateShoppingCart = 5001; @@ -1987,6 +1997,8 @@ enum EMsg ClientVoiceCallPreAuthorizeResponse = 9801; ClientServerTimestampRequest = 9802; ClientServerTimestampResponse = 9803; + ServiceMethodCallFromClientNonAuthed = 9804; + ClientHello = 9805; ClientLANP2PBase = 9900; ClientLANP2PRequestChunk = 9900; From db8f398a727ccfaf9359a36f353aaaf4481ac9cf Mon Sep 17 00:00:00 2001 From: Lossy Date: Sun, 1 Jan 2023 01:35:46 -0600 Subject: [PATCH 02/22] Upload rpc methods as an interface --- .../in/dragonbra/javasteam/rpc/IChat.java | 7 ++ .../in/dragonbra/javasteam/rpc/IChatRoom.java | 112 ++++++++++++++++++ .../javasteam/rpc/IChatRoomClient.java | 28 +++++ .../javasteam/rpc/IChatUsability.java | 8 ++ .../javasteam/rpc/IChatUsabilityClient.java | 9 ++ .../javasteam/rpc/IClanChatRooms.java | 9 ++ .../rpc/IContentServerDirectory.java | 13 ++ .../javasteam/rpc/IFriendMessages.java | 18 +++ .../javasteam/rpc/IFriendMessagesClient.java | 12 ++ .../in/dragonbra/javasteam/rpc/IParental.java | 25 ++++ .../javasteam/rpc/IParentalClient.java | 12 ++ .../in/dragonbra/javasteam/rpc/IPlayer.java | 99 ++++++++++++++++ .../javasteam/rpc/IPlayerClient.java | 22 ++++ .../javasteam/rpc/IRemoteClient.java | 32 +++++ .../rpc/IRemoteClientSteamClient.java | 18 +++ .../java/in/dragonbra/javasteam/rpc/README.md | 1 + 16 files changed, 425 insertions(+) create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IChat.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IChatRoom.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IChatRoomClient.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IChatUsability.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IChatUsabilityClient.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IClanChatRooms.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IContentServerDirectory.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IFriendMessages.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IFriendMessagesClient.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IParental.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IParentalClient.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IPlayer.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IPlayerClient.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IRemoteClient.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IRemoteClientSteamClient.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/README.md diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IChat.java b/src/main/java/in/dragonbra/javasteam/rpc/IChat.java new file mode 100644 index 00000000..5451ecb9 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IChat.java @@ -0,0 +1,7 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.*; + +public interface IChat { + CChat_RequestFriendPersonaStates_Response RequestFriendPersonaStates(CChat_RequestFriendPersonaStates_Request request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IChatRoom.java b/src/main/java/in/dragonbra/javasteam/rpc/IChatRoom.java new file mode 100644 index 00000000..f7e0b7b1 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IChatRoom.java @@ -0,0 +1,112 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.*; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.*; + +public interface IChatRoom { + CChatRoom_CreateChatRoomGroup_Response CreateChatRoomGroup(CChatRoom_CreateChatRoomGroup_Request request); + + CChatRoom_SaveChatRoomGroup_Response SaveChatRoomGroup(CChatRoom_SaveChatRoomGroup_Request request); + + CChatRoom_RenameChatRoomGroup_Response RenameChatRoomGroup(CChatRoom_RenameChatRoomGroup_Request request); + + CChatRoom_SetChatRoomGroupTagline_Response SetChatRoomGroupTagline(CChatRoom_SetChatRoomGroupTagline_Request request); + + CChatRoom_SetChatRoomGroupAvatar_Response SetChatRoomGroupAvatar(CChatRoom_SetChatRoomGroupAvatar_Request request); + + CChatRoom_SetChatRoomGroupWatchingBroadcast_Response SetChatRoomGroupWatchingBroadcast(CChatRoom_SetChatRoomGroupWatchingBroadcast_Request request); + + CChatRoom_JoinMiniGameForChatRoomGroup_Response JoinMiniGameForChatRoomGroup(CChatRoom_JoinMiniGameForChatRoomGroup_Request request); + + CChatRoom_EndMiniGameForChatRoomGroup_Response EndMiniGameForChatRoomGroup(CChatRoom_EndMiniGameForChatRoomGroup_Request request); + + CChatRoom_MuteUser_Response MuteUserInGroup(CChatRoom_MuteUser_Request request); + + CChatRoom_KickUser_Response KickUserFromGroup(CChatRoom_KickUser_Request request); + + CChatRoom_SetUserBanState_Response SetUserBanState(CChatRoom_SetUserBanState_Request request); + + CChatRoom_RevokeInvite_Response RevokeInviteToGroup(CChatRoom_RevokeInvite_Request request); + + CChatRoom_CreateRole_Response CreateRole(CChatRoom_CreateRole_Request request); + + CChatRoom_GetRoles_Response GetRoles(CChatRoom_GetRoles_Request request); + + CChatRoom_RenameRole_Response RenameRole(CChatRoom_RenameRole_Request request); + + CChatRoom_ReorderRole_Response ReorderRole(CChatRoom_ReorderRole_Request request); + + CChatRoom_DeleteRole_Response DeleteRole(CChatRoom_DeleteRole_Request request); + + CChatRoom_GetRoleActions_Response GetRoleActions(CChatRoom_GetRoleActions_Request request); + + CChatRoom_ReplaceRoleActions_Response ReplaceRoleActions(CChatRoom_ReplaceRoleActions_Request request); + + CChatRoom_AddRoleToUser_Response AddRoleToUser(CChatRoom_AddRoleToUser_Request request); + + CChatRoom_GetRolesForUser_Response GetRolesForUser(CChatRoom_GetRolesForUser_Request request); + + CChatRoom_DeleteRoleFromUser_Response DeleteRoleFromUser(CChatRoom_DeleteRoleFromUser_Request request); + + CChatRoom_JoinChatRoomGroup_Response JoinChatRoomGroup(CChatRoom_JoinChatRoomGroup_Request request); + + CChatRoom_InviteFriendToChatRoomGroup_Response InviteFriendToChatRoomGroup(CChatRoom_InviteFriendToChatRoomGroup_Request request); + + CChatRoom_LeaveChatRoomGroup_Response LeaveChatRoomGroup(CChatRoom_LeaveChatRoomGroup_Request request); + + CChatRoom_CreateChatRoom_Response CreateChatRoom(CChatRoom_CreateChatRoom_Request request); + + CChatRoom_DeleteChatRoom_Response DeleteChatRoom(CChatRoom_DeleteChatRoom_Request request); + + CChatRoom_RenameChatRoom_Response RenameChatRoom(CChatRoom_RenameChatRoom_Request request); + + CChatRoom_ReorderChatRoom_Response ReorderChatRoom(CChatRoom_ReorderChatRoom_Request request); + + CChatRoom_SendChatMessage_Response SendChatMessage(CChatRoom_SendChatMessage_Request request); + + CChatRoom_JoinVoiceChat_Response JoinVoiceChat(CChatRoom_JoinVoiceChat_Request request); + + CChatRoom_LeaveVoiceChat_Response LeaveVoiceChat(CChatRoom_LeaveVoiceChat_Request request); + + CChatRoom_GetMessageHistory_Response GetMessageHistory(CChatRoom_GetMessageHistory_Request request); + + CChatRoom_GetMyChatRoomGroups_Response GetMyChatRoomGroups(CChatRoom_GetMyChatRoomGroups_Request request); + + CChatRoom_GetChatRoomGroupState_Response GetChatRoomGroupState(CChatRoom_GetChatRoomGroupState_Request request); + + CChatRoom_GetChatRoomGroupSummary_Response GetChatRoomGroupSummary(CChatRoom_GetChatRoomGroupSummary_Request request); + + CChatRoom_SetAppChatRoomGroupForceActive_Response SetAppChatRoomGroupForceActive(CChatRoom_SetAppChatRoomGroupForceActive_Request request); + + NoResponse SetAppChatRoomGroupStopForceActive(CChatRoom_SetAppChatRoomGroupStopForceActive_Notification request); + + NoResponse AckChatMessage(CChatRoom_AckChatMessage_Notification request); + + CChatRoom_CreateInviteLink_Response CreateInviteLink(CChatRoom_CreateInviteLink_Request request); + + CChatRoom_GetInviteLinkInfo_Response GetInviteLinkInfo(CChatRoom_GetInviteLinkInfo_Request request); + + CChatRoom_GetInviteInfo_Response GetInviteInfo(CChatRoom_GetInviteInfo_Request request); + + CChatRoom_GetInviteLinksForGroup_Response GetInviteLinksForGroup(CChatRoom_GetInviteLinksForGroup_Request request); + + CChatRoom_GetBanList_Response GetBanList(CChatRoom_GetBanList_Request request); + + CChatRoom_GetInviteList_Response GetInviteList(CChatRoom_GetInviteList_Request request); + + CChatRoom_DeleteInviteLink_Response DeleteInviteLink(CChatRoom_DeleteInviteLink_Request request); + + CChatRoom_SetSessionActiveChatRoomGroups_Response SetSessionActiveChatRoomGroups(CChatRoom_SetSessionActiveChatRoomGroups_Request request); + + CChatRoom_SetUserChatGroupPreferences_Response SetUserChatGroupPreferences(CChatRoom_SetUserChatGroupPreferences_Request request); + + CChatRoom_DeleteChatMessages_Response DeleteChatMessages(CChatRoom_DeleteChatMessages_Request request); + + NoResponse UpdateMemberListView(CChatRoom_UpdateMemberListView_Notification request); + + CChatRoom_SearchMembers_Response SearchMembers(CChatRoom_SearchMembers_Request request); + + CChatRoom_UpdateMessageReaction_Response UpdateMessageReaction(CChatRoom_UpdateMessageReaction_Request request); + + CChatRoom_GetMessageReactionReactors_Response GetMessageReactionReactors(CChatRoom_GetMessageReactionReactors_Request request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IChatRoomClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IChatRoomClient.java new file mode 100644 index 00000000..d1690a8b --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IChatRoomClient.java @@ -0,0 +1,28 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.*; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.*; + +public interface IChatRoomClient { + NoResponse NotifyIncomingChatMessage(CChatRoom_IncomingChatMessage_Notification request); + + NoResponse NotifyChatMessageModified(CChatRoom_ChatMessageModified_Notification request); + + NoResponse NotifyMemberStateChange(CChatRoom_MemberStateChange_Notification request); + + NoResponse NotifyChatRoomHeaderStateChange(CChatRoom_ChatRoomHeaderState_Notification request); + + NoResponse NotifyChatRoomGroupRoomsChange(CChatRoom_ChatRoomGroupRoomsChange_Notification request); + + NoResponse NotifyShouldRejoinChatRoomVoiceChat(CChatRoom_NotifyShouldRejoinChatRoomVoiceChat_Notification request); + + NoResponse NotifyChatGroupUserStateChanged(ChatRoomClient_NotifyChatGroupUserStateChanged_Notification request); + + NoResponse NotifyAckChatMessageEcho(CChatRoom_AckChatMessage_Notification request); + + NoResponse NotifyChatRoomDisconnect(ChatRoomClient_NotifyChatRoomDisconnect_Notification request); + + NoResponse NotifyMemberListViewUpdated(CChatRoomClient_MemberListViewUpdated_Notification request); + + NoResponse NotifyMessageReaction(CChatRoom_MessageReaction_Notification request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IChatUsability.java b/src/main/java/in/dragonbra/javasteam/rpc/IChatUsability.java new file mode 100644 index 00000000..3787aa74 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IChatUsability.java @@ -0,0 +1,8 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.*; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.*; + +public interface IChatUsability { + NoResponse NotifyClientUsabilityMetrics(CChatUsability_ClientUsabilityMetrics_Notification request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IChatUsabilityClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IChatUsabilityClient.java new file mode 100644 index 00000000..02085265 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IChatUsabilityClient.java @@ -0,0 +1,9 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.*; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.*; + +public interface IChatUsabilityClient { + NoResponse NotifyRequestClientUsabilityMetrics(CChatUsability_RequestClientUsabilityMetrics_Notification request); +} + diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IClanChatRooms.java b/src/main/java/in/dragonbra/javasteam/rpc/IClanChatRooms.java new file mode 100644 index 00000000..49736216 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IClanChatRooms.java @@ -0,0 +1,9 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.*; + +public interface IClanChatRooms { + CClanChatRooms_GetClanChatRoomInfo_Response GetClanChatRoomInfo(CClanChatRooms_GetClanChatRoomInfo_Request request); + + CClanChatRooms_SetClanChatRoomPrivate_Response SetClanChatRoomPrivate(CClanChatRooms_SetClanChatRoomPrivate_Request request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IContentServerDirectory.java b/src/main/java/in/dragonbra/javasteam/rpc/IContentServerDirectory.java new file mode 100644 index 00000000..7e436c5b --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IContentServerDirectory.java @@ -0,0 +1,13 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesContentsystemSteamclient.*; + +public interface IContentServerDirectory { + CContentServerDirectory_GetServersForSteamPipe_Response GetServersForSteamPipe(CContentServerDirectory_GetServersForSteamPipe_Request request); + + CContentServerDirectory_GetDepotPatchInfo_Response GetDepotPatchInfo(CContentServerDirectory_GetDepotPatchInfo_Request request); + + CContentServerDirectory_GetClientUpdateHosts_Response GetClientUpdateHosts(CContentServerDirectory_GetClientUpdateHosts_Request request); + + CContentServerDirectory_GetManifestRequestCode_Response GetManifestRequestCode(CContentServerDirectory_GetManifestRequestCode_Request request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessages.java b/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessages.java new file mode 100644 index 00000000..59ccf6a9 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessages.java @@ -0,0 +1,18 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesFriendmessagesSteamclient.*; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.NoResponse; + +public interface IFriendMessages { + CFriendMessages_GetRecentMessages_Response GetRecentMessages(CFriendMessages_GetRecentMessages_Request request); + + CFriendsMessages_GetActiveMessageSessions_Response GetActiveMessageSessions(CFriendsMessages_GetActiveMessageSessions_Request request); + + CFriendMessages_SendMessage_Response SendMessage(CFriendMessages_SendMessage_Request request); + + NoResponse AckMessage(CFriendMessages_AckMessage_Notification request); + + CFriendMessages_IsInFriendsUIBeta_Response IsInFriendsUIBeta(CFriendMessages_IsInFriendsUIBeta_Request request); + + CFriendMessages_UpdateMessageReaction_Response UpdateMessageReaction(CFriendMessages_UpdateMessageReaction_Request request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessagesClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessagesClient.java new file mode 100644 index 00000000..3c6d276a --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessagesClient.java @@ -0,0 +1,12 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesFriendmessagesSteamclient.*; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.NoResponse; + +public interface IFriendMessagesClient { + NoResponse IncomingMessage(CFriendMessages_IncomingMessage_Notification request); + + NoResponse NotifyAckMessageEcho(CFriendMessages_AckMessage_Notification request); + + NoResponse MessageReaction(CFriendMessages_MessageReaction_Notification request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IParental.java b/src/main/java/in/dragonbra/javasteam/rpc/IParental.java new file mode 100644 index 00000000..f0c77099 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IParental.java @@ -0,0 +1,25 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesParentalSteamclient.*; + +public interface IParental { + CParental_EnableParentalSettings_Response EnableParentalSettings(CParental_EnableParentalSettings_Request request); + + CParental_DisableParentalSettings_Response DisableParentalSettings(CParental_DisableParentalSettings_Request request); + + CParental_GetParentalSettings_Response GetParentalSettings(CParental_GetParentalSettings_Request request); + + CParental_GetSignedParentalSettings_Response GetSignedParentalSettings(CParental_GetSignedParentalSettings_Request request); + + CParental_SetParentalSettings_Response SetParentalSettings(CParental_SetParentalSettings_Request request); + + CParental_ValidateToken_Response ValidateToken(CParental_ValidateToken_Request request); + + CParental_ValidatePassword_Response ValidatePassword(CParental_ValidatePassword_Request request); + + CParental_LockClient_Response LockClient(CParental_LockClient_Request request); + + CParental_RequestRecoveryCode_Response RequestRecoveryCode(CParental_RequestRecoveryCode_Request request); + + CParental_DisableWithRecoveryCode_Response DisableWithRecoveryCode(CParental_DisableWithRecoveryCode_Request request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IParentalClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IParentalClient.java new file mode 100644 index 00000000..b0aa887f --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IParentalClient.java @@ -0,0 +1,12 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesParentalSteamclient.*; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.NoResponse; + +public interface IParentalClient { + NoResponse NotifySettingsChange(CParental_ParentalSettingsChange_Notification request); + + NoResponse NotifyUnlock(CParental_ParentalUnlock_Notification request); + + NoResponse NotifyLock(CParental_ParentalLock_Notification request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IPlayer.java b/src/main/java/in/dragonbra/javasteam/rpc/IPlayer.java new file mode 100644 index 00000000..35d439cd --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IPlayer.java @@ -0,0 +1,99 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesPlayerSteamclient.*; + +public interface IPlayer { + CPlayer_GetMutualFriendsForIncomingInvites_Response GetMutualFriendsForIncomingInvites(CPlayer_GetMutualFriendsForIncomingInvites_Request request); + + CPlayer_GetOwnedGames_Response GetOwnedGames(CPlayer_GetOwnedGames_Request request); + + CPlayer_GetPlayNext_Response GetPlayNext(CPlayer_GetPlayNext_Request request); + + CPlayer_GetFriendsGameplayInfo_Response GetFriendsGameplayInfo(CPlayer_GetFriendsGameplayInfo_Request request); + + CPlayer_GetGameBadgeLevels_Response GetGameBadgeLevels(CPlayer_GetGameBadgeLevels_Request request); + + CPlayer_GetProfileBackground_Response GetProfileBackground(CPlayer_GetProfileBackground_Request request); + + CPlayer_SetProfileBackground_Response SetProfileBackground(CPlayer_SetProfileBackground_Request request); + + CPlayer_GetMiniProfileBackground_Response GetMiniProfileBackground(CPlayer_GetMiniProfileBackground_Request request); + + CPlayer_SetMiniProfileBackground_Response SetMiniProfileBackground(CPlayer_SetMiniProfileBackground_Request request); + + CPlayer_GetAvatarFrame_Response GetAvatarFrame(CPlayer_GetAvatarFrame_Request request); + + CPlayer_SetAvatarFrame_Response SetAvatarFrame(CPlayer_SetAvatarFrame_Request request); + + CPlayer_GetAnimatedAvatar_Response GetAnimatedAvatar(CPlayer_GetAnimatedAvatar_Request request); + + CPlayer_SetAnimatedAvatar_Response SetAnimatedAvatar(CPlayer_SetAnimatedAvatar_Request request); + + CPlayer_GetSteamDeckKeyboardSkin_Response GetSteamDeckKeyboardSkin(CPlayer_GetSteamDeckKeyboardSkin_Request request); + + CPlayer_SetSteamDeckKeyboardSkin_Response SetSteamDeckKeyboardSkin(CPlayer_SetSteamDeckKeyboardSkin_Request request); + + CPlayer_GetProfileItemsOwned_Response GetProfileItemsOwned(CPlayer_GetProfileItemsOwned_Request request); + + CPlayer_GetProfileItemsEquipped_Response GetProfileItemsEquipped(CPlayer_GetProfileItemsEquipped_Request request); + + CPlayer_SetEquippedProfileItemFlags_Response SetEquippedProfileItemFlags(CPlayer_SetEquippedProfileItemFlags_Request request); + + CPlayer_GetEmoticonList_Response GetEmoticonList(CPlayer_GetEmoticonList_Request request); + + CPlayer_GetAchievementsProgress_Response GetAchievementsProgress(CPlayer_GetAchievementsProgress_Request request); + + CPlayer_GetFavoriteBadge_Response GetFavoriteBadge(CPlayer_GetFavoriteBadge_Request request); + + CPlayer_SetFavoriteBadge_Response SetFavoriteBadge(CPlayer_SetFavoriteBadge_Request request); + + CPlayer_GetProfileCustomization_Response GetProfileCustomization(CPlayer_GetProfileCustomization_Request request); + + CPlayer_GetPurchasedProfileCustomizations_Response GetPurchasedProfileCustomizations(CPlayer_GetPurchasedProfileCustomizations_Request request); + + CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Response GetPurchasedAndUpgradedProfileCustomizations(CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Request request); + + CPlayer_GetProfileThemesAvailable_Response GetProfileThemesAvailable(CPlayer_GetProfileThemesAvailable_Request request); + + CPlayer_SetProfileTheme_Response SetProfileTheme(CPlayer_SetProfileTheme_Request request); + + CPlayer_SetProfilePreferences_Response SetProfilePreferences(CPlayer_SetProfilePreferences_Request request); + + CPlayer_PostStatusToFriends_Response PostStatusToFriends(CPlayer_PostStatusToFriends_Request request); + + CPlayer_GetPostedStatus_Response GetPostedStatus(CPlayer_GetPostedStatus_Request request); + + CPlayer_DeletePostedStatus_Response DeletePostedStatus(CPlayer_DeletePostedStatus_Request request); + + CPlayer_GetLastPlayedTimes_Response ClientGetLastPlayedTimes(CPlayer_GetLastPlayedTimes_Request request); + + CPlayer_GetTimeSSAAccepted_Response GetTimeSSAAccepted(CPlayer_GetTimeSSAAccepted_Request request); + + CPlayer_AcceptSSA_Response AcceptSSA(CPlayer_AcceptSSA_Request request); + + CPlayer_GetNicknameList_Response GetNicknameList(CPlayer_GetNicknameList_Request request); + + CPlayer_GetPerFriendPreferences_Response GetPerFriendPreferences(CPlayer_GetPerFriendPreferences_Request request); + + CPlayer_SetPerFriendPreferences_Response SetPerFriendPreferences(CPlayer_SetPerFriendPreferences_Request request); + + CPlayer_AddFriend_Response AddFriend(CPlayer_AddFriend_Request request); + + CPlayer_RemoveFriend_Response RemoveFriend(CPlayer_RemoveFriend_Request request); + + CPlayer_IgnoreFriend_Response IgnoreFriend(CPlayer_IgnoreFriend_Request request); + + CPlayer_GetCommunityPreferences_Response GetCommunityPreferences(CPlayer_GetCommunityPreferences_Request request); + + CPlayer_SetCommunityPreferences_Response SetCommunityPreferences(CPlayer_SetCommunityPreferences_Request request); + + CPlayer_GetTextFilterWords_Response GetTextFilterWords(CPlayer_GetTextFilterWords_Request request); + + CPlayer_GetNewSteamAnnouncementState_Response GetNewSteamAnnouncementState(CPlayer_GetNewSteamAnnouncementState_Request request); + + CPlayer_UpdateSteamAnnouncementLastRead_Response UpdateSteamAnnouncementLastRead(CPlayer_UpdateSteamAnnouncementLastRead_Request request); + + CPlayer_GetPrivacySettings_Response GetPrivacySettings(CPlayer_GetPrivacySettings_Request request); + + CPlayer_GetDurationControl_Response GetDurationControl(CPlayer_GetDurationControl_Request request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IPlayerClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IPlayerClient.java new file mode 100644 index 00000000..64beefc4 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IPlayerClient.java @@ -0,0 +1,22 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesPlayerSteamclient.*; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.*; + +public interface IPlayerClient { + NoResponse NotifyLastPlayedTimes(CPlayer_LastPlayedTimes_Notification request); + + NoResponse NotifyFriendNicknameChanged(CPlayer_FriendNicknameChanged_Notification request); + + NoResponse NotifyFriendEquippedProfileItemsChanged(CPlayer_FriendEquippedProfileItemsChanged_Notification request); + + NoResponse NotifyNewSteamAnnouncementState(CPlayer_NewSteamAnnouncementState_Notification request); + + NoResponse NotifyCommunityPreferencesChanged(CPlayer_CommunityPreferencesChanged_Notification request); + + NoResponse NotifyTextFilterWordsChanged(CPlayer_TextFilterWordsChanged_Notification request); + + NoResponse NotifyPerFriendPreferencesChanged(CPlayer_PerFriendPreferencesChanged_Notification request); + + NoResponse NotifyPrivacyPrivacySettingsChanged(CPlayer_PrivacySettingsChanged_Notification request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClient.java new file mode 100644 index 00000000..e1c58d4d --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClient.java @@ -0,0 +1,32 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesRemoteclientServiceMessages.*; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.*; + +public interface IRemoteClient { + CRemoteClient_GetPairingInfo_Response GetPairingInfo(CRemoteClient_GetPairingInfo_Request request); + + NoResponse NotifyOnline(CRemoteClient_Online_Notification request); + + NoResponse NotifyReplyPacket(CRemoteClient_ReplyPacket_Notification request); + + CRemoteClient_AllocateTURNServer_Response AllocateTURNServer(CRemoteClient_AllocateTURNServer_Request request); + + CRemoteClient_AllocateRelayServer_Response AllocateRelayServer(CRemoteClient_AllocateRelayServer_Request request); + + CRemoteClient_AllocateSDR_Response AllocateSDR(CRemoteClient_AllocateSDR_Request request); + + NoResponse SendSteamBroadcastPacket(CRemoteClient_SteamBroadcast_Notification request); + + NoResponse SendSteamToSteamPacket(CRemoteClient_SteamToSteam_Notification request); + + CRemotePlay_SessionStarted_Response SendRemotePlaySessionStarted(CRemotePlay_SessionStarted_Request request); + + NoResponse SendRemotePlaySessionStopped(CRemotePlay_SessionStopped_Notification request); + + NoResponse SendRemotePlayTogetherPacket(CRemotePlayTogether_Notification request); + + CRemoteClient_CreateRemotePlayTogetherInvitation_Response CreateRemotePlayTogetherInvitation(CRemoteClient_CreateRemotePlayTogetherInvitation_Request request); + + CRemoteClient_DeleteRemotePlayTogetherInvitation_Response DeleteRemotePlayTogetherInvitation(CRemoteClient_DeleteRemotePlayTogetherInvitation_Request request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClientSteamClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClientSteamClient.java new file mode 100644 index 00000000..a014e180 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClientSteamClient.java @@ -0,0 +1,18 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesRemoteclientServiceMessages.*; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.*; + +public interface IRemoteClientSteamClient { + NoResponse NotifyRegisterStatusUpdate(CRemoteClient_RegisterStatusUpdate_Notification request); + + NoResponse NotifyUnregisterStatusUpdate(CRemoteClient_UnregisterStatusUpdate_Notification request); + + NoResponse NotifyRemotePacket(CRemoteClient_RemotePacket_Notification request); + + NoResponse NotifySteamBroadcastPacket(CRemoteClient_SteamBroadcast_Notification request); + + NoResponse NotifySteamToSteamPacket(CRemoteClient_SteamToSteam_Notification request); + + NoResponse NotifyRemotePlayTogetherPacket(CRemotePlayTogether_Notification request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/README.md b/src/main/java/in/dragonbra/javasteam/rpc/README.md new file mode 100644 index 00000000..26552582 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/README.md @@ -0,0 +1 @@ +TODO: Generate these interfaces automatically from protobuf services From 88911b442bd368af43c59d556edd941b30d87503 Mon Sep 17 00:00:00 2001 From: Lossy Date: Sun, 1 Jan 2023 01:38:04 -0600 Subject: [PATCH 03/22] add error method to logger --- .../_3debuglog/SampleDebugLog.java | 6 ++++++ .../util/log/DefaultLogListener.java | 19 +++++++++++++++++++ .../javasteam/util/log/LogListener.java | 2 ++ .../dragonbra/javasteam/util/log/Logger.java | 16 ++++++++++++++++ 4 files changed, 43 insertions(+) diff --git a/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_3debuglog/SampleDebugLog.java b/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_3debuglog/SampleDebugLog.java index 5049bd4b..b005fbe2 100644 --- a/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_3debuglog/SampleDebugLog.java +++ b/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_3debuglog/SampleDebugLog.java @@ -62,6 +62,12 @@ public void onLog(Class clazz, String message, Throwable throwable) { // for this example, we'll print the output to the console System.out.println("MyListener - " + clazz.getName() + ": " + message); } + + @Override + public void onError(Class clazz, String message, Throwable throwable) { + // for this example, we'll print errors the output to the console + System.err.println("MyListener - " + clazz.getName() + ": " + message); + } } public SampleDebugLog(String user, String pass) { diff --git a/src/main/java/in/dragonbra/javasteam/util/log/DefaultLogListener.java b/src/main/java/in/dragonbra/javasteam/util/log/DefaultLogListener.java index ae8521d4..9280f0e1 100644 --- a/src/main/java/in/dragonbra/javasteam/util/log/DefaultLogListener.java +++ b/src/main/java/in/dragonbra/javasteam/util/log/DefaultLogListener.java @@ -30,4 +30,23 @@ public void onLog(Class clazz, String message, Throwable throwable) { throwable.printStackTrace(); } } + + public void onError(Class clazz, String message, Throwable throwable) { + if (clazz == null) { + throw new IllegalArgumentException("class is null"); + } + String threadName = Thread.currentThread().getName(); + threadName = threadName.substring(0, Math.min(10, threadName.length())); + String className = clazz.getName(); + + if (message == null) { + System.err.printf("%s [%10s] %s%n", FORMAT.format(new Date()), threadName, className); + } else { + System.err.printf("%s [%10s] %s - %s%n", FORMAT.format(new Date()), threadName, className, message); + } + + if (throwable != null) { + throwable.printStackTrace(); + } + } } diff --git a/src/main/java/in/dragonbra/javasteam/util/log/LogListener.java b/src/main/java/in/dragonbra/javasteam/util/log/LogListener.java index 47a98d44..d1c8a900 100644 --- a/src/main/java/in/dragonbra/javasteam/util/log/LogListener.java +++ b/src/main/java/in/dragonbra/javasteam/util/log/LogListener.java @@ -6,4 +6,6 @@ */ public interface LogListener { void onLog(Class clazz, String message, Throwable throwable); + + void onError(Class clazz, String message, Throwable throwable); } diff --git a/src/main/java/in/dragonbra/javasteam/util/log/Logger.java b/src/main/java/in/dragonbra/javasteam/util/log/Logger.java index 0e51124e..81b2dfb6 100644 --- a/src/main/java/in/dragonbra/javasteam/util/log/Logger.java +++ b/src/main/java/in/dragonbra/javasteam/util/log/Logger.java @@ -30,4 +30,20 @@ public void debug(String message, Throwable throwable) { } } } + + public void error(Throwable throwable) { + error(null, throwable); + } + + public void error(String message) { + error(message, null); + } + + public void error(String message, Throwable throwable) { + for (LogListener listener : LogManager.LOG_LISTENERS) { + if (listener != null) { + listener.onError(clazz, message, throwable); + } + } + } } From f3c5df3e4cf62c10555d1008f4353b46456ddd5f Mon Sep 17 00:00:00 2001 From: Lossy Date: Sun, 1 Jan 2023 01:39:19 -0600 Subject: [PATCH 04/22] Allow the body to be set in ClientMsgProtobuf --- .../in/dragonbra/javasteam/base/ClientMsgProtobuf.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/in/dragonbra/javasteam/base/ClientMsgProtobuf.java b/src/main/java/in/dragonbra/javasteam/base/ClientMsgProtobuf.java index ee929790..f24b83c0 100644 --- a/src/main/java/in/dragonbra/javasteam/base/ClientMsgProtobuf.java +++ b/src/main/java/in/dragonbra/javasteam/base/ClientMsgProtobuf.java @@ -122,6 +122,15 @@ public BodyType getBody() { return body; } + /** + * Sets the body of this message. + * + * @param _body the body structure of this message. + */ + public void setBody(BodyType _body) { + this.body = _body; + } + @Override public byte[] serialize() { ByteArrayOutputStream baos = new ByteArrayOutputStream(0); From 1e8f85366d697fb5f41e82f92e819e029c779d71 Mon Sep 17 00:00:00 2001 From: Lossy Date: Sun, 1 Jan 2023 01:41:07 -0600 Subject: [PATCH 05/22] Allow MsgHdrProtoBuf to be visible, minor cleanup --- .../base/PacketClientMsgProtobuf.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/main/java/in/dragonbra/javasteam/base/PacketClientMsgProtobuf.java b/src/main/java/in/dragonbra/javasteam/base/PacketClientMsgProtobuf.java index 975877de..5622585e 100644 --- a/src/main/java/in/dragonbra/javasteam/base/PacketClientMsgProtobuf.java +++ b/src/main/java/in/dragonbra/javasteam/base/PacketClientMsgProtobuf.java @@ -13,12 +13,10 @@ public class PacketClientMsgProtobuf implements IPacketMsg { private EMsg msgType; - private long targetJobID; - - private long sourceJobID; - private byte[] payload; + private MsgHdrProtoBuf header; + /** * Initializes a new instance of the {@link PacketClientMsgProtobuf} class. * @@ -30,14 +28,20 @@ public PacketClientMsgProtobuf(EMsg eMsg, byte[] data) throws IOException { this.msgType = eMsg; this.payload = data; - MsgHdrProtoBuf protobufHeader = new MsgHdrProtoBuf(); + header = new MsgHdrProtoBuf(); try (ByteArrayInputStream stream = new ByteArrayInputStream(data)) { - protobufHeader.deserialize(stream); + header.deserialize(stream); } + } - targetJobID = protobufHeader.getProto().getJobidTarget(); - sourceJobID = protobufHeader.getProto().getJobidSource(); + /** + * Gets the header for this packet message. + * + * @return The header. + */ + public MsgHdrProtoBuf getHeader() { + return header; } @Override @@ -52,12 +56,12 @@ public EMsg getMsgType() { @Override public long getTargetJobID() { - return targetJobID; + return header.getProto().getJobidTarget(); } @Override public long getSourceJobID() { - return sourceJobID; + return header.getProto().getJobidSource(); } @Override From 18d16d031dbd17b1f3c387a2543f820389f763e9 Mon Sep 17 00:00:00 2001 From: Lossy Date: Wed, 4 Jan 2023 00:45:37 -0600 Subject: [PATCH 06/22] Working proof of SteamUnifiedMessages, sample included too. --- .../SampleUnifiedMessages.java | 270 ++++++++++++++++ .../in/dragonbra/javasteam/rpc/IPlayer.java | 146 ++++++--- .../javasteam/rpc/service/Player.java | 302 ++++++++++++++++++ .../SteamUnifiedMessages.java | 177 ++++++++++ .../steamunifiedmessages/UnifiedService.java | 105 ++++++ .../callback/ServiceMethodNotification.java | 59 ++++ .../callback/ServiceMethodResponse.java | 77 +++++ 7 files changed, 1089 insertions(+), 47 deletions(-) create mode 100644 javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_8UnifiedMessages/SampleUnifiedMessages.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/Player.java create mode 100644 src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java create mode 100644 src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java create mode 100644 src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodNotification.java create mode 100644 src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodResponse.java diff --git a/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_8UnifiedMessages/SampleUnifiedMessages.java b/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_8UnifiedMessages/SampleUnifiedMessages.java new file mode 100644 index 00000000..9bf7c80a --- /dev/null +++ b/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_8UnifiedMessages/SampleUnifiedMessages.java @@ -0,0 +1,270 @@ +package in.dragonbra.javasteamsamples._8UnifiedMessages; + + +import in.dragonbra.javasteam.base.ClientMsgProtobuf; +import in.dragonbra.javasteam.enums.EMsg; +import in.dragonbra.javasteam.enums.EResult; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesClientserver2.CMsgClientUIMode; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesFriendmessagesSteamclient.CFriendMessages_IncomingMessage_Notification; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesPlayerSteamclient.*; +import in.dragonbra.javasteam.rpc.service.Player; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodNotification; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse; +import in.dragonbra.javasteam.steam.handlers.steamuser.LogOnDetails; +import in.dragonbra.javasteam.steam.handlers.steamuser.SteamUser; +import in.dragonbra.javasteam.steam.handlers.steamuser.callback.LoggedOffCallback; +import in.dragonbra.javasteam.steam.handlers.steamuser.callback.LoggedOnCallback; +import in.dragonbra.javasteam.steam.steamclient.SteamClient; +import in.dragonbra.javasteam.steam.steamclient.callbackmgr.CallbackManager; +import in.dragonbra.javasteam.steam.steamclient.callbacks.ConnectedCallback; +import in.dragonbra.javasteam.steam.steamclient.callbacks.DisconnectedCallback; +import in.dragonbra.javasteam.types.JobID; +import in.dragonbra.javasteam.util.log.DefaultLogListener; +import in.dragonbra.javasteam.util.log.LogManager; + +import java.util.List; + + +/** + * @author Lossy + * @since 2023-01-04 + *

+ * Sample 8: Unified Messages + *

+ * this sample introduces the usage of the unified service API + *

+ * unified services are a type of webapi service that can be accessed with either + * HTTP requests or through the Steam network + *

+ * in this case, this sample will demonstrate using the IPlayer unified service + * through the connection to steam + */ +@SuppressWarnings({"resource", "FieldCanBeLocal"}) +public class SampleUnifiedMessages implements Runnable { + + private SteamClient steamClient; + + private CallbackManager manager; + + private SteamUser steamUser; + + private SteamUnifiedMessages steamUnifiedMessages; + + private boolean isRunning; + + private final String user; + + private final String pass; + + JobID badgeRequest; + JobID favoriteBadge; + + public SampleUnifiedMessages(String user, String pass) { + this.user = user; + this.pass = pass; + + this.badgeRequest = JobID.INVALID; + this.favoriteBadge = JobID.INVALID; + } + + public static void main(String[] args) { + if (args.length < 2) { + System.out.println("Sample8: No username and password specified!"); + return; + } + + LogManager.addListener(new DefaultLogListener()); + + new SampleUnifiedMessages(args[0], args[1]).run(); + } + + @Override + public void run() { + + // create our steamclient instance + steamClient = new SteamClient(); + + // create the callback manager which will route callbacks to function calls + manager = new CallbackManager(steamClient); + + steamClient.addHandler(new SteamUnifiedMessages()); + + // steamClient.setDebugNetworkListener(new NetHookNetworkListener()); + + // get the steamuser handler, which is used for logging on after successfully connecting + steamUser = steamClient.getHandler(SteamUser.class); + + // get the steam unified messages handler, which is used for sending and receiving responses from the unified service api + steamUnifiedMessages = steamClient.getHandler(SteamUnifiedMessages.class); + + // register a few callbacks we're interested in + // these are registered upon creation to a callback manager, which will then route the callbacks + // to the functions specified + manager.subscribe(ConnectedCallback.class, this::onConnected); + manager.subscribe(DisconnectedCallback.class, this::onDisconnected); + + manager.subscribe(LoggedOnCallback.class, this::onLoggedOn); + manager.subscribe(LoggedOffCallback.class, this::onLoggedOff); + + manager.subscribe(ServiceMethodResponse.class, this::onMethodResponse); + manager.subscribe(ServiceMethodNotification.class, this::onMethodNotification); + + isRunning = true; + + System.out.println("Connecting to steam..."); + + // initiate the connection + steamClient.connect(); + + // create our callback handling loop + while (isRunning) { + // in order for the callbacks to get routed, they need to be handled by the manager + manager.runWaitCallbacks(1000L); + } + } + + private void onConnected(ConnectedCallback callback) { + System.out.println("Connected to Steam! Logging in " + user + "..."); + + LogOnDetails details = new LogOnDetails(); + details.setUsername(user); + details.setPassword(pass); + + // Set LoginID to a non-zero value if you have another client connected using the same account, + // the same private ip, and same public ip. + details.setLoginID(149); + + steamUser.logOn(details); + } + + private void onDisconnected(DisconnectedCallback callback) { + System.out.println("Disconnected from Steam"); + + isRunning = false; + } + + private void onLoggedOn(LoggedOnCallback callback) { + if (callback.getResult() != EResult.OK) { + if (callback.getResult() == EResult.AccountLogonDenied) { + // if we recieve AccountLogonDenied or one of it's flavors (AccountLogonDeniedNoMailSent, etc) + // then the account we're logging into is SteamGuard protected + // see sample 5 for how SteamGuard can be handled + System.out.println("Unable to logon to Steam: This account is SteamGuard protected."); + + isRunning = false; + return; + } + + System.out.println("Unable to logon to Steam: " + callback.getResult() + " / " + callback.getExtendedResult()); + + isRunning = false; + return; + + } + + System.out.println("Successfully logged on!"); + + // at this point, we'd be able to perform actions on Steam + + // Set our chat mode in order to use unified chat features + ClientMsgProtobuf uiMode = new ClientMsgProtobuf<>(CMsgClientUIMode.class, EMsg.ClientCurrentUIMode); + uiMode.getBody().setUimode(0); + uiMode.getBody().setChatMode(2); + + // Send our ClientCurrentUIMode request + steamClient.send(uiMode); + + // first, build our request object, these are autogenerated and can normally be found in the in.dragonbra.javasteam.protobufs.steamclient package + CPlayer_GetFavoriteBadge_Request.Builder favoriteBadgeRequest = CPlayer_GetFavoriteBadge_Request.newBuilder(); + favoriteBadgeRequest.setSteamid(steamClient.getSteamID().convertToUInt64()); + + // now let's send the request, this is done by building a classed based off the IPlayer interface. + Player playerService = new Player(steamUnifiedMessages); + favoriteBadge = playerService.GetFavoriteBadge(favoriteBadgeRequest.build()); + + // first, build our request object, these are autogenerated and can normally be found in the in.dragonbra.javasteam.protobufs.steamclient package + CPlayer_GetGameBadgeLevels_Request.Builder badgeLevelsRequest = CPlayer_GetGameBadgeLevels_Request.newBuilder(); + badgeLevelsRequest.setAppid(440); + + // alternatively, the request can be made using SteamUnifiedMessages directly, but then you must build the service request name manually + // the name format is in the form of .# + badgeRequest = steamUnifiedMessages.sendMessage(CPlayer_GetGameBadgeLevels_Request.class, "Player.GetGameBadgeLevels#1", badgeLevelsRequest); + } + + private void onLoggedOff(LoggedOffCallback callback) { + System.out.println("Logged off of Steam: " + callback.getResult()); + + isRunning = false; + } + + private void onMethodResponse(ServiceMethodResponse callback) { + System.out.println("ServiceMethodResponse result: " + callback.getResult()); + + // and check for success + if (callback.getResult() != EResult.OK) { + System.out.println("Unified service request failed with " + callback.getResult()); + return; + } + + // retrieve the deserialized response for the request we made + // notice the naming pattern + // for requests: CMyService_Method_Request + // for responses: CMyService_Method_Response + + if (callback.getJobID().equals(badgeRequest)) { + CPlayer_GetGameBadgeLevels_Response.Builder response; + response = callback.getDeserializedResponse(CPlayer_GetGameBadgeLevels_Response.class); + response.build(); + + System.out.println("Our player level is " + response.getPlayerLevel()); + + List badgeList = response.getBadgesList(); + badgeList.forEach(badge -> System.out.println("Badge series " + badge.getSeries() + " is level " + badge.getLevel())); + + if (badgeList.isEmpty()) + System.out.println("No badges found for game. " + response.getBadgesCount() + "."); + + badgeRequest = JobID.INVALID; + } + + if (callback.getJobID().equals(favoriteBadge)) { + CPlayer_GetFavoriteBadge_Response.Builder response; + response = callback.getDeserializedResponse(CPlayer_GetFavoriteBadge_Response.class); + response.build(); + + System.out.println("Has favorite badge: " + response.hasHasFavoriteBadge()); + System.out.println("Badge ID: " + response.getBadgeid()); + System.out.println("Community item ID: " + response.getCommunityitemid()); + System.out.println("Item Type: " + response.getItemType()); + System.out.println("Border Color: " + response.getBorderColor()); + System.out.println("App ID: " + response.getAppid()); + System.out.println("Level: " + response.getLevel()); + + favoriteBadge = JobID.INVALID; + } + } + + // This demonstrates some incoming notifications from Service Methods via Unified. + void onMethodNotification(ServiceMethodNotification callback) { + Object cbObject = callback.getBody(); + + // There's an incoming message coming. + if (cbObject instanceof CFriendMessages_IncomingMessage_Notification) { + CFriendMessages_IncomingMessage_Notification message = (CFriendMessages_IncomingMessage_Notification) cbObject; + + if (message.getChatEntryType() == 2) + System.out.println("Friend is typing..."); + + if (message.getChatEntryType() == 1) + System.out.println("Message: " + message.getMessage()); + } + + // There's a player preference change + if (cbObject instanceof CPlayer_PerFriendPreferencesChanged_Notification) { + CPlayer_PerFriendPreferencesChanged_Notification message = (CPlayer_PerFriendPreferencesChanged_Notification) cbObject; + System.out.println("SteamID: " + message.getAccountid()); + System.out.println("NickName: " + message.getPreferences().getNickname()); + } + } +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IPlayer.java b/src/main/java/in/dragonbra/javasteam/rpc/IPlayer.java index 35d439cd..2987fd2b 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IPlayer.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IPlayer.java @@ -1,99 +1,151 @@ package in.dragonbra.javasteam.rpc; import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesPlayerSteamclient.*; +import in.dragonbra.javasteam.types.JobID; +/** + * @author Lossy + * @since 2023-01-04 + */ public interface IPlayer { - CPlayer_GetMutualFriendsForIncomingInvites_Response GetMutualFriendsForIncomingInvites(CPlayer_GetMutualFriendsForIncomingInvites_Request request); + /* CPlayer_GetMutualFriendsForIncomingInvites_Response */ + JobID GetMutualFriendsForIncomingInvites(CPlayer_GetMutualFriendsForIncomingInvites_Request request); - CPlayer_GetOwnedGames_Response GetOwnedGames(CPlayer_GetOwnedGames_Request request); + /* CPlayer_GetOwnedGames_Response */ + JobID GetOwnedGames(CPlayer_GetOwnedGames_Request request); - CPlayer_GetPlayNext_Response GetPlayNext(CPlayer_GetPlayNext_Request request); + /* CPlayer_GetPlayNext_Response */ + JobID GetPlayNext(CPlayer_GetPlayNext_Request request); - CPlayer_GetFriendsGameplayInfo_Response GetFriendsGameplayInfo(CPlayer_GetFriendsGameplayInfo_Request request); + /* CPlayer_GetFriendsGameplayInfo_Response */ + JobID GetFriendsGameplayInfo(CPlayer_GetFriendsGameplayInfo_Request request); - CPlayer_GetGameBadgeLevels_Response GetGameBadgeLevels(CPlayer_GetGameBadgeLevels_Request request); + /* CPlayer_GetGameBadgeLevels_Response */ + JobID GetGameBadgeLevels(CPlayer_GetGameBadgeLevels_Request request); - CPlayer_GetProfileBackground_Response GetProfileBackground(CPlayer_GetProfileBackground_Request request); + /* CPlayer_GetProfileBackground_Response */ + JobID GetProfileBackground(CPlayer_GetProfileBackground_Request request); - CPlayer_SetProfileBackground_Response SetProfileBackground(CPlayer_SetProfileBackground_Request request); + /* CPlayer_SetProfileBackground_Response */ + JobID SetProfileBackground(CPlayer_SetProfileBackground_Request request); - CPlayer_GetMiniProfileBackground_Response GetMiniProfileBackground(CPlayer_GetMiniProfileBackground_Request request); + /* CPlayer_GetMiniProfileBackground_Response */ + JobID GetMiniProfileBackground(CPlayer_GetMiniProfileBackground_Request request); - CPlayer_SetMiniProfileBackground_Response SetMiniProfileBackground(CPlayer_SetMiniProfileBackground_Request request); + /* CPlayer_SetMiniProfileBackground_Response */ + JobID SetMiniProfileBackground(CPlayer_SetMiniProfileBackground_Request request); - CPlayer_GetAvatarFrame_Response GetAvatarFrame(CPlayer_GetAvatarFrame_Request request); + /* CPlayer_GetAvatarFrame_Response */ + JobID GetAvatarFrame(CPlayer_GetAvatarFrame_Request request); - CPlayer_SetAvatarFrame_Response SetAvatarFrame(CPlayer_SetAvatarFrame_Request request); + /* CPlayer_SetAvatarFrame_Response */ + JobID SetAvatarFrame(CPlayer_SetAvatarFrame_Request request); - CPlayer_GetAnimatedAvatar_Response GetAnimatedAvatar(CPlayer_GetAnimatedAvatar_Request request); + /* CPlayer_GetAnimatedAvatar_Response */ + JobID GetAnimatedAvatar(CPlayer_GetAnimatedAvatar_Request request); - CPlayer_SetAnimatedAvatar_Response SetAnimatedAvatar(CPlayer_SetAnimatedAvatar_Request request); + /* CPlayer_SetAnimatedAvatar_Response */ + JobID SetAnimatedAvatar(CPlayer_SetAnimatedAvatar_Request request); - CPlayer_GetSteamDeckKeyboardSkin_Response GetSteamDeckKeyboardSkin(CPlayer_GetSteamDeckKeyboardSkin_Request request); + /* CPlayer_GetSteamDeckKeyboardSkin_Response */ + JobID GetSteamDeckKeyboardSkin(CPlayer_GetSteamDeckKeyboardSkin_Request request); - CPlayer_SetSteamDeckKeyboardSkin_Response SetSteamDeckKeyboardSkin(CPlayer_SetSteamDeckKeyboardSkin_Request request); + /* CPlayer_SetSteamDeckKeyboardSkin_Response */ + JobID SetSteamDeckKeyboardSkin(CPlayer_SetSteamDeckKeyboardSkin_Request request); - CPlayer_GetProfileItemsOwned_Response GetProfileItemsOwned(CPlayer_GetProfileItemsOwned_Request request); + /* CPlayer_GetProfileItemsOwned_Response */ + JobID GetProfileItemsOwned(CPlayer_GetProfileItemsOwned_Request request); - CPlayer_GetProfileItemsEquipped_Response GetProfileItemsEquipped(CPlayer_GetProfileItemsEquipped_Request request); + /* CPlayer_GetProfileItemsEquipped_Response */ + JobID GetProfileItemsEquipped(CPlayer_GetProfileItemsEquipped_Request request); - CPlayer_SetEquippedProfileItemFlags_Response SetEquippedProfileItemFlags(CPlayer_SetEquippedProfileItemFlags_Request request); + /* CPlayer_SetEquippedProfileItemFlags_Response */ + JobID SetEquippedProfileItemFlags(CPlayer_SetEquippedProfileItemFlags_Request request); - CPlayer_GetEmoticonList_Response GetEmoticonList(CPlayer_GetEmoticonList_Request request); + /* CPlayer_GetEmoticonList_Response */ + JobID GetEmoticonList(CPlayer_GetEmoticonList_Request request); - CPlayer_GetAchievementsProgress_Response GetAchievementsProgress(CPlayer_GetAchievementsProgress_Request request); + /* CPlayer_GetAchievementsProgress_Response */ + JobID GetAchievementsProgress(CPlayer_GetAchievementsProgress_Request request); - CPlayer_GetFavoriteBadge_Response GetFavoriteBadge(CPlayer_GetFavoriteBadge_Request request); + /* CPlayer_GetFavoriteBadge_Response */ + JobID GetFavoriteBadge(CPlayer_GetFavoriteBadge_Request request); - CPlayer_SetFavoriteBadge_Response SetFavoriteBadge(CPlayer_SetFavoriteBadge_Request request); + /* CPlayer_SetFavoriteBadge_Response */ + JobID SetFavoriteBadge(CPlayer_SetFavoriteBadge_Request request); - CPlayer_GetProfileCustomization_Response GetProfileCustomization(CPlayer_GetProfileCustomization_Request request); + /* CPlayer_GetProfileCustomization_Response */ + JobID GetProfileCustomization(CPlayer_GetProfileCustomization_Request request); - CPlayer_GetPurchasedProfileCustomizations_Response GetPurchasedProfileCustomizations(CPlayer_GetPurchasedProfileCustomizations_Request request); + /* CPlayer_GetPurchasedProfileCustomizations_Response */ + JobID GetPurchasedProfileCustomizations(CPlayer_GetPurchasedProfileCustomizations_Request request); - CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Response GetPurchasedAndUpgradedProfileCustomizations(CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Request request); + /* CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Response */ + JobID GetPurchasedAndUpgradedProfileCustomizations(CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Request request); - CPlayer_GetProfileThemesAvailable_Response GetProfileThemesAvailable(CPlayer_GetProfileThemesAvailable_Request request); + /* CPlayer_GetProfileThemesAvailable_Response */ + JobID GetProfileThemesAvailable(CPlayer_GetProfileThemesAvailable_Request request); - CPlayer_SetProfileTheme_Response SetProfileTheme(CPlayer_SetProfileTheme_Request request); + /* CPlayer_SetProfileTheme_Response */ + JobID SetProfileTheme(CPlayer_SetProfileTheme_Request request); - CPlayer_SetProfilePreferences_Response SetProfilePreferences(CPlayer_SetProfilePreferences_Request request); + /* CPlayer_SetProfilePreferences_Response */ + JobID SetProfilePreferences(CPlayer_SetProfilePreferences_Request request); - CPlayer_PostStatusToFriends_Response PostStatusToFriends(CPlayer_PostStatusToFriends_Request request); + /* CPlayer_PostStatusToFriends_Response */ + JobID PostStatusToFriends(CPlayer_PostStatusToFriends_Request request); - CPlayer_GetPostedStatus_Response GetPostedStatus(CPlayer_GetPostedStatus_Request request); + /* CPlayer_GetPostedStatus_Response */ + JobID GetPostedStatus(CPlayer_GetPostedStatus_Request request); - CPlayer_DeletePostedStatus_Response DeletePostedStatus(CPlayer_DeletePostedStatus_Request request); + /* CPlayer_DeletePostedStatus_Response */ + JobID DeletePostedStatus(CPlayer_DeletePostedStatus_Request request); - CPlayer_GetLastPlayedTimes_Response ClientGetLastPlayedTimes(CPlayer_GetLastPlayedTimes_Request request); + /* CPlayer_GetLastPlayedTimes_Response */ + JobID ClientGetLastPlayedTimes(CPlayer_GetLastPlayedTimes_Request request); - CPlayer_GetTimeSSAAccepted_Response GetTimeSSAAccepted(CPlayer_GetTimeSSAAccepted_Request request); + /* CPlayer_GetTimeSSAAccepted_Response */ + JobID GetTimeSSAAccepted(CPlayer_GetTimeSSAAccepted_Request request); - CPlayer_AcceptSSA_Response AcceptSSA(CPlayer_AcceptSSA_Request request); + /* CPlayer_AcceptSSA_Response */ + JobID AcceptSSA(CPlayer_AcceptSSA_Request request); - CPlayer_GetNicknameList_Response GetNicknameList(CPlayer_GetNicknameList_Request request); + /* CPlayer_GetNicknameList_Response */ + JobID GetNicknameList(CPlayer_GetNicknameList_Request request); - CPlayer_GetPerFriendPreferences_Response GetPerFriendPreferences(CPlayer_GetPerFriendPreferences_Request request); + /* CPlayer_GetPerFriendPreferences_Response */ + JobID GetPerFriendPreferences(CPlayer_GetPerFriendPreferences_Request request); - CPlayer_SetPerFriendPreferences_Response SetPerFriendPreferences(CPlayer_SetPerFriendPreferences_Request request); + /* CPlayer_SetPerFriendPreferences_Response */ + JobID SetPerFriendPreferences(CPlayer_SetPerFriendPreferences_Request request); - CPlayer_AddFriend_Response AddFriend(CPlayer_AddFriend_Request request); + /* CPlayer_AddFriend_Response */ + JobID AddFriend(CPlayer_AddFriend_Request request); - CPlayer_RemoveFriend_Response RemoveFriend(CPlayer_RemoveFriend_Request request); + /* CPlayer_RemoveFriend_Response */ + JobID RemoveFriend(CPlayer_RemoveFriend_Request request); - CPlayer_IgnoreFriend_Response IgnoreFriend(CPlayer_IgnoreFriend_Request request); + /* CPlayer_IgnoreFriend_Response */ + JobID IgnoreFriend(CPlayer_IgnoreFriend_Request request); - CPlayer_GetCommunityPreferences_Response GetCommunityPreferences(CPlayer_GetCommunityPreferences_Request request); + /* CPlayer_GetCommunityPreferences_Response */ + JobID GetCommunityPreferences(CPlayer_GetCommunityPreferences_Request request); - CPlayer_SetCommunityPreferences_Response SetCommunityPreferences(CPlayer_SetCommunityPreferences_Request request); + /* CPlayer_SetCommunityPreferences_Response */ + JobID SetCommunityPreferences(CPlayer_SetCommunityPreferences_Request request); - CPlayer_GetTextFilterWords_Response GetTextFilterWords(CPlayer_GetTextFilterWords_Request request); + /* CPlayer_GetTextFilterWords_Response */ + JobID GetTextFilterWords(CPlayer_GetTextFilterWords_Request request); - CPlayer_GetNewSteamAnnouncementState_Response GetNewSteamAnnouncementState(CPlayer_GetNewSteamAnnouncementState_Request request); + /* CPlayer_GetNewSteamAnnouncementState_Response */ + JobID GetNewSteamAnnouncementState(CPlayer_GetNewSteamAnnouncementState_Request request); - CPlayer_UpdateSteamAnnouncementLastRead_Response UpdateSteamAnnouncementLastRead(CPlayer_UpdateSteamAnnouncementLastRead_Request request); + /* CPlayer_UpdateSteamAnnouncementLastRead_Response */ + JobID UpdateSteamAnnouncementLastRead(CPlayer_UpdateSteamAnnouncementLastRead_Request request); - CPlayer_GetPrivacySettings_Response GetPrivacySettings(CPlayer_GetPrivacySettings_Request request); + /* CPlayer_GetPrivacySettings_Response */ + JobID GetPrivacySettings(CPlayer_GetPrivacySettings_Request request); - CPlayer_GetDurationControl_Response GetDurationControl(CPlayer_GetDurationControl_Request request); + /* CPlayer_GetDurationControl_Response */ + JobID GetDurationControl(CPlayer_GetDurationControl_Request request); } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/Player.java b/src/main/java/in/dragonbra/javasteam/rpc/service/Player.java new file mode 100644 index 00000000..49e846f6 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/Player.java @@ -0,0 +1,302 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesPlayerSteamclient.*; +import in.dragonbra.javasteam.rpc.IPlayer; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; +import in.dragonbra.javasteam.types.JobID; + +/** + * @author Lossy + * @since 2023-01-04 + */ +public class Player extends UnifiedService implements IPlayer { + + private final String className = this.getClass().getSimpleName(); + + public Player(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public JobID GetMutualFriendsForIncomingInvites(CPlayer_GetMutualFriendsForIncomingInvites_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetOwnedGames(CPlayer_GetOwnedGames_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetPlayNext(CPlayer_GetPlayNext_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetFriendsGameplayInfo(CPlayer_GetFriendsGameplayInfo_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetGameBadgeLevels(CPlayer_GetGameBadgeLevels_Request request) { + CPlayer_GetGameBadgeLevels_Request.Builder msg = convertInstanceOfObject(request.toBuilder(), CPlayer_GetGameBadgeLevels_Request.Builder.class); + return sendMessage(CPlayer_GetGameBadgeLevels_Request.class, className, getMethodName(), msg); + } + + @Override + public JobID GetProfileBackground(CPlayer_GetProfileBackground_Request request) { + // TODO implement + return null; + } + + @Override + public JobID SetProfileBackground(CPlayer_SetProfileBackground_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetMiniProfileBackground(CPlayer_GetMiniProfileBackground_Request request) { + // TODO implement + return null; + } + + @Override + public JobID SetMiniProfileBackground(CPlayer_SetMiniProfileBackground_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetAvatarFrame(CPlayer_GetAvatarFrame_Request request) { + // TODO implement + return null; + } + + @Override + public JobID SetAvatarFrame(CPlayer_SetAvatarFrame_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetAnimatedAvatar(CPlayer_GetAnimatedAvatar_Request request) { + // TODO implement + return null; + } + + @Override + public JobID SetAnimatedAvatar(CPlayer_SetAnimatedAvatar_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetSteamDeckKeyboardSkin(CPlayer_GetSteamDeckKeyboardSkin_Request request) { + // TODO implement + return null; + } + + @Override + public JobID SetSteamDeckKeyboardSkin(CPlayer_SetSteamDeckKeyboardSkin_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetProfileItemsOwned(CPlayer_GetProfileItemsOwned_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetProfileItemsEquipped(CPlayer_GetProfileItemsEquipped_Request request) { + // TODO implement + return null; + } + + @Override + public JobID SetEquippedProfileItemFlags(CPlayer_SetEquippedProfileItemFlags_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetEmoticonList(CPlayer_GetEmoticonList_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetAchievementsProgress(CPlayer_GetAchievementsProgress_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetFavoriteBadge(CPlayer_GetFavoriteBadge_Request request) { + CPlayer_GetFavoriteBadge_Request.Builder msg = convertInstanceOfObject(request.toBuilder(), CPlayer_GetFavoriteBadge_Request.Builder.class); + return sendMessage(CPlayer_GetFavoriteBadge_Request.class, className, getMethodName(), msg); + } + + @Override + public JobID SetFavoriteBadge(CPlayer_SetFavoriteBadge_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetProfileCustomization(CPlayer_GetProfileCustomization_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetPurchasedProfileCustomizations(CPlayer_GetPurchasedProfileCustomizations_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetPurchasedAndUpgradedProfileCustomizations(CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetProfileThemesAvailable(CPlayer_GetProfileThemesAvailable_Request request) { + // TODO implement + return null; + } + + @Override + public JobID SetProfileTheme(CPlayer_SetProfileTheme_Request request) { + // TODO implement + return null; + } + + @Override + public JobID SetProfilePreferences(CPlayer_SetProfilePreferences_Request request) { + // TODO implement + return null; + } + + @Override + public JobID PostStatusToFriends(CPlayer_PostStatusToFriends_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetPostedStatus(CPlayer_GetPostedStatus_Request request) { + // TODO implement + return null; + } + + @Override + public JobID DeletePostedStatus(CPlayer_DeletePostedStatus_Request request) { + // TODO implement + return null; + } + + @Override + public JobID ClientGetLastPlayedTimes(CPlayer_GetLastPlayedTimes_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetTimeSSAAccepted(CPlayer_GetTimeSSAAccepted_Request request) { + // TODO implement + return null; + } + + @Override + public JobID AcceptSSA(CPlayer_AcceptSSA_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetNicknameList(CPlayer_GetNicknameList_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetPerFriendPreferences(CPlayer_GetPerFriendPreferences_Request request) { + // TODO implement + return null; + } + + @Override + public JobID SetPerFriendPreferences(CPlayer_SetPerFriendPreferences_Request request) { + // TODO implement + return null; + } + + @Override + public JobID AddFriend(CPlayer_AddFriend_Request request) { + // TODO implement + return null; + } + + @Override + public JobID RemoveFriend(CPlayer_RemoveFriend_Request request) { + // TODO implement + return null; + } + + @Override + public JobID IgnoreFriend(CPlayer_IgnoreFriend_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetCommunityPreferences(CPlayer_GetCommunityPreferences_Request request) { + // TODO implement + return null; + } + + @Override + public JobID SetCommunityPreferences(CPlayer_SetCommunityPreferences_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetTextFilterWords(CPlayer_GetTextFilterWords_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetNewSteamAnnouncementState(CPlayer_GetNewSteamAnnouncementState_Request request) { + // TODO implement + return null; + } + + @Override + public JobID UpdateSteamAnnouncementLastRead(CPlayer_UpdateSteamAnnouncementLastRead_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetPrivacySettings(CPlayer_GetPrivacySettings_Request request) { + // TODO implement + return null; + } + + @Override + public JobID GetDurationControl(CPlayer_GetDurationControl_Request request) { + // TODO implement + return null; + } +} diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java new file mode 100644 index 00000000..96b80d74 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java @@ -0,0 +1,177 @@ +package in.dragonbra.javasteam.steam.handlers.steamunifiedmessages; + +import com.google.protobuf.AbstractMessage; +import com.google.protobuf.GeneratedMessageV3; +import in.dragonbra.javasteam.base.ClientMsgProtobuf; +import in.dragonbra.javasteam.base.IPacketMsg; +import in.dragonbra.javasteam.base.PacketClientMsgProtobuf; +import in.dragonbra.javasteam.enums.EMsg; +import in.dragonbra.javasteam.handlers.ClientMsgHandler; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodNotification; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse; +import in.dragonbra.javasteam.types.JobID; +import in.dragonbra.javasteam.util.Strings; +import in.dragonbra.javasteam.util.compat.Consumer; +import in.dragonbra.javasteam.util.log.LogManager; +import in.dragonbra.javasteam.util.log.Logger; + +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; + +/** + * @author Lossy + * @since 2023-01-04 + *

+ * This handler is used for interacting with Steamworks unified messaging + */ +public class SteamUnifiedMessages extends ClientMsgHandler { + + private static final Logger logger = LogManager.getLogger(SteamUnifiedMessages.class); + private Map> dispatchMap; + + public SteamUnifiedMessages() { + dispatchMap = new HashMap<>(); + + dispatchMap.put(EMsg.ServiceMethodResponse, this::handleServiceMethodResponse); + dispatchMap.put(EMsg.ServiceMethod, this::handleServiceMethod); + + dispatchMap = Collections.unmodifiableMap(dispatchMap); + } + + @Override + public void handleMsg(IPacketMsg packetMsg) { + if (packetMsg == null) { + throw new IllegalArgumentException("packetMsg is null"); + } + + Consumer dispatcher = dispatchMap.get(packetMsg.getMsgType()); + if (dispatcher != null) { + dispatcher.accept(packetMsg); + } + } + + /** + * Sends a message. + * Results are returned in a . + * + * @param clazz The type of the body, for type erasure + * @param name Name of the RPC endpoint. Takes the format ServiceName.RpcName + * @param message The message to send. + * @param The type of protobuf object. + * @return The JobID of the request. This can be used to find the appropriate . + */ + public > JobID sendMessage(Class clazz, String name, TRequest message) { + if (message == null) { + throw new IllegalArgumentException("message is null"); + } + + JobID jobID = client.getNextJobID(); + EMsg eMsg = client.getSteamID() == null ? EMsg.ServiceMethodCallFromClientNonAuthed : EMsg.ServiceMethodCallFromClient; + + ClientMsgProtobuf msg = new ClientMsgProtobuf<>(clazz, eMsg); + msg.setSourceJobID(jobID); + msg.getHeader().getProto().setTargetJobName(name); + msg.setBody(message); + + client.send(msg); + + return jobID; + } + + /** + * Sends a notification. + * + * @param clazz The type of the body, for type erasure + * @param name Name of the RPC endpoint. Takes the format ServiceName.RpcName + * @param message The message to send. + * @param The type of protobuf object. The type of protobuf object. + */ + public > void sendNotification(Class clazz, String name, TRequest message) { + if (message == null) { + throw new IllegalArgumentException("message is null"); + } + + EMsg eMsg = client.getSteamID() == null ? EMsg.ServiceMethodCallFromClientNonAuthed : EMsg.ServiceMethodCallFromClient; + ClientMsgProtobuf msg = new ClientMsgProtobuf<>(clazz, eMsg); + msg.getHeader().getProto().setTargetJobName(name); + msg.setBody(message); + + client.send(msg); + } + + /** + * Sends a message. + * Results are returned in a . + * + * @param clazz The type of the body, for type erasure + * @param name Name of the RPC endpoint. Takes the format ServiceName.RpcName + * @param message The message to send. + * @param isNotification Whether this message is a notification or not + * @param The type of protobuf object + * @return The JobID of the request. This can be used to find the appropriate . + * @deprecated Use SendNotification() instead of passing 'true' bool in SendMessage. SendMessage incorrectly returned AsyncJob for notifications, they have no response by design. + */ + @Deprecated + public > JobID sendMessage(Class clazz, String name, TRequest message, Boolean isNotification) { + if (!isNotification) { + return sendMessage(clazz, name, message); + } + + sendNotification(clazz, name, message); + + return JobID.INVALID; + } + + private void handleServiceMethodResponse(IPacketMsg packetMsg) { + if (!(packetMsg instanceof PacketClientMsgProtobuf)) { + throw new IllegalArgumentException("Packet message is expected to be protobuf."); + } + + PacketClientMsgProtobuf packetMsgProto = (PacketClientMsgProtobuf) packetMsg; + + client.postCallback(new ServiceMethodResponse(packetMsgProto)); + } + + @SuppressWarnings("unchecked") + private void handleServiceMethod(IPacketMsg packetMsg) { + if (!(packetMsg instanceof PacketClientMsgProtobuf)) { + throw new IllegalArgumentException("Packet message is expected to be protobuf."); + } + + PacketClientMsgProtobuf packetMsgProto = (PacketClientMsgProtobuf) packetMsg; + + String jobName = packetMsgProto.getHeader().getProto().getTargetJobName(); + if (!Strings.isNullOrEmpty(jobName)) { + String[] splitByDot = jobName.split("\\."); + String[] splitByHash = splitByDot[1].split("#"); + + String serviceName = splitByDot[0]; + String methodName = splitByHash[0]; + + String serviceInterfaceName = "in.dragonbra.javasteam.rpc.I" + serviceName; + try { + logger.debug("Trying to process unified interface: " + serviceInterfaceName); + + Class serviceInterfaceType = Class.forName(serviceInterfaceName); + System.out.println("serviceInterfaceType:" + serviceInterfaceType); + Stream methods = Arrays.stream(serviceInterfaceType.getDeclaredMethods()); + Method method = methods.filter(m -> m.getName().equals(methodName)).findFirst().orElse(null); + System.out.println("method:" + method); + + if (method != null) { + Stream> arguments = Arrays.stream(method.getParameterTypes()); + Class argumentType = (Class) arguments.findFirst().orElse(null); // :') + System.out.println("argumentType:" + argumentType); + + client.postCallback(new ServiceMethodNotification(argumentType, packetMsg)); + } + } catch (ClassNotFoundException e) { + logger.error("Interface: " + serviceName + ", was not found"); + } + } + } +} diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java new file mode 100644 index 00000000..62f63662 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java @@ -0,0 +1,105 @@ +package in.dragonbra.javasteam.steam.handlers.steamunifiedmessages; + +import com.google.protobuf.AbstractMessage; +import com.google.protobuf.GeneratedMessageV3; +import in.dragonbra.javasteam.types.JobID; + +/** + * @author Lossy + * @since 2023-01-04 + */ +@SuppressWarnings("unused") +public abstract class UnifiedService { + + private final SteamUnifiedMessages steamUnifiedMessages; + + /** + * Cast the protobuf request class into a GeneratedMessageV3.Builder class to make ClientMsgProtobuf happy. + * + * @param o the request .builder() + * @param clazz type erasure to the Builder class. + * @param GeneratedMessageV3.Builder + * @return the class that's been cast. + */ + public static > TRequest convertInstanceOfObject(Object o, Class clazz) { + try { + return clazz.cast(o); + } catch (ClassCastException e) { + e.printStackTrace(); + return null; + } + } + + /** + * @param parentClassName The parent class name, ie: Player + * @param methodName The calling method name + * @return The formatted string with current service version: Player.GetGameBadgeLevels#1 + */ + private String getTargetJobName(String parentClassName, String methodName) { + return String.format("%s.%s#%s", parentClassName, methodName, 1); + } + + /** + * Gets the calling method name. ie: GetGameBadgeLevels()... + * + * @return The calling method name. + */ + public static String getMethodName() { + return Thread.currentThread().getStackTrace()[2].getMethodName(); // Guaranteed 100% terrible! + } + + /** + * Public constructor. + * + * @param steamUnifiedMessages The instance of SteamUnifiedMessages + */ + public UnifiedService(SteamUnifiedMessages steamUnifiedMessages) { + this.steamUnifiedMessages = steamUnifiedMessages; + } + + /** + * @param clazz + * @param parentClassName + * @param methodName + * @param request + * @param + * @return + */ + public > JobID sendMessage + (Class clazz, String parentClassName, String methodName, TRequest request) { + + return sendMessageOrNotification(clazz, getTargetJobName(parentClassName, methodName), request, false); + } + + /** + * @param clazz + * @param parentClassName + * @param methodName + * @param + * @param request + */ + public > void sendNotification + (Class clazz, String parentClassName, String methodName, TRequest request) { + + sendMessageOrNotification(clazz, getTargetJobName(parentClassName, methodName), request, true); + } + + /** + * @param clazz + * @param name + * @param message + * @param isNotification + * @param + * @return + */ + private > JobID sendMessageOrNotification + (Class clazz, String name, TRequest message, Boolean isNotification) { + + if (isNotification) { + steamUnifiedMessages.sendNotification(clazz, name, message); + return null; + } + + return steamUnifiedMessages.sendMessage(clazz, name, message); + } +} diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodNotification.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodNotification.java new file mode 100644 index 00000000..3224185a --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodNotification.java @@ -0,0 +1,59 @@ +package in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback; + +import com.google.protobuf.AbstractMessage; +import com.google.protobuf.GeneratedMessageV3; +import in.dragonbra.javasteam.base.ClientMsgProtobuf; +import in.dragonbra.javasteam.base.IPacketMsg; +import in.dragonbra.javasteam.steam.steamclient.callbackmgr.CallbackMsg; + +/** + * @author Lossy + * @since 2023-01-04 + *

+ * This callback represents a service notification recieved though . + */ +@SuppressWarnings("unused") +public class ServiceMethodNotification extends CallbackMsg { + + private final String methodName; + + private final Object body; + + public > ServiceMethodNotification(Class messageType, IPacketMsg packetMsg) { + // Bounce into generic-land. + ClientMsgProtobuf clientMsg = new ClientMsgProtobuf<>(messageType, packetMsg); + + // Note: JobID will be -1 + + this.methodName = clientMsg.getHeader().getProto().getTargetJobName(); + this.body = clientMsg.getBody().build(); + } + + /** + * @return Gets the name of the Service. + */ + public String getServiceName() { + return methodName.split("\\.")[0]; + } + + /** + * @return Gets the name of the RPC method. + */ + public String getRpcName() { + return methodName.substring(getServiceName().length() + 1).split("#")[0]; + } + + /** + * @return Gets the full name of the service method. + */ + public String getMethodName() { + return methodName; + } + + /** + * @return Gets the protobuf notification body. + */ + public Object getBody() { + return body; + } +} diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodResponse.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodResponse.java new file mode 100644 index 00000000..f7f47aba --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodResponse.java @@ -0,0 +1,77 @@ +package in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback; + +import com.google.protobuf.AbstractMessage; +import com.google.protobuf.GeneratedMessageV3; +import in.dragonbra.javasteam.base.ClientMsgProtobuf; +import in.dragonbra.javasteam.base.PacketClientMsgProtobuf; +import in.dragonbra.javasteam.enums.EResult; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesBase.CMsgProtoBufHeader; +import in.dragonbra.javasteam.steam.steamclient.callbackmgr.CallbackMsg; +import in.dragonbra.javasteam.types.JobID; + +/** + * @author Lossy + * @since 2023-01-04 + *

+ * This callback is returned in response to a service method sent through . + */ +@SuppressWarnings("unused") +public class ServiceMethodResponse extends CallbackMsg { + + private final EResult result; + + private final String methodName; + + private final PacketClientMsgProtobuf packetMsg; + + public ServiceMethodResponse(PacketClientMsgProtobuf packetMsg) { + CMsgProtoBufHeader protoHeader = packetMsg.getHeader().getProto().build(); + + JobID jobID = new JobID(protoHeader.getJobidTarget()); + setJobID(jobID); + + this.result = EResult.from(protoHeader.getEresult()); + this.methodName = protoHeader.getTargetJobName(); + this.packetMsg = packetMsg; + } + + /** + * @return Gets the result of the message. + */ + public EResult getResult() { + return result; + } + + /** + * @return Gets the name of the Service. + */ + public String getServiceName() { + return methodName.split("\\.")[0]; + } + + /** + * @return Gets the name of the RPC method. + */ + public String getRpcName() { + return methodName.substring(getServiceName().length() + 1).split("#")[0]; + } + + /** + * @return Gets the full name of the service method. + */ + public String getMethodName() { + return methodName; + } + + /** + * Deserializes the response into a protobuf object. + * + * @param clazz The message class, type erasure. + * @param Protobuf type of the response message. + * @return The response to the message sent through . + */ + public > T getDeserializedResponse(Class clazz) { + ClientMsgProtobuf msg = new ClientMsgProtobuf<>(clazz, packetMsg); + return msg.getBody(); + } +} From bef92f072f9d0a2df47b1c2dfc0f9451cbe16402 Mon Sep 17 00:00:00 2001 From: LossyDragon Date: Wed, 4 Jan 2023 10:39:59 -0600 Subject: [PATCH 07/22] Update javadocs --- .../SteamUnifiedMessages.java | 16 +++--- .../steamunifiedmessages/UnifiedService.java | 56 +++++++++---------- .../callback/ServiceMethodNotification.java | 2 +- .../callback/ServiceMethodResponse.java | 4 +- 4 files changed, 38 insertions(+), 40 deletions(-) diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java index 96b80d74..509bd238 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java @@ -56,13 +56,13 @@ public void handleMsg(IPacketMsg packetMsg) { /** * Sends a message. - * Results are returned in a . + * Results are returned in a {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. * * @param clazz The type of the body, for type erasure * @param name Name of the RPC endpoint. Takes the format ServiceName.RpcName * @param message The message to send. - * @param The type of protobuf object. - * @return The JobID of the request. This can be used to find the appropriate . + * @param The message type parameter + * @return The JobID of the request. This can be used to find the appropriate {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. */ public > JobID sendMessage(Class clazz, String name, TRequest message) { if (message == null) { @@ -88,7 +88,7 @@ public > JobID sendMessage * @param clazz The type of the body, for type erasure * @param name Name of the RPC endpoint. Takes the format ServiceName.RpcName * @param message The message to send. - * @param The type of protobuf object. The type of protobuf object. + * @param The message type parameter */ public > void sendNotification(Class clazz, String name, TRequest message) { if (message == null) { @@ -105,15 +105,15 @@ public > void sendNotifica /** * Sends a message. - * Results are returned in a . + * Results are returned in a {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse} * * @param clazz The type of the body, for type erasure * @param name Name of the RPC endpoint. Takes the format ServiceName.RpcName * @param message The message to send. * @param isNotification Whether this message is a notification or not - * @param The type of protobuf object - * @return The JobID of the request. This can be used to find the appropriate . - * @deprecated Use SendNotification() instead of passing 'true' bool in SendMessage. SendMessage incorrectly returned AsyncJob for notifications, they have no response by design. + * @param The message type parameter + * @return The JobID of the request. This can be used to find the appropriate {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. + * @deprecated Use SendNotification() instead of passing 'true' bool in SendMessage. SendMessage incorrectly returned JobID for notifications, they have no response by design. */ @Deprecated public > JobID sendMessage(Class clazz, String name, TRequest message, Boolean isNotification) { diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java index 62f63662..d0d81034 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java @@ -16,14 +16,14 @@ public abstract class UnifiedService { /** * Cast the protobuf request class into a GeneratedMessageV3.Builder class to make ClientMsgProtobuf happy. * - * @param o the request .builder() - * @param clazz type erasure to the Builder class. - * @param GeneratedMessageV3.Builder + * @param object The request .builder() + * @param clazz Type erasure to the Builder class. + * @param The type parameter for the object to be cast to. * @return the class that's been cast. */ - public static > TRequest convertInstanceOfObject(Object o, Class clazz) { + public static > TRequest convertInstanceOfObject(Object object, Class clazz) { try { - return clazz.cast(o); + return clazz.cast(object); } catch (ClassCastException e) { e.printStackTrace(); return null; @@ -58,42 +58,40 @@ public UnifiedService(SteamUnifiedMessages steamUnifiedMessages) { } /** - * @param clazz - * @param parentClassName - * @param methodName - * @param request - * @param - * @return + * Sends a message. + *

+ * Results are returned in a {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. + * + * @param clazz The type of protobuf object request. + * @param serviceName The service name, ServiceName.RpcName. + * @param rpcName The rpc name of the service, ServiceName.RpcName. + * @param request The requested protobuf object's builder + * @param The request type parameter. + * @return The JobID of the request. This can be used to find the appropriate {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. */ public > JobID sendMessage - (Class clazz, String parentClassName, String methodName, TRequest request) { + (Class clazz, String serviceName, String rpcName, TRequest request) { - return sendMessageOrNotification(clazz, getTargetJobName(parentClassName, methodName), request, false); + return sendMessageOrNotification(clazz, getTargetJobName(serviceName, rpcName), request, false); } /** - * @param clazz - * @param parentClassName - * @param methodName - * @param - * @param request + * Sends a notification. + * + * @param clazz The type of protobuf object request. + * @param serviceName The service name, ServiceName.RpcName. + * @param rpcName The rpc name of the service, ServiceName.RpcName. + * @param request The type of the protobuf object which is the response to the RPC call. + * @param The request type parameter */ public > void sendNotification - (Class clazz, String parentClassName, String methodName, TRequest request) { + (Class clazz, String serviceName, String rpcName, TRequest request) { - sendMessageOrNotification(clazz, getTargetJobName(parentClassName, methodName), request, true); + sendMessageOrNotification(clazz, getTargetJobName(serviceName, rpcName), request, true); } - /** - * @param clazz - * @param name - * @param message - * @param isNotification - * @param - * @return - */ private > JobID sendMessageOrNotification - (Class clazz, String name, TRequest message, Boolean isNotification) { + (Class clazz, String name, TRequest message, Boolean isNotification) { if (isNotification) { steamUnifiedMessages.sendNotification(clazz, name, message); diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodNotification.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodNotification.java index 3224185a..1f0c8724 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodNotification.java +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodNotification.java @@ -10,7 +10,7 @@ * @author Lossy * @since 2023-01-04 *

- * This callback represents a service notification recieved though . + * This callback represents a service notification received though {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages}. */ @SuppressWarnings("unused") public class ServiceMethodNotification extends CallbackMsg { diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodResponse.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodResponse.java index f7f47aba..57333304 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodResponse.java +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodResponse.java @@ -13,7 +13,7 @@ * @author Lossy * @since 2023-01-04 *

- * This callback is returned in response to a service method sent through . + * This callback is returned in response to a service method sent through {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages}. */ @SuppressWarnings("unused") public class ServiceMethodResponse extends CallbackMsg { @@ -68,7 +68,7 @@ public String getMethodName() { * * @param clazz The message class, type erasure. * @param Protobuf type of the response message. - * @return The response to the message sent through . + * @return The response to the message sent through {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages}. */ public > T getDeserializedResponse(Class clazz) { ClientMsgProtobuf msg = new ClientMsgProtobuf<>(clazz, packetMsg); From f8eab7804f5ab6b823e6eb1b45bd2455a2d33bae Mon Sep 17 00:00:00 2001 From: LossyDragon Date: Wed, 4 Jan 2023 16:33:21 -0600 Subject: [PATCH 08/22] disable Service stubbing --- .../javasteam/protobufs/steamclient/steammessages_base.proto | 2 +- .../protobufs/steamclient/steammessages_chat.steamclient.proto | 2 +- .../steamclient/steammessages_friendmessages.steamclient.proto | 2 +- .../steamclient/steammessages_parental.steamclient.proto | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_base.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_base.proto index d557f35b..ddff3d46 100644 --- a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_base.proto +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_base.proto @@ -3,7 +3,7 @@ import "google/protobuf/descriptor.proto"; option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; option optimize_for = SPEED; -option java_generic_services = true; +option java_generic_services = false; option (force_php_generation) = true; extend .google.protobuf.MessageOptions { diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_chat.steamclient.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_chat.steamclient.proto index ab98eddd..2f9e5f03 100644 --- a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_chat.steamclient.proto +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_chat.steamclient.proto @@ -3,7 +3,7 @@ import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_ option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; -option java_generic_services = true; +option java_generic_services = false; enum EChatRoomJoinState { k_EChatRoomJoinState_Default = 0; diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_friendmessages.steamclient.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_friendmessages.steamclient.proto index f66d9584..b4e1e12a 100644 --- a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_friendmessages.steamclient.proto +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_friendmessages.steamclient.proto @@ -2,7 +2,7 @@ import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_unified_base. option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; -option java_generic_services = true; +option java_generic_services = false; enum EMessageReactionType { k_EMessageReactionType_Invalid = 0; diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_parental.steamclient.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_parental.steamclient.proto index e56529d4..5dba6e78 100644 --- a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_parental.steamclient.proto +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_parental.steamclient.proto @@ -2,7 +2,7 @@ import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_unified_base. option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; -option java_generic_services = true; +option java_generic_services = false; message ParentalApp { optional uint32 appid = 1; From 8158346a4fad45f5d541fd5be2b19badf8730eb1 Mon Sep 17 00:00:00 2001 From: LossyDragon Date: Wed, 4 Jan 2023 16:35:09 -0600 Subject: [PATCH 09/22] Abstract out getting class name --- .../java/in/dragonbra/javasteam/rpc/service/Player.java | 6 ++---- .../steam/handlers/steamunifiedmessages/UnifiedService.java | 6 ++++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/Player.java b/src/main/java/in/dragonbra/javasteam/rpc/service/Player.java index 49e846f6..01921fb6 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/Player.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/Player.java @@ -12,8 +12,6 @@ */ public class Player extends UnifiedService implements IPlayer { - private final String className = this.getClass().getSimpleName(); - public Player(SteamUnifiedMessages steamUnifiedMessages) { super(steamUnifiedMessages); } @@ -45,7 +43,7 @@ public JobID GetFriendsGameplayInfo(CPlayer_GetFriendsGameplayInfo_Request reque @Override public JobID GetGameBadgeLevels(CPlayer_GetGameBadgeLevels_Request request) { CPlayer_GetGameBadgeLevels_Request.Builder msg = convertInstanceOfObject(request.toBuilder(), CPlayer_GetGameBadgeLevels_Request.Builder.class); - return sendMessage(CPlayer_GetGameBadgeLevels_Request.class, className, getMethodName(), msg); + return sendMessage(CPlayer_GetGameBadgeLevels_Request.class, getClassName(), getMethodName(), msg); } @Override @@ -141,7 +139,7 @@ public JobID GetAchievementsProgress(CPlayer_GetAchievementsProgress_Request req @Override public JobID GetFavoriteBadge(CPlayer_GetFavoriteBadge_Request request) { CPlayer_GetFavoriteBadge_Request.Builder msg = convertInstanceOfObject(request.toBuilder(), CPlayer_GetFavoriteBadge_Request.Builder.class); - return sendMessage(CPlayer_GetFavoriteBadge_Request.class, className, getMethodName(), msg); + return sendMessage(CPlayer_GetFavoriteBadge_Request.class, getClassName(), getMethodName(), msg); } @Override diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java index d0d81034..ffca804b 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java @@ -13,6 +13,12 @@ public abstract class UnifiedService { private final SteamUnifiedMessages steamUnifiedMessages; + private final String className = this.getClass().getSimpleName(); + + public String getClassName() { + return className; + } + /** * Cast the protobuf request class into a GeneratedMessageV3.Builder class to make ClientMsgProtobuf happy. * From 42ead773a6855d2f7e7bf9e9ac0985e79fe34033 Mon Sep 17 00:00:00 2001 From: LossyDragon Date: Wed, 4 Jan 2023 16:36:20 -0600 Subject: [PATCH 10/22] Add reminder for Unified handler --- .../in/dragonbra/javasteam/steam/steamclient/SteamClient.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/in/dragonbra/javasteam/steam/steamclient/SteamClient.java b/src/main/java/in/dragonbra/javasteam/steam/steamclient/SteamClient.java index 4af9ccfd..87544402 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/steamclient/SteamClient.java +++ b/src/main/java/in/dragonbra/javasteam/steam/steamclient/SteamClient.java @@ -15,6 +15,7 @@ import in.dragonbra.javasteam.steam.handlers.steamnotifications.SteamNotifications; import in.dragonbra.javasteam.steam.handlers.steamscreenshots.SteamScreenshots; import in.dragonbra.javasteam.steam.handlers.steamtrading.SteamTrading; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; import in.dragonbra.javasteam.steam.handlers.steamuser.SteamUser; import in.dragonbra.javasteam.steam.handlers.steamuserstats.SteamUserStats; import in.dragonbra.javasteam.steam.handlers.steamworkshop.SteamWorkshop; @@ -81,6 +82,7 @@ public SteamClient(SteamConfiguration configuration) { addHandler(new SteamMasterServer()); addHandler(new SteamGameServer()); addHandler(new SteamGameCoordinator()); + // addHandler(new SteamUnifiedMessages()); // TODO uncomment when ready processStartTime = new Date(); From 5ed3ac29f5be36c4053be7eb0bdc1bad45c262fb Mon Sep 17 00:00:00 2001 From: Lossy Date: Wed, 4 Jan 2023 22:27:31 -0600 Subject: [PATCH 11/22] Cleanup method names and useless casting conversion --- .../SteamUnifiedMessages.java | 26 +++---- .../steamunifiedmessages/UnifiedService.java | 75 +++++++------------ 2 files changed, 39 insertions(+), 62 deletions(-) diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java index 509bd238..458bf494 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java @@ -59,12 +59,12 @@ public void handleMsg(IPacketMsg packetMsg) { * Results are returned in a {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. * * @param clazz The type of the body, for type erasure - * @param name Name of the RPC endpoint. Takes the format ServiceName.RpcName + * @param rpcName Name of the RPC endpoint. Takes the format ServiceName.RpcName * @param message The message to send. - * @param The message type parameter + * @param The type of protobuf object. * @return The JobID of the request. This can be used to find the appropriate {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. */ - public > JobID sendMessage(Class clazz, String name, TRequest message) { + public > JobID sendMessage(Class clazz, String rpcName, TRequest message) { if (message == null) { throw new IllegalArgumentException("message is null"); } @@ -74,7 +74,7 @@ public > JobID sendMessage ClientMsgProtobuf msg = new ClientMsgProtobuf<>(clazz, eMsg); msg.setSourceJobID(jobID); - msg.getHeader().getProto().setTargetJobName(name); + msg.getHeader().getProto().setTargetJobName(rpcName); msg.setBody(message); client.send(msg); @@ -86,18 +86,18 @@ public > JobID sendMessage * Sends a notification. * * @param clazz The type of the body, for type erasure - * @param name Name of the RPC endpoint. Takes the format ServiceName.RpcName + * @param rpcName Name of the RPC endpoint. Takes the format ServiceName.RpcName * @param message The message to send. - * @param The message type parameter + * @param The type of protobuf object. */ - public > void sendNotification(Class clazz, String name, TRequest message) { + public > void sendNotification(Class clazz, String rpcName, TRequest message) { if (message == null) { throw new IllegalArgumentException("message is null"); } EMsg eMsg = client.getSteamID() == null ? EMsg.ServiceMethodCallFromClientNonAuthed : EMsg.ServiceMethodCallFromClient; ClientMsgProtobuf msg = new ClientMsgProtobuf<>(clazz, eMsg); - msg.getHeader().getProto().setTargetJobName(name); + msg.getHeader().getProto().setTargetJobName(rpcName); msg.setBody(message); client.send(msg); @@ -108,20 +108,20 @@ public > void sendNotifica * Results are returned in a {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse} * * @param clazz The type of the body, for type erasure - * @param name Name of the RPC endpoint. Takes the format ServiceName.RpcName + * @param rpcName Name of the RPC endpoint. Takes the format ServiceName.RpcName * @param message The message to send. * @param isNotification Whether this message is a notification or not - * @param The message type parameter + * @param The type of protobuf object. * @return The JobID of the request. This can be used to find the appropriate {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. * @deprecated Use SendNotification() instead of passing 'true' bool in SendMessage. SendMessage incorrectly returned JobID for notifications, they have no response by design. */ @Deprecated - public > JobID sendMessage(Class clazz, String name, TRequest message, Boolean isNotification) { + public > JobID sendMessage(Class clazz, String rpcName, TRequest message, Boolean isNotification) { if (!isNotification) { - return sendMessage(clazz, name, message); + return sendMessage(clazz, rpcName, message); } - sendNotification(clazz, name, message); + sendNotification(clazz, rpcName, message); return JobID.INVALID; } diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java index ffca804b..5e9081f6 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java @@ -11,37 +11,20 @@ @SuppressWarnings("unused") public abstract class UnifiedService { - private final SteamUnifiedMessages steamUnifiedMessages; + // private static final Logger logger = LogManager.getLogger(UnifiedService.class); - private final String className = this.getClass().getSimpleName(); + private final SteamUnifiedMessages steamUnifiedMessages; public String getClassName() { - return className; - } - - /** - * Cast the protobuf request class into a GeneratedMessageV3.Builder class to make ClientMsgProtobuf happy. - * - * @param object The request .builder() - * @param clazz Type erasure to the Builder class. - * @param The type parameter for the object to be cast to. - * @return the class that's been cast. - */ - public static > TRequest convertInstanceOfObject(Object object, Class clazz) { - try { - return clazz.cast(object); - } catch (ClassCastException e) { - e.printStackTrace(); - return null; - } + return this.getClass().getSimpleName(); } /** * @param parentClassName The parent class name, ie: Player - * @param methodName The calling method name - * @return The formatted string with current service version: Player.GetGameBadgeLevels#1 + * @param methodName The calling method name, ie: GetGameBadgeLevels + * @return The name of the RPC endpoint as formatted ServiceName.RpcName. ie: Player.GetGameBadgeLevels#1 */ - private String getTargetJobName(String parentClassName, String methodName) { + private static String getRpcName(String parentClassName, String methodName) { return String.format("%s.%s#%s", parentClassName, methodName, 1); } @@ -51,14 +34,9 @@ private String getTargetJobName(String parentClassName, String methodName) { * @return The calling method name. */ public static String getMethodName() { - return Thread.currentThread().getStackTrace()[2].getMethodName(); // Guaranteed 100% terrible! + return Thread.currentThread().getStackTrace()[3].getMethodName(); } - /** - * Public constructor. - * - * @param steamUnifiedMessages The instance of SteamUnifiedMessages - */ public UnifiedService(SteamUnifiedMessages steamUnifiedMessages) { this.steamUnifiedMessages = steamUnifiedMessages; } @@ -68,42 +46,41 @@ public UnifiedService(SteamUnifiedMessages steamUnifiedMessages) { *

* Results are returned in a {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. * - * @param clazz The type of protobuf object request. - * @param serviceName The service name, ServiceName.RpcName. - * @param rpcName The rpc name of the service, ServiceName.RpcName. - * @param request The requested protobuf object's builder - * @param The request type parameter. - * @return The JobID of the request. This can be used to find the appropriate {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. + * @param clazz The type of the body, for type erasure + * @param message The message to send. + * @param The type of protobuf object. + * @return The JobID of the message. This can be used to find the appropriate {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. */ - public > JobID sendMessage - (Class clazz, String serviceName, String rpcName, TRequest request) { + public > JobID sendMessage(Class clazz, TRequest message) { + String serviceName = getClassName(); + String rpcName = getMethodName(); - return sendMessageOrNotification(clazz, getTargetJobName(serviceName, rpcName), request, false); + return sendMessageOrNotification(clazz, getRpcName(serviceName, rpcName), message, false); } /** * Sends a notification. * - * @param clazz The type of protobuf object request. - * @param serviceName The service name, ServiceName.RpcName. - * @param rpcName The rpc name of the service, ServiceName.RpcName. - * @param request The type of the protobuf object which is the response to the RPC call. - * @param The request type parameter + * @param clazz The type of the body, for type erasure + * @param message The message to send. + * @param The type of protobuf object. */ - public > void sendNotification - (Class clazz, String serviceName, String rpcName, TRequest request) { + public > void sendNotification(Class clazz, TRequest message) { + String serviceName = getClassName(); + String rpcName = getMethodName(); + - sendMessageOrNotification(clazz, getTargetJobName(serviceName, rpcName), request, true); + sendMessageOrNotification(clazz, getRpcName(serviceName, rpcName), message, true); } private > JobID sendMessageOrNotification - (Class clazz, String name, TRequest message, Boolean isNotification) { + (Class clazz, String rpcName, TRequest message, Boolean isNotification) { if (isNotification) { - steamUnifiedMessages.sendNotification(clazz, name, message); + steamUnifiedMessages.sendNotification(clazz, rpcName, message); return null; } - return steamUnifiedMessages.sendMessage(clazz, name, message); + return steamUnifiedMessages.sendMessage(clazz, rpcName, message); } } From 5c24c5068875c86bc2787622e0ff1464e2b388ce Mon Sep 17 00:00:00 2001 From: Lossy Date: Wed, 4 Jan 2023 22:28:29 -0600 Subject: [PATCH 12/22] Modify interfaces to return JobID or void --- .../in/dragonbra/javasteam/rpc/IChat.java | 9 +- .../in/dragonbra/javasteam/rpc/IChatRoom.java | 166 ++++++++++++------ .../javasteam/rpc/IChatRoomClient.java | 39 ++-- .../javasteam/rpc/IChatUsability.java | 11 +- .../javasteam/rpc/IChatUsabilityClient.java | 11 +- .../javasteam/rpc/IClanChatRooms.java | 12 +- .../rpc/IContentServerDirectory.java | 14 +- .../javasteam/rpc/IFriendMessages.java | 22 ++- .../javasteam/rpc/IFriendMessagesClient.java | 19 +- .../in/dragonbra/javasteam/rpc/IParental.java | 36 ++-- .../javasteam/rpc/IParentalClient.java | 19 +- .../javasteam/rpc/IPlayerClient.java | 30 +++- .../javasteam/rpc/IRemoteClient.java | 45 +++-- .../rpc/IRemoteClientSteamClient.java | 24 ++- 14 files changed, 323 insertions(+), 134 deletions(-) diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IChat.java b/src/main/java/in/dragonbra/javasteam/rpc/IChat.java index 5451ecb9..29035500 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IChat.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IChat.java @@ -1,7 +1,14 @@ package in.dragonbra.javasteam.rpc; import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.*; +import in.dragonbra.javasteam.types.JobID; +/** + * @author Lossy + * @since 2023-01-04 + */ public interface IChat { - CChat_RequestFriendPersonaStates_Response RequestFriendPersonaStates(CChat_RequestFriendPersonaStates_Request request); + + /* CChat_RequestFriendPersonaStates_Response */ + JobID RequestFriendPersonaStates(CChat_RequestFriendPersonaStates_Request request); } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IChatRoom.java b/src/main/java/in/dragonbra/javasteam/rpc/IChatRoom.java index f7e0b7b1..9490bca1 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IChatRoom.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IChatRoom.java @@ -1,112 +1,170 @@ package in.dragonbra.javasteam.rpc; import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.*; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.*; +import in.dragonbra.javasteam.types.JobID; +/** + * @author Lossy + * @since 2023-01-04 + */ public interface IChatRoom { - CChatRoom_CreateChatRoomGroup_Response CreateChatRoomGroup(CChatRoom_CreateChatRoomGroup_Request request); - CChatRoom_SaveChatRoomGroup_Response SaveChatRoomGroup(CChatRoom_SaveChatRoomGroup_Request request); + /* CChatRoom_CreateChatRoomGroup_Response */ + JobID CreateChatRoomGroup(CChatRoom_CreateChatRoomGroup_Request request); - CChatRoom_RenameChatRoomGroup_Response RenameChatRoomGroup(CChatRoom_RenameChatRoomGroup_Request request); + /* CChatRoom_SaveChatRoomGroup_Response */ + JobID SaveChatRoomGroup(CChatRoom_SaveChatRoomGroup_Request request); - CChatRoom_SetChatRoomGroupTagline_Response SetChatRoomGroupTagline(CChatRoom_SetChatRoomGroupTagline_Request request); + /* CChatRoom_RenameChatRoomGroup_Response */ + JobID RenameChatRoomGroup(CChatRoom_RenameChatRoomGroup_Request request); - CChatRoom_SetChatRoomGroupAvatar_Response SetChatRoomGroupAvatar(CChatRoom_SetChatRoomGroupAvatar_Request request); + /* CChatRoom_SetChatRoomGroupTagline_Response */ + JobID SetChatRoomGroupTagline(CChatRoom_SetChatRoomGroupTagline_Request request); - CChatRoom_SetChatRoomGroupWatchingBroadcast_Response SetChatRoomGroupWatchingBroadcast(CChatRoom_SetChatRoomGroupWatchingBroadcast_Request request); + /* CChatRoom_SetChatRoomGroupAvatar_Response */ + JobID SetChatRoomGroupAvatar(CChatRoom_SetChatRoomGroupAvatar_Request request); - CChatRoom_JoinMiniGameForChatRoomGroup_Response JoinMiniGameForChatRoomGroup(CChatRoom_JoinMiniGameForChatRoomGroup_Request request); + /* CChatRoom_SetChatRoomGroupWatchingBroadcast_Response */ + JobID SetChatRoomGroupWatchingBroadcast(CChatRoom_SetChatRoomGroupWatchingBroadcast_Request request); - CChatRoom_EndMiniGameForChatRoomGroup_Response EndMiniGameForChatRoomGroup(CChatRoom_EndMiniGameForChatRoomGroup_Request request); + /* CChatRoom_JoinMiniGameForChatRoomGroup_Response */ + JobID JoinMiniGameForChatRoomGroup(CChatRoom_JoinMiniGameForChatRoomGroup_Request request); - CChatRoom_MuteUser_Response MuteUserInGroup(CChatRoom_MuteUser_Request request); + /* CChatRoom_EndMiniGameForChatRoomGroup_Response */ + JobID EndMiniGameForChatRoomGroup(CChatRoom_EndMiniGameForChatRoomGroup_Request request); - CChatRoom_KickUser_Response KickUserFromGroup(CChatRoom_KickUser_Request request); + /* CChatRoom_MuteUser_Response */ + JobID MuteUserInGroup(CChatRoom_MuteUser_Request request); - CChatRoom_SetUserBanState_Response SetUserBanState(CChatRoom_SetUserBanState_Request request); + /* CChatRoom_KickUser_Response */ + JobID KickUserFromGroup(CChatRoom_KickUser_Request request); - CChatRoom_RevokeInvite_Response RevokeInviteToGroup(CChatRoom_RevokeInvite_Request request); + /* CChatRoom_SetUserBanState_Response */ + JobID SetUserBanState(CChatRoom_SetUserBanState_Request request); - CChatRoom_CreateRole_Response CreateRole(CChatRoom_CreateRole_Request request); + /* CChatRoom_RevokeInvite_Response */ + JobID RevokeInviteToGroup(CChatRoom_RevokeInvite_Request request); - CChatRoom_GetRoles_Response GetRoles(CChatRoom_GetRoles_Request request); + /* CChatRoom_CreateRole_Response */ + JobID CreateRole(CChatRoom_CreateRole_Request request); - CChatRoom_RenameRole_Response RenameRole(CChatRoom_RenameRole_Request request); + /* CChatRoom_GetRoles_Response */ + JobID GetRoles(CChatRoom_GetRoles_Request request); - CChatRoom_ReorderRole_Response ReorderRole(CChatRoom_ReorderRole_Request request); + /* CChatRoom_RenameRole_Response */ + JobID RenameRole(CChatRoom_RenameRole_Request request); - CChatRoom_DeleteRole_Response DeleteRole(CChatRoom_DeleteRole_Request request); + /* CChatRoom_ReorderRole_Response */ + JobID ReorderRole(CChatRoom_ReorderRole_Request request); - CChatRoom_GetRoleActions_Response GetRoleActions(CChatRoom_GetRoleActions_Request request); + /* CChatRoom_DeleteRole_Response */ + JobID DeleteRole(CChatRoom_DeleteRole_Request request); - CChatRoom_ReplaceRoleActions_Response ReplaceRoleActions(CChatRoom_ReplaceRoleActions_Request request); + /* CChatRoom_GetRoleActions_Response */ + JobID GetRoleActions(CChatRoom_GetRoleActions_Request request); - CChatRoom_AddRoleToUser_Response AddRoleToUser(CChatRoom_AddRoleToUser_Request request); + /* CChatRoom_ReplaceRoleActions_Response */ + JobID ReplaceRoleActions(CChatRoom_ReplaceRoleActions_Request request); - CChatRoom_GetRolesForUser_Response GetRolesForUser(CChatRoom_GetRolesForUser_Request request); + /* CChatRoom_AddRoleToUser_Response */ + JobID AddRoleToUser(CChatRoom_AddRoleToUser_Request request); - CChatRoom_DeleteRoleFromUser_Response DeleteRoleFromUser(CChatRoom_DeleteRoleFromUser_Request request); + /* CChatRoom_GetRolesForUser_Response */ + JobID GetRolesForUser(CChatRoom_GetRolesForUser_Request request); - CChatRoom_JoinChatRoomGroup_Response JoinChatRoomGroup(CChatRoom_JoinChatRoomGroup_Request request); + /* CChatRoom_DeleteRoleFromUser_Response */ + JobID DeleteRoleFromUser(CChatRoom_DeleteRoleFromUser_Request request); - CChatRoom_InviteFriendToChatRoomGroup_Response InviteFriendToChatRoomGroup(CChatRoom_InviteFriendToChatRoomGroup_Request request); + /* CChatRoom_JoinChatRoomGroup_Response */ + JobID JoinChatRoomGroup(CChatRoom_JoinChatRoomGroup_Request request); - CChatRoom_LeaveChatRoomGroup_Response LeaveChatRoomGroup(CChatRoom_LeaveChatRoomGroup_Request request); + /* CChatRoom_InviteFriendToChatRoomGroup_Response */ + JobID InviteFriendToChatRoomGroup(CChatRoom_InviteFriendToChatRoomGroup_Request request); - CChatRoom_CreateChatRoom_Response CreateChatRoom(CChatRoom_CreateChatRoom_Request request); + /* CChatRoom_LeaveChatRoomGroup_Response */ + JobID LeaveChatRoomGroup(CChatRoom_LeaveChatRoomGroup_Request request); - CChatRoom_DeleteChatRoom_Response DeleteChatRoom(CChatRoom_DeleteChatRoom_Request request); + /* CChatRoom_CreateChatRoom_Response */ + JobID CreateChatRoom(CChatRoom_CreateChatRoom_Request request); - CChatRoom_RenameChatRoom_Response RenameChatRoom(CChatRoom_RenameChatRoom_Request request); + /* CChatRoom_DeleteChatRoom_Response */ + JobID DeleteChatRoom(CChatRoom_DeleteChatRoom_Request request); - CChatRoom_ReorderChatRoom_Response ReorderChatRoom(CChatRoom_ReorderChatRoom_Request request); + /* CChatRoom_RenameChatRoom_Response */ + JobID RenameChatRoom(CChatRoom_RenameChatRoom_Request request); - CChatRoom_SendChatMessage_Response SendChatMessage(CChatRoom_SendChatMessage_Request request); + /* CChatRoom_ReorderChatRoom_Response */ + JobID ReorderChatRoom(CChatRoom_ReorderChatRoom_Request request); - CChatRoom_JoinVoiceChat_Response JoinVoiceChat(CChatRoom_JoinVoiceChat_Request request); + /* CChatRoom_SendChatMessage_Response */ + JobID SendChatMessage(CChatRoom_SendChatMessage_Request request); - CChatRoom_LeaveVoiceChat_Response LeaveVoiceChat(CChatRoom_LeaveVoiceChat_Request request); + /* CChatRoom_JoinVoiceChat_Response */ + JobID JoinVoiceChat(CChatRoom_JoinVoiceChat_Request request); - CChatRoom_GetMessageHistory_Response GetMessageHistory(CChatRoom_GetMessageHistory_Request request); + /* CChatRoom_LeaveVoiceChat_Response */ + JobID LeaveVoiceChat(CChatRoom_LeaveVoiceChat_Request request); - CChatRoom_GetMyChatRoomGroups_Response GetMyChatRoomGroups(CChatRoom_GetMyChatRoomGroups_Request request); + /* CChatRoom_GetMessageHistory_Response */ + JobID GetMessageHistory(CChatRoom_GetMessageHistory_Request request); - CChatRoom_GetChatRoomGroupState_Response GetChatRoomGroupState(CChatRoom_GetChatRoomGroupState_Request request); + /* CChatRoom_GetMyChatRoomGroups_Response */ + JobID GetMyChatRoomGroups(CChatRoom_GetMyChatRoomGroups_Request request); - CChatRoom_GetChatRoomGroupSummary_Response GetChatRoomGroupSummary(CChatRoom_GetChatRoomGroupSummary_Request request); + /* CChatRoom_GetChatRoomGroupState_Response */ + JobID GetChatRoomGroupState(CChatRoom_GetChatRoomGroupState_Request request); - CChatRoom_SetAppChatRoomGroupForceActive_Response SetAppChatRoomGroupForceActive(CChatRoom_SetAppChatRoomGroupForceActive_Request request); + /* CChatRoom_GetChatRoomGroupSummary_Response */ + JobID GetChatRoomGroupSummary(CChatRoom_GetChatRoomGroupSummary_Request request); - NoResponse SetAppChatRoomGroupStopForceActive(CChatRoom_SetAppChatRoomGroupStopForceActive_Notification request); + /* CChatRoom_SetAppChatRoomGroupForceActive_Response */ + JobID SetAppChatRoomGroupForceActive(CChatRoom_SetAppChatRoomGroupForceActive_Request request); - NoResponse AckChatMessage(CChatRoom_AckChatMessage_Notification request); + /* NoResponse */ + void SetAppChatRoomGroupStopForceActive(CChatRoom_SetAppChatRoomGroupStopForceActive_Notification request); - CChatRoom_CreateInviteLink_Response CreateInviteLink(CChatRoom_CreateInviteLink_Request request); + /* NoResponse */ + void AckChatMessage(CChatRoom_AckChatMessage_Notification request); - CChatRoom_GetInviteLinkInfo_Response GetInviteLinkInfo(CChatRoom_GetInviteLinkInfo_Request request); + /* CChatRoom_CreateInviteLink_Response */ + JobID CreateInviteLink(CChatRoom_CreateInviteLink_Request request); - CChatRoom_GetInviteInfo_Response GetInviteInfo(CChatRoom_GetInviteInfo_Request request); + /* CChatRoom_GetInviteLinkInfo_Response */ + JobID GetInviteLinkInfo(CChatRoom_GetInviteLinkInfo_Request request); - CChatRoom_GetInviteLinksForGroup_Response GetInviteLinksForGroup(CChatRoom_GetInviteLinksForGroup_Request request); + /* CChatRoom_GetInviteInfo_Response */ + JobID GetInviteInfo(CChatRoom_GetInviteInfo_Request request); - CChatRoom_GetBanList_Response GetBanList(CChatRoom_GetBanList_Request request); + /* CChatRoom_GetInviteLinksForGroup_Response */ + JobID GetInviteLinksForGroup(CChatRoom_GetInviteLinksForGroup_Request request); - CChatRoom_GetInviteList_Response GetInviteList(CChatRoom_GetInviteList_Request request); + /* CChatRoom_GetBanList_Response */ + JobID GetBanList(CChatRoom_GetBanList_Request request); - CChatRoom_DeleteInviteLink_Response DeleteInviteLink(CChatRoom_DeleteInviteLink_Request request); + /*CChatRoom_GetInviteList_Response */ + JobID GetInviteList(CChatRoom_GetInviteList_Request request); - CChatRoom_SetSessionActiveChatRoomGroups_Response SetSessionActiveChatRoomGroups(CChatRoom_SetSessionActiveChatRoomGroups_Request request); + /* CChatRoom_DeleteInviteLink_Response */ + JobID DeleteInviteLink(CChatRoom_DeleteInviteLink_Request request); - CChatRoom_SetUserChatGroupPreferences_Response SetUserChatGroupPreferences(CChatRoom_SetUserChatGroupPreferences_Request request); + /* CChatRoom_SetSessionActiveChatRoomGroups_Response */ + JobID SetSessionActiveChatRoomGroups(CChatRoom_SetSessionActiveChatRoomGroups_Request request); - CChatRoom_DeleteChatMessages_Response DeleteChatMessages(CChatRoom_DeleteChatMessages_Request request); + /* CChatRoom_SetUserChatGroupPreferences_Response */ + JobID SetUserChatGroupPreferences(CChatRoom_SetUserChatGroupPreferences_Request request); - NoResponse UpdateMemberListView(CChatRoom_UpdateMemberListView_Notification request); + /* CChatRoom_DeleteChatMessages_Response */ + JobID DeleteChatMessages(CChatRoom_DeleteChatMessages_Request request); - CChatRoom_SearchMembers_Response SearchMembers(CChatRoom_SearchMembers_Request request); + /* NoResponse */ + void UpdateMemberListView(CChatRoom_UpdateMemberListView_Notification request); - CChatRoom_UpdateMessageReaction_Response UpdateMessageReaction(CChatRoom_UpdateMessageReaction_Request request); + /* CChatRoom_SearchMembers_Response */ + JobID SearchMembers(CChatRoom_SearchMembers_Request request); - CChatRoom_GetMessageReactionReactors_Response GetMessageReactionReactors(CChatRoom_GetMessageReactionReactors_Request request); + /* CChatRoom_UpdateMessageReaction_Response */ + JobID UpdateMessageReaction(CChatRoom_UpdateMessageReaction_Request request); + + /* CChatRoom_GetMessageReactionReactors_Response */ + JobID GetMessageReactionReactors(CChatRoom_GetMessageReactionReactors_Request request); } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IChatRoomClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IChatRoomClient.java index d1690a8b..140b23dd 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IChatRoomClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IChatRoomClient.java @@ -1,28 +1,43 @@ package in.dragonbra.javasteam.rpc; import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.*; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.*; +/** + * @author Lossy + * @since 2023-01-04 + */ public interface IChatRoomClient { - NoResponse NotifyIncomingChatMessage(CChatRoom_IncomingChatMessage_Notification request); - NoResponse NotifyChatMessageModified(CChatRoom_ChatMessageModified_Notification request); + /* NoResponse */ + void NotifyIncomingChatMessage(CChatRoom_IncomingChatMessage_Notification request); - NoResponse NotifyMemberStateChange(CChatRoom_MemberStateChange_Notification request); + /* NoResponse */ + void NotifyChatMessageModified(CChatRoom_ChatMessageModified_Notification request); - NoResponse NotifyChatRoomHeaderStateChange(CChatRoom_ChatRoomHeaderState_Notification request); + /* NoResponse */ + void NotifyMemberStateChange(CChatRoom_MemberStateChange_Notification request); - NoResponse NotifyChatRoomGroupRoomsChange(CChatRoom_ChatRoomGroupRoomsChange_Notification request); + /* NoResponse */ + void NotifyChatRoomHeaderStateChange(CChatRoom_ChatRoomHeaderState_Notification request); - NoResponse NotifyShouldRejoinChatRoomVoiceChat(CChatRoom_NotifyShouldRejoinChatRoomVoiceChat_Notification request); + /* NoResponse */ + void NotifyChatRoomGroupRoomsChange(CChatRoom_ChatRoomGroupRoomsChange_Notification request); - NoResponse NotifyChatGroupUserStateChanged(ChatRoomClient_NotifyChatGroupUserStateChanged_Notification request); + /* NoResponse */ + void NotifyShouldRejoinChatRoomVoiceChat(CChatRoom_NotifyShouldRejoinChatRoomVoiceChat_Notification request); - NoResponse NotifyAckChatMessageEcho(CChatRoom_AckChatMessage_Notification request); + /* NoResponse */ + void NotifyChatGroupUserStateChanged(ChatRoomClient_NotifyChatGroupUserStateChanged_Notification request); - NoResponse NotifyChatRoomDisconnect(ChatRoomClient_NotifyChatRoomDisconnect_Notification request); + /* NoResponse */ + void NotifyAckChatMessageEcho(CChatRoom_AckChatMessage_Notification request); - NoResponse NotifyMemberListViewUpdated(CChatRoomClient_MemberListViewUpdated_Notification request); + /* NoResponse */ + void NotifyChatRoomDisconnect(ChatRoomClient_NotifyChatRoomDisconnect_Notification request); - NoResponse NotifyMessageReaction(CChatRoom_MessageReaction_Notification request); + /* NoResponse */ + void NotifyMemberListViewUpdated(CChatRoomClient_MemberListViewUpdated_Notification request); + + /* NoResponse */ + void NotifyMessageReaction(CChatRoom_MessageReaction_Notification request); } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IChatUsability.java b/src/main/java/in/dragonbra/javasteam/rpc/IChatUsability.java index 3787aa74..eef26221 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IChatUsability.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IChatUsability.java @@ -1,8 +1,13 @@ package in.dragonbra.javasteam.rpc; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.*; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.*; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.CChatUsability_ClientUsabilityMetrics_Notification; +/** + * @author Lossy + * @since 2023-01-04 + */ public interface IChatUsability { - NoResponse NotifyClientUsabilityMetrics(CChatUsability_ClientUsabilityMetrics_Notification request); + + /* NoResponse */ + void NotifyClientUsabilityMetrics(CChatUsability_ClientUsabilityMetrics_Notification request); } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IChatUsabilityClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IChatUsabilityClient.java index 02085265..3e6b1fb8 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IChatUsabilityClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IChatUsabilityClient.java @@ -1,9 +1,14 @@ package in.dragonbra.javasteam.rpc; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.*; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.*; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.CChatUsability_RequestClientUsabilityMetrics_Notification; +/** + * @author Lossy + * @since 2023-01-04 + */ public interface IChatUsabilityClient { - NoResponse NotifyRequestClientUsabilityMetrics(CChatUsability_RequestClientUsabilityMetrics_Notification request); + + /* NoResponse */ + void NotifyRequestClientUsabilityMetrics(CChatUsability_RequestClientUsabilityMetrics_Notification request); } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IClanChatRooms.java b/src/main/java/in/dragonbra/javasteam/rpc/IClanChatRooms.java index 49736216..cbbcb952 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IClanChatRooms.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IClanChatRooms.java @@ -1,9 +1,17 @@ package in.dragonbra.javasteam.rpc; import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.*; +import in.dragonbra.javasteam.types.JobID; +/** + * @author Lossy + * @since 2023-01-04 + */ public interface IClanChatRooms { - CClanChatRooms_GetClanChatRoomInfo_Response GetClanChatRoomInfo(CClanChatRooms_GetClanChatRoomInfo_Request request); - CClanChatRooms_SetClanChatRoomPrivate_Response SetClanChatRoomPrivate(CClanChatRooms_SetClanChatRoomPrivate_Request request); + /* CClanChatRooms_GetClanChatRoomInfo_Response */ + JobID GetClanChatRoomInfo(CClanChatRooms_GetClanChatRoomInfo_Request request); + + /* CClanChatRooms_SetClanChatRoomPrivate_Response */ + JobID SetClanChatRoomPrivate(CClanChatRooms_SetClanChatRoomPrivate_Request request); } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IContentServerDirectory.java b/src/main/java/in/dragonbra/javasteam/rpc/IContentServerDirectory.java index 7e436c5b..08fba1e0 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IContentServerDirectory.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IContentServerDirectory.java @@ -1,13 +1,19 @@ package in.dragonbra.javasteam.rpc; import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesContentsystemSteamclient.*; +import in.dragonbra.javasteam.types.JobID; public interface IContentServerDirectory { - CContentServerDirectory_GetServersForSteamPipe_Response GetServersForSteamPipe(CContentServerDirectory_GetServersForSteamPipe_Request request); - CContentServerDirectory_GetDepotPatchInfo_Response GetDepotPatchInfo(CContentServerDirectory_GetDepotPatchInfo_Request request); + /* CContentServerDirectory_GetServersForSteamPipe_Response */ + JobID GetServersForSteamPipe(CContentServerDirectory_GetServersForSteamPipe_Request request); - CContentServerDirectory_GetClientUpdateHosts_Response GetClientUpdateHosts(CContentServerDirectory_GetClientUpdateHosts_Request request); + /* CContentServerDirectory_GetDepotPatchInfo_Response */ + JobID GetDepotPatchInfo(CContentServerDirectory_GetDepotPatchInfo_Request request); - CContentServerDirectory_GetManifestRequestCode_Response GetManifestRequestCode(CContentServerDirectory_GetManifestRequestCode_Request request); + /* CContentServerDirectory_GetClientUpdateHosts_Response */ + JobID GetClientUpdateHosts(CContentServerDirectory_GetClientUpdateHosts_Request request); + + /* CContentServerDirectory_GetManifestRequestCode_Response */ + JobID GetManifestRequestCode(CContentServerDirectory_GetManifestRequestCode_Request request); } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessages.java b/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessages.java index 59ccf6a9..50bf8809 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessages.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessages.java @@ -1,18 +1,28 @@ package in.dragonbra.javasteam.rpc; import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesFriendmessagesSteamclient.*; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.NoResponse; +import in.dragonbra.javasteam.types.JobID; +/** + * @author Lossy + * @since 2023-01-04 + */ public interface IFriendMessages { - CFriendMessages_GetRecentMessages_Response GetRecentMessages(CFriendMessages_GetRecentMessages_Request request); + + /* CFriendMessages_GetRecentMessages_Response */ + JobID GetRecentMessages(CFriendMessages_GetRecentMessages_Request request); CFriendsMessages_GetActiveMessageSessions_Response GetActiveMessageSessions(CFriendsMessages_GetActiveMessageSessions_Request request); - CFriendMessages_SendMessage_Response SendMessage(CFriendMessages_SendMessage_Request request); + /* CFriendMessages_SendMessage_Response */ + JobID SendMessage(CFriendMessages_SendMessage_Request request); - NoResponse AckMessage(CFriendMessages_AckMessage_Notification request); + /* NoResponse */ + void AckMessage(CFriendMessages_AckMessage_Notification request); - CFriendMessages_IsInFriendsUIBeta_Response IsInFriendsUIBeta(CFriendMessages_IsInFriendsUIBeta_Request request); + /* CFriendMessages_IsInFriendsUIBeta_Response */ + JobID IsInFriendsUIBeta(CFriendMessages_IsInFriendsUIBeta_Request request); - CFriendMessages_UpdateMessageReaction_Response UpdateMessageReaction(CFriendMessages_UpdateMessageReaction_Request request); + /* CFriendMessages_UpdateMessageReaction_Response */ + JobID UpdateMessageReaction(CFriendMessages_UpdateMessageReaction_Request request); } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessagesClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessagesClient.java index 3c6d276a..e0b0d78f 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessagesClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessagesClient.java @@ -1,12 +1,21 @@ package in.dragonbra.javasteam.rpc; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesFriendmessagesSteamclient.*; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.NoResponse; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesFriendmessagesSteamclient.CFriendMessages_AckMessage_Notification; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesFriendmessagesSteamclient.CFriendMessages_IncomingMessage_Notification; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesFriendmessagesSteamclient.CFriendMessages_MessageReaction_Notification; +/** + * @author Lossy + * @since 2023-01-04 + */ public interface IFriendMessagesClient { - NoResponse IncomingMessage(CFriendMessages_IncomingMessage_Notification request); - NoResponse NotifyAckMessageEcho(CFriendMessages_AckMessage_Notification request); + /* NoResponse */ + void IncomingMessage(CFriendMessages_IncomingMessage_Notification request); - NoResponse MessageReaction(CFriendMessages_MessageReaction_Notification request); + /* NoResponse */ + void NotifyAckMessageEcho(CFriendMessages_AckMessage_Notification request); + + /* NoResponse */ + void MessageReaction(CFriendMessages_MessageReaction_Notification request); } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IParental.java b/src/main/java/in/dragonbra/javasteam/rpc/IParental.java index f0c77099..8aa7949a 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IParental.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IParental.java @@ -1,25 +1,41 @@ package in.dragonbra.javasteam.rpc; import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesParentalSteamclient.*; +import in.dragonbra.javasteam.types.JobID; +/** + * @author Lossy + * @since 2023-01-04 + */ public interface IParental { - CParental_EnableParentalSettings_Response EnableParentalSettings(CParental_EnableParentalSettings_Request request); - CParental_DisableParentalSettings_Response DisableParentalSettings(CParental_DisableParentalSettings_Request request); + /* CParental_EnableParentalSettings_Response */ + JobID EnableParentalSettings(CParental_EnableParentalSettings_Request request); - CParental_GetParentalSettings_Response GetParentalSettings(CParental_GetParentalSettings_Request request); + /* CParental_DisableParentalSettings_Response */ + JobID DisableParentalSettings(CParental_DisableParentalSettings_Request request); - CParental_GetSignedParentalSettings_Response GetSignedParentalSettings(CParental_GetSignedParentalSettings_Request request); + /* CParental_GetParentalSettings_Response */ + JobID GetParentalSettings(CParental_GetParentalSettings_Request request); - CParental_SetParentalSettings_Response SetParentalSettings(CParental_SetParentalSettings_Request request); + /* CParental_GetSignedParentalSettings_Response */ + JobID GetSignedParentalSettings(CParental_GetSignedParentalSettings_Request request); - CParental_ValidateToken_Response ValidateToken(CParental_ValidateToken_Request request); + /* CParental_SetParentalSettings_Response */ + JobID SetParentalSettings(CParental_SetParentalSettings_Request request); - CParental_ValidatePassword_Response ValidatePassword(CParental_ValidatePassword_Request request); + /* CParental_ValidateToken_Response */ + JobID ValidateToken(CParental_ValidateToken_Request request); - CParental_LockClient_Response LockClient(CParental_LockClient_Request request); + /* CParental_ValidatePassword_Response */ + JobID ValidatePassword(CParental_ValidatePassword_Request request); - CParental_RequestRecoveryCode_Response RequestRecoveryCode(CParental_RequestRecoveryCode_Request request); + /* CParental_LockClient_Response */ + JobID LockClient(CParental_LockClient_Request request); - CParental_DisableWithRecoveryCode_Response DisableWithRecoveryCode(CParental_DisableWithRecoveryCode_Request request); + /* CParental_RequestRecoveryCode_Response */ + JobID RequestRecoveryCode(CParental_RequestRecoveryCode_Request request); + + /* CParental_DisableWithRecoveryCode_Response */ + JobID DisableWithRecoveryCode(CParental_DisableWithRecoveryCode_Request request); } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IParentalClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IParentalClient.java index b0aa887f..52f8e4b7 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IParentalClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IParentalClient.java @@ -1,12 +1,21 @@ package in.dragonbra.javasteam.rpc; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesParentalSteamclient.*; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.NoResponse; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesParentalSteamclient.CParental_ParentalLock_Notification; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesParentalSteamclient.CParental_ParentalSettingsChange_Notification; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesParentalSteamclient.CParental_ParentalUnlock_Notification; +/** + * @author Lossy + * @since 2023-01-04 + */ public interface IParentalClient { - NoResponse NotifySettingsChange(CParental_ParentalSettingsChange_Notification request); - NoResponse NotifyUnlock(CParental_ParentalUnlock_Notification request); + /* NoResponse */ + void NotifySettingsChange(CParental_ParentalSettingsChange_Notification request); - NoResponse NotifyLock(CParental_ParentalLock_Notification request); + /* NoResponse */ + void NotifyUnlock(CParental_ParentalUnlock_Notification request); + + /* NoResponse */ + void NotifyLock(CParental_ParentalLock_Notification request); } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IPlayerClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IPlayerClient.java index 64beefc4..90a08e80 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IPlayerClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IPlayerClient.java @@ -1,22 +1,34 @@ package in.dragonbra.javasteam.rpc; import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesPlayerSteamclient.*; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.*; +/** + * @author Lossy + * @since 2023-01-04 + */ public interface IPlayerClient { - NoResponse NotifyLastPlayedTimes(CPlayer_LastPlayedTimes_Notification request); - NoResponse NotifyFriendNicknameChanged(CPlayer_FriendNicknameChanged_Notification request); + /* NoResponse */ + void NotifyLastPlayedTimes(CPlayer_LastPlayedTimes_Notification request); - NoResponse NotifyFriendEquippedProfileItemsChanged(CPlayer_FriendEquippedProfileItemsChanged_Notification request); + /* NoResponse */ + void NotifyFriendNicknameChanged(CPlayer_FriendNicknameChanged_Notification request); - NoResponse NotifyNewSteamAnnouncementState(CPlayer_NewSteamAnnouncementState_Notification request); + /* NoResponse */ + void NotifyFriendEquippedProfileItemsChanged(CPlayer_FriendEquippedProfileItemsChanged_Notification request); - NoResponse NotifyCommunityPreferencesChanged(CPlayer_CommunityPreferencesChanged_Notification request); + /* NoResponse */ + void NotifyNewSteamAnnouncementState(CPlayer_NewSteamAnnouncementState_Notification request); - NoResponse NotifyTextFilterWordsChanged(CPlayer_TextFilterWordsChanged_Notification request); + /* NoResponse */ + void NotifyCommunityPreferencesChanged(CPlayer_CommunityPreferencesChanged_Notification request); - NoResponse NotifyPerFriendPreferencesChanged(CPlayer_PerFriendPreferencesChanged_Notification request); + /* NoResponse */ + void NotifyTextFilterWordsChanged(CPlayer_TextFilterWordsChanged_Notification request); - NoResponse NotifyPrivacyPrivacySettingsChanged(CPlayer_PrivacySettingsChanged_Notification request); + /* NoResponse */ + void NotifyPerFriendPreferencesChanged(CPlayer_PerFriendPreferencesChanged_Notification request); + + /* NoResponse */ + void NotifyPrivacyPrivacySettingsChanged(CPlayer_PrivacySettingsChanged_Notification request); } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClient.java index e1c58d4d..10ee7a11 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClient.java @@ -2,31 +2,50 @@ import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesRemoteclientServiceMessages.*; import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.*; +import in.dragonbra.javasteam.types.JobID; +/** + * @author Lossy + * @since 2023-01-04 + */ public interface IRemoteClient { - CRemoteClient_GetPairingInfo_Response GetPairingInfo(CRemoteClient_GetPairingInfo_Request request); - NoResponse NotifyOnline(CRemoteClient_Online_Notification request); + /* CRemoteClient_GetPairingInfo_Response */ + JobID GetPairingInfo(CRemoteClient_GetPairingInfo_Request request); - NoResponse NotifyReplyPacket(CRemoteClient_ReplyPacket_Notification request); + /* NoResponse */ + void NotifyOnline(CRemoteClient_Online_Notification request); - CRemoteClient_AllocateTURNServer_Response AllocateTURNServer(CRemoteClient_AllocateTURNServer_Request request); + /* NoResponse */ + void NotifyReplyPacket(CRemoteClient_ReplyPacket_Notification request); - CRemoteClient_AllocateRelayServer_Response AllocateRelayServer(CRemoteClient_AllocateRelayServer_Request request); + /* CRemoteClient_AllocateTURNServer_Response */ + JobID AllocateTURNServer(CRemoteClient_AllocateTURNServer_Request request); - CRemoteClient_AllocateSDR_Response AllocateSDR(CRemoteClient_AllocateSDR_Request request); + /* CRemoteClient_AllocateRelayServer_Response */ + JobID AllocateRelayServer(CRemoteClient_AllocateRelayServer_Request request); - NoResponse SendSteamBroadcastPacket(CRemoteClient_SteamBroadcast_Notification request); + /* CRemoteClient_AllocateSDR_Response */ + JobID AllocateSDR(CRemoteClient_AllocateSDR_Request request); - NoResponse SendSteamToSteamPacket(CRemoteClient_SteamToSteam_Notification request); + /* NoResponse */ + void SendSteamBroadcastPacket(CRemoteClient_SteamBroadcast_Notification request); - CRemotePlay_SessionStarted_Response SendRemotePlaySessionStarted(CRemotePlay_SessionStarted_Request request); + /* NoResponse */ + void SendSteamToSteamPacket(CRemoteClient_SteamToSteam_Notification request); - NoResponse SendRemotePlaySessionStopped(CRemotePlay_SessionStopped_Notification request); + /* CRemotePlay_SessionStarted_Response */ + JobID SendRemotePlaySessionStarted(CRemotePlay_SessionStarted_Request request); - NoResponse SendRemotePlayTogetherPacket(CRemotePlayTogether_Notification request); + /* NoResponse */ + void SendRemotePlaySessionStopped(CRemotePlay_SessionStopped_Notification request); - CRemoteClient_CreateRemotePlayTogetherInvitation_Response CreateRemotePlayTogetherInvitation(CRemoteClient_CreateRemotePlayTogetherInvitation_Request request); + /* NoResponse */ + void SendRemotePlayTogetherPacket(CRemotePlayTogether_Notification request); - CRemoteClient_DeleteRemotePlayTogetherInvitation_Response DeleteRemotePlayTogetherInvitation(CRemoteClient_DeleteRemotePlayTogetherInvitation_Request request); + /* CRemoteClient_CreateRemotePlayTogetherInvitation_Response */ + JobID CreateRemotePlayTogetherInvitation(CRemoteClient_CreateRemotePlayTogetherInvitation_Request request); + + /* CRemoteClient_DeleteRemotePlayTogetherInvitation_Response */ + JobID DeleteRemotePlayTogetherInvitation(CRemoteClient_DeleteRemotePlayTogetherInvitation_Request request); } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClientSteamClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClientSteamClient.java index a014e180..3a2bebdc 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClientSteamClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClientSteamClient.java @@ -1,18 +1,28 @@ package in.dragonbra.javasteam.rpc; import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesRemoteclientServiceMessages.*; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.*; +/** + * @author Lossy + * @since 2023-01-04 + */ public interface IRemoteClientSteamClient { - NoResponse NotifyRegisterStatusUpdate(CRemoteClient_RegisterStatusUpdate_Notification request); - NoResponse NotifyUnregisterStatusUpdate(CRemoteClient_UnregisterStatusUpdate_Notification request); + /* NoResponse */ + void NotifyRegisterStatusUpdate(CRemoteClient_RegisterStatusUpdate_Notification request); - NoResponse NotifyRemotePacket(CRemoteClient_RemotePacket_Notification request); + /* NoResponse */ + void NotifyUnregisterStatusUpdate(CRemoteClient_UnregisterStatusUpdate_Notification request); - NoResponse NotifySteamBroadcastPacket(CRemoteClient_SteamBroadcast_Notification request); + /* NoResponse */ + void NotifyRemotePacket(CRemoteClient_RemotePacket_Notification request); - NoResponse NotifySteamToSteamPacket(CRemoteClient_SteamToSteam_Notification request); + /* NoResponse */ + void NotifySteamBroadcastPacket(CRemoteClient_SteamBroadcast_Notification request); - NoResponse NotifyRemotePlayTogetherPacket(CRemotePlayTogether_Notification request); + /* NoResponse */ + void NotifySteamToSteamPacket(CRemoteClient_SteamToSteam_Notification request); + + /* NoResponse */ + void NotifyRemotePlayTogetherPacket(CRemotePlayTogether_Notification request); } From 18c32be6c7d8ceb790bd6c2c58754efcd0a876b7 Mon Sep 17 00:00:00 2001 From: Lossy Date: Wed, 4 Jan 2023 22:29:29 -0600 Subject: [PATCH 13/22] Create adapter classes from interfaces --- .../dragonbra/javasteam/rpc/service/Chat.java | 19 ++ .../javasteam/rpc/service/ChatRoom.java | 281 ++++++++++++++++++ .../javasteam/rpc/service/ChatRoomClient.java | 71 +++++ .../javasteam/rpc/service/ChatUsability.java | 21 ++ .../rpc/service/ChatUsabilityClient.java | 21 ++ .../javasteam/rpc/service/ClanChatRooms.java | 27 ++ .../rpc/service/ContentServerDirectory.java | 37 +++ .../javasteam/rpc/service/FriendMessages.java | 47 +++ .../rpc/service/FriendMessagesClient.java | 31 ++ .../javasteam/rpc/service/Parental.java | 67 +++++ .../javasteam/rpc/service/ParentalClient.java | 31 ++ .../javasteam/rpc/service/Player.java | 143 +++------ .../javasteam/rpc/service/PlayerClient.java | 56 ++++ .../javasteam/rpc/service/RemoteClient.java | 82 +++++ .../rpc/service/RemoteClientSteamClient.java | 46 +++ 15 files changed, 886 insertions(+), 94 deletions(-) create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/Chat.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoom.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoomClient.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsability.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsabilityClient.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/ClanChatRooms.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/ContentServerDirectory.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessages.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessagesClient.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/Parental.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/ParentalClient.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/PlayerClient.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClient.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClientSteamClient.java diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/Chat.java b/src/main/java/in/dragonbra/javasteam/rpc/service/Chat.java new file mode 100644 index 00000000..06a476cf --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/Chat.java @@ -0,0 +1,19 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.CChat_RequestFriendPersonaStates_Request; +import in.dragonbra.javasteam.rpc.IChat; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; +import in.dragonbra.javasteam.types.JobID; + +public class Chat extends UnifiedService implements IChat { + + public Chat(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public JobID RequestFriendPersonaStates(CChat_RequestFriendPersonaStates_Request request) { + return sendMessage(CChat_RequestFriendPersonaStates_Request.class, request.toBuilder()); + } +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoom.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoom.java new file mode 100644 index 00000000..d0268e70 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoom.java @@ -0,0 +1,281 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient; +import in.dragonbra.javasteam.rpc.IChatRoom; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; +import in.dragonbra.javasteam.types.JobID; + +// TODO implement +@SuppressWarnings("unused") +public class ChatRoom extends UnifiedService implements IChatRoom { + + public ChatRoom(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public JobID CreateChatRoomGroup(SteammessagesChatSteamclient.CChatRoom_CreateChatRoomGroup_Request request) { + return null; + } + + @Override + public JobID SaveChatRoomGroup(SteammessagesChatSteamclient.CChatRoom_SaveChatRoomGroup_Request request) { + return null; + } + + @Override + public JobID RenameChatRoomGroup(SteammessagesChatSteamclient.CChatRoom_RenameChatRoomGroup_Request request) { + return null; + } + + @Override + public JobID SetChatRoomGroupTagline(SteammessagesChatSteamclient.CChatRoom_SetChatRoomGroupTagline_Request request) { + return null; + } + + @Override + public JobID SetChatRoomGroupAvatar(SteammessagesChatSteamclient.CChatRoom_SetChatRoomGroupAvatar_Request request) { + return null; + } + + @Override + public JobID SetChatRoomGroupWatchingBroadcast(SteammessagesChatSteamclient.CChatRoom_SetChatRoomGroupWatchingBroadcast_Request request) { + return null; + } + + @Override + public JobID JoinMiniGameForChatRoomGroup(SteammessagesChatSteamclient.CChatRoom_JoinMiniGameForChatRoomGroup_Request request) { + return null; + } + + @Override + public JobID EndMiniGameForChatRoomGroup(SteammessagesChatSteamclient.CChatRoom_EndMiniGameForChatRoomGroup_Request request) { + return null; + } + + @Override + public JobID MuteUserInGroup(SteammessagesChatSteamclient.CChatRoom_MuteUser_Request request) { + return null; + } + + @Override + public JobID KickUserFromGroup(SteammessagesChatSteamclient.CChatRoom_KickUser_Request request) { + return null; + } + + @Override + public JobID SetUserBanState(SteammessagesChatSteamclient.CChatRoom_SetUserBanState_Request request) { + return null; + } + + @Override + public JobID RevokeInviteToGroup(SteammessagesChatSteamclient.CChatRoom_RevokeInvite_Request request) { + return null; + } + + @Override + public JobID CreateRole(SteammessagesChatSteamclient.CChatRoom_CreateRole_Request request) { + return null; + } + + @Override + public JobID GetRoles(SteammessagesChatSteamclient.CChatRoom_GetRoles_Request request) { + return null; + } + + @Override + public JobID RenameRole(SteammessagesChatSteamclient.CChatRoom_RenameRole_Request request) { + return null; + } + + @Override + public JobID ReorderRole(SteammessagesChatSteamclient.CChatRoom_ReorderRole_Request request) { + return null; + } + + @Override + public JobID DeleteRole(SteammessagesChatSteamclient.CChatRoom_DeleteRole_Request request) { + return null; + } + + @Override + public JobID GetRoleActions(SteammessagesChatSteamclient.CChatRoom_GetRoleActions_Request request) { + return null; + } + + @Override + public JobID ReplaceRoleActions(SteammessagesChatSteamclient.CChatRoom_ReplaceRoleActions_Request request) { + return null; + } + + @Override + public JobID AddRoleToUser(SteammessagesChatSteamclient.CChatRoom_AddRoleToUser_Request request) { + return null; + } + + @Override + public JobID GetRolesForUser(SteammessagesChatSteamclient.CChatRoom_GetRolesForUser_Request request) { + return null; + } + + @Override + public JobID DeleteRoleFromUser(SteammessagesChatSteamclient.CChatRoom_DeleteRoleFromUser_Request request) { + return null; + } + + @Override + public JobID JoinChatRoomGroup(SteammessagesChatSteamclient.CChatRoom_JoinChatRoomGroup_Request request) { + return null; + } + + @Override + public JobID InviteFriendToChatRoomGroup(SteammessagesChatSteamclient.CChatRoom_InviteFriendToChatRoomGroup_Request request) { + return null; + } + + @Override + public JobID LeaveChatRoomGroup(SteammessagesChatSteamclient.CChatRoom_LeaveChatRoomGroup_Request request) { + return null; + } + + @Override + public JobID CreateChatRoom(SteammessagesChatSteamclient.CChatRoom_CreateChatRoom_Request request) { + return null; + } + + @Override + public JobID DeleteChatRoom(SteammessagesChatSteamclient.CChatRoom_DeleteChatRoom_Request request) { + return null; + } + + @Override + public JobID RenameChatRoom(SteammessagesChatSteamclient.CChatRoom_RenameChatRoom_Request request) { + return null; + } + + @Override + public JobID ReorderChatRoom(SteammessagesChatSteamclient.CChatRoom_ReorderChatRoom_Request request) { + return null; + } + + @Override + public JobID SendChatMessage(SteammessagesChatSteamclient.CChatRoom_SendChatMessage_Request request) { + return null; + } + + @Override + public JobID JoinVoiceChat(SteammessagesChatSteamclient.CChatRoom_JoinVoiceChat_Request request) { + return null; + } + + @Override + public JobID LeaveVoiceChat(SteammessagesChatSteamclient.CChatRoom_LeaveVoiceChat_Request request) { + return null; + } + + @Override + public JobID GetMessageHistory(SteammessagesChatSteamclient.CChatRoom_GetMessageHistory_Request request) { + return null; + } + + @Override + public JobID GetMyChatRoomGroups(SteammessagesChatSteamclient.CChatRoom_GetMyChatRoomGroups_Request request) { + return null; + } + + @Override + public JobID GetChatRoomGroupState(SteammessagesChatSteamclient.CChatRoom_GetChatRoomGroupState_Request request) { + return null; + } + + @Override + public JobID GetChatRoomGroupSummary(SteammessagesChatSteamclient.CChatRoom_GetChatRoomGroupSummary_Request request) { + return null; + } + + @Override + public JobID SetAppChatRoomGroupForceActive(SteammessagesChatSteamclient.CChatRoom_SetAppChatRoomGroupForceActive_Request request) { + return null; + } + + @Override + public void SetAppChatRoomGroupStopForceActive(SteammessagesChatSteamclient.CChatRoom_SetAppChatRoomGroupStopForceActive_Notification request) { + + } + + @Override + public void AckChatMessage(SteammessagesChatSteamclient.CChatRoom_AckChatMessage_Notification request) { + + } + + @Override + public JobID CreateInviteLink(SteammessagesChatSteamclient.CChatRoom_CreateInviteLink_Request request) { + return null; + } + + @Override + public JobID GetInviteLinkInfo(SteammessagesChatSteamclient.CChatRoom_GetInviteLinkInfo_Request request) { + return null; + } + + @Override + public JobID GetInviteInfo(SteammessagesChatSteamclient.CChatRoom_GetInviteInfo_Request request) { + return null; + } + + @Override + public JobID GetInviteLinksForGroup(SteammessagesChatSteamclient.CChatRoom_GetInviteLinksForGroup_Request request) { + return null; + } + + @Override + public JobID GetBanList(SteammessagesChatSteamclient.CChatRoom_GetBanList_Request request) { + return null; + } + + @Override + public JobID GetInviteList(SteammessagesChatSteamclient.CChatRoom_GetInviteList_Request request) { + return null; + } + + @Override + public JobID DeleteInviteLink(SteammessagesChatSteamclient.CChatRoom_DeleteInviteLink_Request request) { + return null; + } + + @Override + public JobID SetSessionActiveChatRoomGroups(SteammessagesChatSteamclient.CChatRoom_SetSessionActiveChatRoomGroups_Request request) { + return null; + } + + @Override + public JobID SetUserChatGroupPreferences(SteammessagesChatSteamclient.CChatRoom_SetUserChatGroupPreferences_Request request) { + return null; + } + + @Override + public JobID DeleteChatMessages(SteammessagesChatSteamclient.CChatRoom_DeleteChatMessages_Request request) { + return null; + } + + @Override + public void UpdateMemberListView(SteammessagesChatSteamclient.CChatRoom_UpdateMemberListView_Notification request) { + + } + + @Override + public JobID SearchMembers(SteammessagesChatSteamclient.CChatRoom_SearchMembers_Request request) { + return null; + } + + @Override + public JobID UpdateMessageReaction(SteammessagesChatSteamclient.CChatRoom_UpdateMessageReaction_Request request) { + return null; + } + + @Override + public JobID GetMessageReactionReactors(SteammessagesChatSteamclient.CChatRoom_GetMessageReactionReactors_Request request) { + return null; + } +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoomClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoomClient.java new file mode 100644 index 00000000..51b609fc --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoomClient.java @@ -0,0 +1,71 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient; +import in.dragonbra.javasteam.rpc.IChatRoomClient; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; + +// TODO implement + +@SuppressWarnings("unused") +public class ChatRoomClient extends UnifiedService implements IChatRoomClient { + + public ChatRoomClient(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public void NotifyIncomingChatMessage(SteammessagesChatSteamclient.CChatRoom_IncomingChatMessage_Notification request) { + + } + + @Override + public void NotifyChatMessageModified(SteammessagesChatSteamclient.CChatRoom_ChatMessageModified_Notification request) { + + } + + @Override + public void NotifyMemberStateChange(SteammessagesChatSteamclient.CChatRoom_MemberStateChange_Notification request) { + + } + + @Override + public void NotifyChatRoomHeaderStateChange(SteammessagesChatSteamclient.CChatRoom_ChatRoomHeaderState_Notification request) { + + } + + @Override + public void NotifyChatRoomGroupRoomsChange(SteammessagesChatSteamclient.CChatRoom_ChatRoomGroupRoomsChange_Notification request) { + + } + + @Override + public void NotifyShouldRejoinChatRoomVoiceChat(SteammessagesChatSteamclient.CChatRoom_NotifyShouldRejoinChatRoomVoiceChat_Notification request) { + + } + + @Override + public void NotifyChatGroupUserStateChanged(SteammessagesChatSteamclient.ChatRoomClient_NotifyChatGroupUserStateChanged_Notification request) { + + } + + @Override + public void NotifyAckChatMessageEcho(SteammessagesChatSteamclient.CChatRoom_AckChatMessage_Notification request) { + + } + + @Override + public void NotifyChatRoomDisconnect(SteammessagesChatSteamclient.ChatRoomClient_NotifyChatRoomDisconnect_Notification request) { + + } + + @Override + public void NotifyMemberListViewUpdated(SteammessagesChatSteamclient.CChatRoomClient_MemberListViewUpdated_Notification request) { + + } + + @Override + public void NotifyMessageReaction(SteammessagesChatSteamclient.CChatRoom_MessageReaction_Notification request) { + + } +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsability.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsability.java new file mode 100644 index 00000000..b36d22a6 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsability.java @@ -0,0 +1,21 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient; +import in.dragonbra.javasteam.rpc.IChatUsability; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; + +// TODO implement + +@SuppressWarnings("unused") +public class ChatUsability extends UnifiedService implements IChatUsability { + + public ChatUsability(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public void NotifyClientUsabilityMetrics(SteammessagesChatSteamclient.CChatUsability_ClientUsabilityMetrics_Notification request) { + + } +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsabilityClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsabilityClient.java new file mode 100644 index 00000000..96db3211 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsabilityClient.java @@ -0,0 +1,21 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient; +import in.dragonbra.javasteam.rpc.IChatUsabilityClient; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; + +// TODO implement + +@SuppressWarnings("unused") +public class ChatUsabilityClient extends UnifiedService implements IChatUsabilityClient { + + public ChatUsabilityClient(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public void NotifyRequestClientUsabilityMetrics(SteammessagesChatSteamclient.CChatUsability_RequestClientUsabilityMetrics_Notification request) { + + } +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ClanChatRooms.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ClanChatRooms.java new file mode 100644 index 00000000..763dc1b9 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ClanChatRooms.java @@ -0,0 +1,27 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient; +import in.dragonbra.javasteam.rpc.IClanChatRooms; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; +import in.dragonbra.javasteam.types.JobID; + +// TODO implement + +@SuppressWarnings("unused") +public class ClanChatRooms extends UnifiedService implements IClanChatRooms { + + public ClanChatRooms(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public JobID GetClanChatRoomInfo(SteammessagesChatSteamclient.CClanChatRooms_GetClanChatRoomInfo_Request request) { + return null; + } + + @Override + public JobID SetClanChatRoomPrivate(SteammessagesChatSteamclient.CClanChatRooms_SetClanChatRoomPrivate_Request request) { + return null; + } +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ContentServerDirectory.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ContentServerDirectory.java new file mode 100644 index 00000000..f47c7e19 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ContentServerDirectory.java @@ -0,0 +1,37 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesContentsystemSteamclient; +import in.dragonbra.javasteam.rpc.IContentServerDirectory; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; +import in.dragonbra.javasteam.types.JobID; + +// TODO implement + +@SuppressWarnings("unused") +public class ContentServerDirectory extends UnifiedService implements IContentServerDirectory { + + public ContentServerDirectory(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public JobID GetServersForSteamPipe(SteammessagesContentsystemSteamclient.CContentServerDirectory_GetServersForSteamPipe_Request request) { + return null; + } + + @Override + public JobID GetDepotPatchInfo(SteammessagesContentsystemSteamclient.CContentServerDirectory_GetDepotPatchInfo_Request request) { + return null; + } + + @Override + public JobID GetClientUpdateHosts(SteammessagesContentsystemSteamclient.CContentServerDirectory_GetClientUpdateHosts_Request request) { + return null; + } + + @Override + public JobID GetManifestRequestCode(SteammessagesContentsystemSteamclient.CContentServerDirectory_GetManifestRequestCode_Request request) { + return null; + } +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessages.java b/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessages.java new file mode 100644 index 00000000..71413cf3 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessages.java @@ -0,0 +1,47 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesFriendmessagesSteamclient; +import in.dragonbra.javasteam.rpc.IFriendMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; +import in.dragonbra.javasteam.types.JobID; + +// TODO implement + +@SuppressWarnings("unused") +public class FriendMessages extends UnifiedService implements IFriendMessages { + + public FriendMessages(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public JobID GetRecentMessages(SteammessagesFriendmessagesSteamclient.CFriendMessages_GetRecentMessages_Request request) { + return null; + } + + @Override + public SteammessagesFriendmessagesSteamclient.CFriendsMessages_GetActiveMessageSessions_Response GetActiveMessageSessions(SteammessagesFriendmessagesSteamclient.CFriendsMessages_GetActiveMessageSessions_Request request) { + return null; + } + + @Override + public JobID SendMessage(SteammessagesFriendmessagesSteamclient.CFriendMessages_SendMessage_Request request) { + return null; + } + + @Override + public void AckMessage(SteammessagesFriendmessagesSteamclient.CFriendMessages_AckMessage_Notification request) { + + } + + @Override + public JobID IsInFriendsUIBeta(SteammessagesFriendmessagesSteamclient.CFriendMessages_IsInFriendsUIBeta_Request request) { + return null; + } + + @Override + public JobID UpdateMessageReaction(SteammessagesFriendmessagesSteamclient.CFriendMessages_UpdateMessageReaction_Request request) { + return null; + } +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessagesClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessagesClient.java new file mode 100644 index 00000000..2b212165 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessagesClient.java @@ -0,0 +1,31 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesFriendmessagesSteamclient; +import in.dragonbra.javasteam.rpc.IFriendMessagesClient; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; + +// TODO implement + +@SuppressWarnings("unused") +public class FriendMessagesClient extends UnifiedService implements IFriendMessagesClient { + + public FriendMessagesClient(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public void IncomingMessage(SteammessagesFriendmessagesSteamclient.CFriendMessages_IncomingMessage_Notification request) { + + } + + @Override + public void NotifyAckMessageEcho(SteammessagesFriendmessagesSteamclient.CFriendMessages_AckMessage_Notification request) { + + } + + @Override + public void MessageReaction(SteammessagesFriendmessagesSteamclient.CFriendMessages_MessageReaction_Notification request) { + + } +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/Parental.java b/src/main/java/in/dragonbra/javasteam/rpc/service/Parental.java new file mode 100644 index 00000000..34dac6d3 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/Parental.java @@ -0,0 +1,67 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesParentalSteamclient; +import in.dragonbra.javasteam.rpc.IParental; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; +import in.dragonbra.javasteam.types.JobID; + +// TODO implement + +@SuppressWarnings("unused") +public class Parental extends UnifiedService implements IParental { + + public Parental(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public JobID EnableParentalSettings(SteammessagesParentalSteamclient.CParental_EnableParentalSettings_Request request) { + return null; + } + + @Override + public JobID DisableParentalSettings(SteammessagesParentalSteamclient.CParental_DisableParentalSettings_Request request) { + return null; + } + + @Override + public JobID GetParentalSettings(SteammessagesParentalSteamclient.CParental_GetParentalSettings_Request request) { + return null; + } + + @Override + public JobID GetSignedParentalSettings(SteammessagesParentalSteamclient.CParental_GetSignedParentalSettings_Request request) { + return null; + } + + @Override + public JobID SetParentalSettings(SteammessagesParentalSteamclient.CParental_SetParentalSettings_Request request) { + return null; + } + + @Override + public JobID ValidateToken(SteammessagesParentalSteamclient.CParental_ValidateToken_Request request) { + return null; + } + + @Override + public JobID ValidatePassword(SteammessagesParentalSteamclient.CParental_ValidatePassword_Request request) { + return null; + } + + @Override + public JobID LockClient(SteammessagesParentalSteamclient.CParental_LockClient_Request request) { + return null; + } + + @Override + public JobID RequestRecoveryCode(SteammessagesParentalSteamclient.CParental_RequestRecoveryCode_Request request) { + return null; + } + + @Override + public JobID DisableWithRecoveryCode(SteammessagesParentalSteamclient.CParental_DisableWithRecoveryCode_Request request) { + return null; + } +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ParentalClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ParentalClient.java new file mode 100644 index 00000000..23eb91c5 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ParentalClient.java @@ -0,0 +1,31 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesParentalSteamclient; +import in.dragonbra.javasteam.rpc.IParentalClient; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; + +// TODO implement + +@SuppressWarnings("unused") +public class ParentalClient extends UnifiedService implements IParentalClient { + + public ParentalClient(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public void NotifySettingsChange(SteammessagesParentalSteamclient.CParental_ParentalSettingsChange_Notification request) { + + } + + @Override + public void NotifyUnlock(SteammessagesParentalSteamclient.CParental_ParentalUnlock_Notification request) { + + } + + @Override + public void NotifyLock(SteammessagesParentalSteamclient.CParental_ParentalLock_Notification request) { + + } +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/Player.java b/src/main/java/in/dragonbra/javasteam/rpc/service/Player.java index 01921fb6..74b26667 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/Player.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/Player.java @@ -10,6 +10,7 @@ * @author Lossy * @since 2023-01-04 */ +@SuppressWarnings("unused") public class Player extends UnifiedService implements IPlayer { public Player(SteamUnifiedMessages steamUnifiedMessages) { @@ -18,283 +19,237 @@ public Player(SteamUnifiedMessages steamUnifiedMessages) { @Override public JobID GetMutualFriendsForIncomingInvites(CPlayer_GetMutualFriendsForIncomingInvites_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetMutualFriendsForIncomingInvites_Request.class, request.toBuilder()); } @Override public JobID GetOwnedGames(CPlayer_GetOwnedGames_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetOwnedGames_Request.class, request.toBuilder()); } @Override public JobID GetPlayNext(CPlayer_GetPlayNext_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetPlayNext_Request.class, request.toBuilder()); } @Override public JobID GetFriendsGameplayInfo(CPlayer_GetFriendsGameplayInfo_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetFriendsGameplayInfo_Request.class, request.toBuilder()); } @Override public JobID GetGameBadgeLevels(CPlayer_GetGameBadgeLevels_Request request) { - CPlayer_GetGameBadgeLevels_Request.Builder msg = convertInstanceOfObject(request.toBuilder(), CPlayer_GetGameBadgeLevels_Request.Builder.class); - return sendMessage(CPlayer_GetGameBadgeLevels_Request.class, getClassName(), getMethodName(), msg); + return sendMessage(CPlayer_GetGameBadgeLevels_Request.class, request.toBuilder()); } @Override public JobID GetProfileBackground(CPlayer_GetProfileBackground_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetProfileBackground_Request.class, request.toBuilder()); } @Override public JobID SetProfileBackground(CPlayer_SetProfileBackground_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_SetProfileBackground_Request.class, request.toBuilder()); } @Override public JobID GetMiniProfileBackground(CPlayer_GetMiniProfileBackground_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetMiniProfileBackground_Request.class, request.toBuilder()); } @Override public JobID SetMiniProfileBackground(CPlayer_SetMiniProfileBackground_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_SetMiniProfileBackground_Request.class, request.toBuilder()); } @Override public JobID GetAvatarFrame(CPlayer_GetAvatarFrame_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetAvatarFrame_Request.class, request.toBuilder()); } @Override public JobID SetAvatarFrame(CPlayer_SetAvatarFrame_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_SetAvatarFrame_Request.class, request.toBuilder()); } @Override public JobID GetAnimatedAvatar(CPlayer_GetAnimatedAvatar_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetAnimatedAvatar_Request.class, request.toBuilder()); } @Override public JobID SetAnimatedAvatar(CPlayer_SetAnimatedAvatar_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_SetAnimatedAvatar_Request.class, request.toBuilder()); } @Override public JobID GetSteamDeckKeyboardSkin(CPlayer_GetSteamDeckKeyboardSkin_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetSteamDeckKeyboardSkin_Request.class, request.toBuilder()); } @Override public JobID SetSteamDeckKeyboardSkin(CPlayer_SetSteamDeckKeyboardSkin_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_SetSteamDeckKeyboardSkin_Request.class, request.toBuilder()); } @Override public JobID GetProfileItemsOwned(CPlayer_GetProfileItemsOwned_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetProfileItemsOwned_Request.class, request.toBuilder()); } @Override public JobID GetProfileItemsEquipped(CPlayer_GetProfileItemsEquipped_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetProfileItemsEquipped_Request.class, request.toBuilder()); } @Override public JobID SetEquippedProfileItemFlags(CPlayer_SetEquippedProfileItemFlags_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_SetEquippedProfileItemFlags_Request.class, request.toBuilder()); } @Override public JobID GetEmoticonList(CPlayer_GetEmoticonList_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetEmoticonList_Request.class, request.toBuilder()); } @Override public JobID GetAchievementsProgress(CPlayer_GetAchievementsProgress_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetAchievementsProgress_Request.class, request.toBuilder()); } @Override public JobID GetFavoriteBadge(CPlayer_GetFavoriteBadge_Request request) { - CPlayer_GetFavoriteBadge_Request.Builder msg = convertInstanceOfObject(request.toBuilder(), CPlayer_GetFavoriteBadge_Request.Builder.class); - return sendMessage(CPlayer_GetFavoriteBadge_Request.class, getClassName(), getMethodName(), msg); + return sendMessage(CPlayer_GetFavoriteBadge_Request.class, request.toBuilder()); } @Override public JobID SetFavoriteBadge(CPlayer_SetFavoriteBadge_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_SetFavoriteBadge_Request.class, request.toBuilder()); } @Override public JobID GetProfileCustomization(CPlayer_GetProfileCustomization_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetProfileCustomization_Request.class, request.toBuilder()); } @Override public JobID GetPurchasedProfileCustomizations(CPlayer_GetPurchasedProfileCustomizations_Request request) { - // TODO implement - return null; + ; + return sendMessage(CPlayer_GetPurchasedProfileCustomizations_Request.class, request.toBuilder()); } @Override public JobID GetPurchasedAndUpgradedProfileCustomizations(CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Request.class, request.toBuilder()); } @Override public JobID GetProfileThemesAvailable(CPlayer_GetProfileThemesAvailable_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetProfileThemesAvailable_Request.class, request.toBuilder()); } @Override public JobID SetProfileTheme(CPlayer_SetProfileTheme_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_SetProfileTheme_Request.class, request.toBuilder()); } @Override public JobID SetProfilePreferences(CPlayer_SetProfilePreferences_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_SetProfilePreferences_Request.class, request.toBuilder()); } @Override public JobID PostStatusToFriends(CPlayer_PostStatusToFriends_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_PostStatusToFriends_Request.class, request.toBuilder()); } @Override public JobID GetPostedStatus(CPlayer_GetPostedStatus_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetPostedStatus_Request.class, request.toBuilder()); } @Override public JobID DeletePostedStatus(CPlayer_DeletePostedStatus_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_DeletePostedStatus_Request.class, request.toBuilder()); } @Override public JobID ClientGetLastPlayedTimes(CPlayer_GetLastPlayedTimes_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetLastPlayedTimes_Request.class, request.toBuilder()); } @Override public JobID GetTimeSSAAccepted(CPlayer_GetTimeSSAAccepted_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetTimeSSAAccepted_Request.class, request.toBuilder()); } @Override public JobID AcceptSSA(CPlayer_AcceptSSA_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_AcceptSSA_Request.class, request.toBuilder()); } @Override public JobID GetNicknameList(CPlayer_GetNicknameList_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetNicknameList_Request.class, request.toBuilder()); } @Override public JobID GetPerFriendPreferences(CPlayer_GetPerFriendPreferences_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetPerFriendPreferences_Request.class, request.toBuilder()); } @Override public JobID SetPerFriendPreferences(CPlayer_SetPerFriendPreferences_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_SetPerFriendPreferences_Request.class, request.toBuilder()); } @Override public JobID AddFriend(CPlayer_AddFriend_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_AddFriend_Request.class, request.toBuilder()); } @Override public JobID RemoveFriend(CPlayer_RemoveFriend_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_RemoveFriend_Request.class, request.toBuilder()); } @Override public JobID IgnoreFriend(CPlayer_IgnoreFriend_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_IgnoreFriend_Request.class, request.toBuilder()); } @Override public JobID GetCommunityPreferences(CPlayer_GetCommunityPreferences_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetCommunityPreferences_Request.class, request.toBuilder()); } @Override public JobID SetCommunityPreferences(CPlayer_SetCommunityPreferences_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_SetCommunityPreferences_Request.class, request.toBuilder()); } @Override public JobID GetTextFilterWords(CPlayer_GetTextFilterWords_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetTextFilterWords_Request.class, request.toBuilder()); } @Override public JobID GetNewSteamAnnouncementState(CPlayer_GetNewSteamAnnouncementState_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetNewSteamAnnouncementState_Request.class, request.toBuilder()); } @Override public JobID UpdateSteamAnnouncementLastRead(CPlayer_UpdateSteamAnnouncementLastRead_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_UpdateSteamAnnouncementLastRead_Request.class, request.toBuilder()); } @Override public JobID GetPrivacySettings(CPlayer_GetPrivacySettings_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetPrivacySettings_Request.class, request.toBuilder()); } @Override public JobID GetDurationControl(CPlayer_GetDurationControl_Request request) { - // TODO implement - return null; + return sendMessage(CPlayer_GetDurationControl_Request.class, request.toBuilder()); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/PlayerClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/PlayerClient.java new file mode 100644 index 00000000..9a8e4b9d --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/PlayerClient.java @@ -0,0 +1,56 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesPlayerSteamclient; +import in.dragonbra.javasteam.rpc.IPlayerClient; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; + +// TODO implement + +@SuppressWarnings("unused") +public class PlayerClient extends UnifiedService implements IPlayerClient { + + public PlayerClient(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public void NotifyLastPlayedTimes(SteammessagesPlayerSteamclient.CPlayer_LastPlayedTimes_Notification request) { + + } + + @Override + public void NotifyFriendNicknameChanged(SteammessagesPlayerSteamclient.CPlayer_FriendNicknameChanged_Notification request) { + + } + + @Override + public void NotifyFriendEquippedProfileItemsChanged(SteammessagesPlayerSteamclient.CPlayer_FriendEquippedProfileItemsChanged_Notification request) { + + } + + @Override + public void NotifyNewSteamAnnouncementState(SteammessagesPlayerSteamclient.CPlayer_NewSteamAnnouncementState_Notification request) { + + } + + @Override + public void NotifyCommunityPreferencesChanged(SteammessagesPlayerSteamclient.CPlayer_CommunityPreferencesChanged_Notification request) { + + } + + @Override + public void NotifyTextFilterWordsChanged(SteammessagesPlayerSteamclient.CPlayer_TextFilterWordsChanged_Notification request) { + + } + + @Override + public void NotifyPerFriendPreferencesChanged(SteammessagesPlayerSteamclient.CPlayer_PerFriendPreferencesChanged_Notification request) { + + } + + @Override + public void NotifyPrivacyPrivacySettingsChanged(SteammessagesPlayerSteamclient.CPlayer_PrivacySettingsChanged_Notification request) { + + } +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClient.java new file mode 100644 index 00000000..5fb17a7a --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClient.java @@ -0,0 +1,82 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesRemoteclientServiceMessages; +import in.dragonbra.javasteam.rpc.IRemoteClient; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; +import in.dragonbra.javasteam.types.JobID; + +// TODO implement + +@SuppressWarnings("unused") +public class RemoteClient extends UnifiedService implements IRemoteClient { + + public RemoteClient(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public JobID GetPairingInfo(SteammessagesRemoteclientServiceMessages.CRemoteClient_GetPairingInfo_Request request) { + return null; + } + + @Override + public void NotifyOnline(SteammessagesRemoteclientServiceMessages.CRemoteClient_Online_Notification request) { + + } + + @Override + public void NotifyReplyPacket(SteammessagesRemoteclientServiceMessages.CRemoteClient_ReplyPacket_Notification request) { + + } + + @Override + public JobID AllocateTURNServer(SteammessagesRemoteclientServiceMessages.CRemoteClient_AllocateTURNServer_Request request) { + return null; + } + + @Override + public JobID AllocateRelayServer(SteammessagesRemoteclientServiceMessages.CRemoteClient_AllocateRelayServer_Request request) { + return null; + } + + @Override + public JobID AllocateSDR(SteammessagesRemoteclientServiceMessages.CRemoteClient_AllocateSDR_Request request) { + return null; + } + + @Override + public void SendSteamBroadcastPacket(SteammessagesRemoteclientServiceMessages.CRemoteClient_SteamBroadcast_Notification request) { + + } + + @Override + public void SendSteamToSteamPacket(SteammessagesRemoteclientServiceMessages.CRemoteClient_SteamToSteam_Notification request) { + + } + + @Override + public JobID SendRemotePlaySessionStarted(SteammessagesRemoteclientServiceMessages.CRemotePlay_SessionStarted_Request request) { + return null; + } + + @Override + public void SendRemotePlaySessionStopped(SteammessagesRemoteclientServiceMessages.CRemotePlay_SessionStopped_Notification request) { + + } + + @Override + public void SendRemotePlayTogetherPacket(SteammessagesRemoteclientServiceMessages.CRemotePlayTogether_Notification request) { + + } + + @Override + public JobID CreateRemotePlayTogetherInvitation(SteammessagesRemoteclientServiceMessages.CRemoteClient_CreateRemotePlayTogetherInvitation_Request request) { + return null; + } + + @Override + public JobID DeleteRemotePlayTogetherInvitation(SteammessagesRemoteclientServiceMessages.CRemoteClient_DeleteRemotePlayTogetherInvitation_Request request) { + return null; + } +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClientSteamClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClientSteamClient.java new file mode 100644 index 00000000..1bf4145e --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClientSteamClient.java @@ -0,0 +1,46 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesRemoteclientServiceMessages.*; +import in.dragonbra.javasteam.rpc.IRemoteClientSteamClient; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; + +// TODO implement + +@SuppressWarnings("unused") +public class RemoteClientSteamClient extends UnifiedService implements IRemoteClientSteamClient { + + public RemoteClientSteamClient(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public void NotifyRegisterStatusUpdate(CRemoteClient_RegisterStatusUpdate_Notification request) { + sendNotification(CRemoteClient_RegisterStatusUpdate_Notification.class, request.toBuilder()); + } + + @Override + public void NotifyUnregisterStatusUpdate(CRemoteClient_UnregisterStatusUpdate_Notification request) { + sendNotification(CRemoteClient_UnregisterStatusUpdate_Notification.class, request.toBuilder()); + } + + @Override + public void NotifyRemotePacket(CRemoteClient_RemotePacket_Notification request) { + sendNotification(CRemoteClient_RemotePacket_Notification.class, request.toBuilder()); + } + + @Override + public void NotifySteamBroadcastPacket(CRemoteClient_SteamBroadcast_Notification request) { + sendNotification(CRemoteClient_SteamBroadcast_Notification.class, request.toBuilder()); + } + + @Override + public void NotifySteamToSteamPacket(CRemoteClient_SteamToSteam_Notification request) { + sendNotification(CRemoteClient_SteamToSteam_Notification.class, request.toBuilder()); + } + + @Override + public void NotifyRemotePlayTogetherPacket(CRemotePlayTogether_Notification request) { + sendNotification(CRemotePlayTogether_Notification.class, request.toBuilder()); + } +} From 394e478b4d156bb6045e930054ce0bc8517c38bc Mon Sep 17 00:00:00 2001 From: LossyDragon Date: Thu, 5 Jan 2023 11:32:54 -0600 Subject: [PATCH 14/22] Cleanup some methods --- .../javasteam/base/ClientMsgProtobuf.java | 2 ++ .../SteamUnifiedMessages.java | 23 ------------------- .../steamunifiedmessages/UnifiedService.java | 8 +++---- .../callback/ServiceMethodNotification.java | 5 ++-- 4 files changed, 8 insertions(+), 30 deletions(-) diff --git a/src/main/java/in/dragonbra/javasteam/base/ClientMsgProtobuf.java b/src/main/java/in/dragonbra/javasteam/base/ClientMsgProtobuf.java index f24b83c0..2c80b663 100644 --- a/src/main/java/in/dragonbra/javasteam/base/ClientMsgProtobuf.java +++ b/src/main/java/in/dragonbra/javasteam/base/ClientMsgProtobuf.java @@ -74,6 +74,7 @@ public ClientMsgProtobuf(Class clazz, EMsg eMsg) { * @param eMsg The network message type this client message represents. * @param payloadReserve The number of bytes to initialize the payload capacity to. */ + @SuppressWarnings("unchecked") public ClientMsgProtobuf(Class clazz, EMsg eMsg, int payloadReserve) { super(payloadReserve); this.clazz = clazz; @@ -145,6 +146,7 @@ public byte[] serialize() { return baos.toByteArray(); } + @SuppressWarnings("unchecked") @Override public void deserialize(byte[] data) { if (data == null) { diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java index 458bf494..16bd8f40 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java @@ -103,29 +103,6 @@ public > void sendNotifica client.send(msg); } - /** - * Sends a message. - * Results are returned in a {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse} - * - * @param clazz The type of the body, for type erasure - * @param rpcName Name of the RPC endpoint. Takes the format ServiceName.RpcName - * @param message The message to send. - * @param isNotification Whether this message is a notification or not - * @param The type of protobuf object. - * @return The JobID of the request. This can be used to find the appropriate {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. - * @deprecated Use SendNotification() instead of passing 'true' bool in SendMessage. SendMessage incorrectly returned JobID for notifications, they have no response by design. - */ - @Deprecated - public > JobID sendMessage(Class clazz, String rpcName, TRequest message, Boolean isNotification) { - if (!isNotification) { - return sendMessage(clazz, rpcName, message); - } - - sendNotification(clazz, rpcName, message); - - return JobID.INVALID; - } - private void handleServiceMethodResponse(IPacketMsg packetMsg) { if (!(packetMsg instanceof PacketClientMsgProtobuf)) { throw new IllegalArgumentException("Packet message is expected to be protobuf."); diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java index 5e9081f6..27101a68 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java @@ -15,6 +15,10 @@ public abstract class UnifiedService { private final SteamUnifiedMessages steamUnifiedMessages; + public UnifiedService(SteamUnifiedMessages steamUnifiedMessages) { + this.steamUnifiedMessages = steamUnifiedMessages; + } + public String getClassName() { return this.getClass().getSimpleName(); } @@ -37,10 +41,6 @@ public static String getMethodName() { return Thread.currentThread().getStackTrace()[3].getMethodName(); } - public UnifiedService(SteamUnifiedMessages steamUnifiedMessages) { - this.steamUnifiedMessages = steamUnifiedMessages; - } - /** * Sends a message. *

diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodNotification.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodNotification.java index 1f0c8724..f20b3c03 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodNotification.java +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/callback/ServiceMethodNotification.java @@ -1,7 +1,6 @@ package in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback; import com.google.protobuf.AbstractMessage; -import com.google.protobuf.GeneratedMessageV3; import in.dragonbra.javasteam.base.ClientMsgProtobuf; import in.dragonbra.javasteam.base.IPacketMsg; import in.dragonbra.javasteam.steam.steamclient.callbackmgr.CallbackMsg; @@ -19,9 +18,9 @@ public class ServiceMethodNotification extends CallbackMsg { private final Object body; - public > ServiceMethodNotification(Class messageType, IPacketMsg packetMsg) { + public ServiceMethodNotification(Class messageType, IPacketMsg packetMsg) { // Bounce into generic-land. - ClientMsgProtobuf clientMsg = new ClientMsgProtobuf<>(messageType, packetMsg); + ClientMsgProtobuf clientMsg = new ClientMsgProtobuf<>(messageType, packetMsg); // Note: JobID will be -1 From 7bb9d411bcaa98fa480f83df0366ac6b6d750b4b Mon Sep 17 00:00:00 2001 From: LossyDragon Date: Thu, 5 Jan 2023 11:37:27 -0600 Subject: [PATCH 15/22] Manually finish adapter classes --- .../in/dragonbra/javasteam/rpc/IChat.java | 1 + .../in/dragonbra/javasteam/rpc/IChatRoom.java | 1 + .../javasteam/rpc/IChatRoomClient.java | 1 + .../javasteam/rpc/IChatUsability.java | 1 + .../javasteam/rpc/IChatUsabilityClient.java | 1 + .../javasteam/rpc/IClanChatRooms.java | 1 + .../rpc/IContentServerDirectory.java | 5 + .../javasteam/rpc/IFriendMessages.java | 4 +- .../javasteam/rpc/IFriendMessagesClient.java | 1 + .../in/dragonbra/javasteam/rpc/IParental.java | 1 + .../javasteam/rpc/IParentalClient.java | 1 + .../in/dragonbra/javasteam/rpc/IPlayer.java | 1 + .../javasteam/rpc/IPlayerClient.java | 1 + .../javasteam/rpc/IRemoteClient.java | 2 +- .../rpc/IRemoteClientSteamClient.java | 1 + .../dragonbra/javasteam/rpc/service/Chat.java | 5 + .../javasteam/rpc/service/ChatRoom.java | 219 +++++++++--------- .../javasteam/rpc/service/ChatRoomClient.java | 6 +- .../javasteam/rpc/service/ChatUsability.java | 12 +- .../rpc/service/ChatUsabilityClient.java | 12 +- .../javasteam/rpc/service/ClanChatRooms.java | 16 +- .../rpc/service/ContentServerDirectory.java | 24 +- .../javasteam/rpc/service/FriendMessages.java | 32 +-- .../rpc/service/FriendMessagesClient.java | 20 +- .../javasteam/rpc/service/Parental.java | 48 ++-- .../javasteam/rpc/service/ParentalClient.java | 20 +- .../javasteam/rpc/service/PlayerClient.java | 40 ++-- .../javasteam/rpc/service/RemoteClient.java | 58 ++--- .../rpc/service/RemoteClientSteamClient.java | 6 +- 29 files changed, 297 insertions(+), 244 deletions(-) diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IChat.java b/src/main/java/in/dragonbra/javasteam/rpc/IChat.java index 29035500..40e9a940 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IChat.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IChat.java @@ -7,6 +7,7 @@ * @author Lossy * @since 2023-01-04 */ +@SuppressWarnings("unused") public interface IChat { /* CChat_RequestFriendPersonaStates_Response */ diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IChatRoom.java b/src/main/java/in/dragonbra/javasteam/rpc/IChatRoom.java index 9490bca1..cd4536a8 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IChatRoom.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IChatRoom.java @@ -7,6 +7,7 @@ * @author Lossy * @since 2023-01-04 */ +@SuppressWarnings("unused") public interface IChatRoom { /* CChatRoom_CreateChatRoomGroup_Response */ diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IChatRoomClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IChatRoomClient.java index 140b23dd..a6bd8a4b 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IChatRoomClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IChatRoomClient.java @@ -6,6 +6,7 @@ * @author Lossy * @since 2023-01-04 */ +@SuppressWarnings("unused") public interface IChatRoomClient { /* NoResponse */ diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IChatUsability.java b/src/main/java/in/dragonbra/javasteam/rpc/IChatUsability.java index eef26221..3edecd4c 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IChatUsability.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IChatUsability.java @@ -6,6 +6,7 @@ * @author Lossy * @since 2023-01-04 */ +@SuppressWarnings("unused") public interface IChatUsability { /* NoResponse */ diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IChatUsabilityClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IChatUsabilityClient.java index 3e6b1fb8..1a5f24f3 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IChatUsabilityClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IChatUsabilityClient.java @@ -6,6 +6,7 @@ * @author Lossy * @since 2023-01-04 */ +@SuppressWarnings("unused") public interface IChatUsabilityClient { /* NoResponse */ diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IClanChatRooms.java b/src/main/java/in/dragonbra/javasteam/rpc/IClanChatRooms.java index cbbcb952..0794ee0e 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IClanChatRooms.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IClanChatRooms.java @@ -7,6 +7,7 @@ * @author Lossy * @since 2023-01-04 */ +@SuppressWarnings("unused") public interface IClanChatRooms { /* CClanChatRooms_GetClanChatRoomInfo_Response */ diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IContentServerDirectory.java b/src/main/java/in/dragonbra/javasteam/rpc/IContentServerDirectory.java index 08fba1e0..185c3c08 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IContentServerDirectory.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IContentServerDirectory.java @@ -3,6 +3,11 @@ import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesContentsystemSteamclient.*; import in.dragonbra.javasteam.types.JobID; +/** + * @author Lossy + * @since 2023-01-04 + */ +@SuppressWarnings("unused") public interface IContentServerDirectory { /* CContentServerDirectory_GetServersForSteamPipe_Response */ diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessages.java b/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessages.java index 50bf8809..620d7557 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessages.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessages.java @@ -7,12 +7,14 @@ * @author Lossy * @since 2023-01-04 */ +@SuppressWarnings("unused") public interface IFriendMessages { /* CFriendMessages_GetRecentMessages_Response */ JobID GetRecentMessages(CFriendMessages_GetRecentMessages_Request request); - CFriendsMessages_GetActiveMessageSessions_Response GetActiveMessageSessions(CFriendsMessages_GetActiveMessageSessions_Request request); + /* CFriendsMessages_GetActiveMessageSessions_Response */ + JobID GetActiveMessageSessions(CFriendsMessages_GetActiveMessageSessions_Request request); /* CFriendMessages_SendMessage_Response */ JobID SendMessage(CFriendMessages_SendMessage_Request request); diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessagesClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessagesClient.java index e0b0d78f..ed73d177 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessagesClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IFriendMessagesClient.java @@ -8,6 +8,7 @@ * @author Lossy * @since 2023-01-04 */ +@SuppressWarnings("unused") public interface IFriendMessagesClient { /* NoResponse */ diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IParental.java b/src/main/java/in/dragonbra/javasteam/rpc/IParental.java index 8aa7949a..fed38ddf 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IParental.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IParental.java @@ -7,6 +7,7 @@ * @author Lossy * @since 2023-01-04 */ +@SuppressWarnings("unused") public interface IParental { /* CParental_EnableParentalSettings_Response */ diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IParentalClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IParentalClient.java index 52f8e4b7..7532a711 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IParentalClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IParentalClient.java @@ -8,6 +8,7 @@ * @author Lossy * @since 2023-01-04 */ +@SuppressWarnings("unused") public interface IParentalClient { /* NoResponse */ diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IPlayer.java b/src/main/java/in/dragonbra/javasteam/rpc/IPlayer.java index 2987fd2b..a6fc49e5 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IPlayer.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IPlayer.java @@ -7,6 +7,7 @@ * @author Lossy * @since 2023-01-04 */ +@SuppressWarnings("unused") public interface IPlayer { /* CPlayer_GetMutualFriendsForIncomingInvites_Response */ JobID GetMutualFriendsForIncomingInvites(CPlayer_GetMutualFriendsForIncomingInvites_Request request); diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IPlayerClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IPlayerClient.java index 90a08e80..ae462afd 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IPlayerClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IPlayerClient.java @@ -6,6 +6,7 @@ * @author Lossy * @since 2023-01-04 */ +@SuppressWarnings("unused") public interface IPlayerClient { /* NoResponse */ diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClient.java index 10ee7a11..09729ebc 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClient.java @@ -1,13 +1,13 @@ package in.dragonbra.javasteam.rpc; import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesRemoteclientServiceMessages.*; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesUnifiedBaseSteamclient.*; import in.dragonbra.javasteam.types.JobID; /** * @author Lossy * @since 2023-01-04 */ +@SuppressWarnings("unused") public interface IRemoteClient { /* CRemoteClient_GetPairingInfo_Response */ diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClientSteamClient.java b/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClientSteamClient.java index 3a2bebdc..412f32e1 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClientSteamClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/IRemoteClientSteamClient.java @@ -6,6 +6,7 @@ * @author Lossy * @since 2023-01-04 */ +@SuppressWarnings("unused") public interface IRemoteClientSteamClient { /* NoResponse */ diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/Chat.java b/src/main/java/in/dragonbra/javasteam/rpc/service/Chat.java index 06a476cf..d156ab05 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/Chat.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/Chat.java @@ -6,6 +6,11 @@ import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; import in.dragonbra.javasteam.types.JobID; +/** + * @author Lossy + * @since 2023-01-04 + */ +@SuppressWarnings("unused") public class Chat extends UnifiedService implements IChat { public Chat(SteamUnifiedMessages steamUnifiedMessages) { diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoom.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoom.java index d0268e70..69e67340 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoom.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoom.java @@ -1,12 +1,15 @@ package in.dragonbra.javasteam.rpc.service; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.*; import in.dragonbra.javasteam.rpc.IChatRoom; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; import in.dragonbra.javasteam.types.JobID; -// TODO implement +/** + * @author Lossy + * @since 2023-01-04 + */ @SuppressWarnings("unused") public class ChatRoom extends UnifiedService implements IChatRoom { @@ -15,267 +18,267 @@ public ChatRoom(SteamUnifiedMessages steamUnifiedMessages) { } @Override - public JobID CreateChatRoomGroup(SteammessagesChatSteamclient.CChatRoom_CreateChatRoomGroup_Request request) { - return null; + public JobID CreateChatRoomGroup(CChatRoom_CreateChatRoomGroup_Request request) { + return sendMessage(CChatRoom_CreateChatRoomGroup_Request.class, request.toBuilder()); } @Override - public JobID SaveChatRoomGroup(SteammessagesChatSteamclient.CChatRoom_SaveChatRoomGroup_Request request) { - return null; + public JobID SaveChatRoomGroup(CChatRoom_SaveChatRoomGroup_Request request) { + return sendMessage(CChatRoom_SaveChatRoomGroup_Request.class, request.toBuilder()); } @Override - public JobID RenameChatRoomGroup(SteammessagesChatSteamclient.CChatRoom_RenameChatRoomGroup_Request request) { - return null; + public JobID RenameChatRoomGroup(CChatRoom_RenameChatRoomGroup_Request request) { + return sendMessage(CChatRoom_RenameChatRoomGroup_Request.class, request.toBuilder()); } @Override - public JobID SetChatRoomGroupTagline(SteammessagesChatSteamclient.CChatRoom_SetChatRoomGroupTagline_Request request) { - return null; + public JobID SetChatRoomGroupTagline(CChatRoom_SetChatRoomGroupTagline_Request request) { + return sendMessage(CChatRoom_SetChatRoomGroupTagline_Request.class, request.toBuilder()); } @Override - public JobID SetChatRoomGroupAvatar(SteammessagesChatSteamclient.CChatRoom_SetChatRoomGroupAvatar_Request request) { - return null; + public JobID SetChatRoomGroupAvatar(CChatRoom_SetChatRoomGroupAvatar_Request request) { + return sendMessage(CChatRoom_SetChatRoomGroupAvatar_Request.class, request.toBuilder()); } @Override - public JobID SetChatRoomGroupWatchingBroadcast(SteammessagesChatSteamclient.CChatRoom_SetChatRoomGroupWatchingBroadcast_Request request) { - return null; + public JobID SetChatRoomGroupWatchingBroadcast(CChatRoom_SetChatRoomGroupWatchingBroadcast_Request request) { + return sendMessage(CChatRoom_SetChatRoomGroupWatchingBroadcast_Request.class, request.toBuilder()); } @Override - public JobID JoinMiniGameForChatRoomGroup(SteammessagesChatSteamclient.CChatRoom_JoinMiniGameForChatRoomGroup_Request request) { - return null; + public JobID JoinMiniGameForChatRoomGroup(CChatRoom_JoinMiniGameForChatRoomGroup_Request request) { + return sendMessage(CChatRoom_JoinMiniGameForChatRoomGroup_Request.class, request.toBuilder()); } @Override - public JobID EndMiniGameForChatRoomGroup(SteammessagesChatSteamclient.CChatRoom_EndMiniGameForChatRoomGroup_Request request) { - return null; + public JobID EndMiniGameForChatRoomGroup(CChatRoom_EndMiniGameForChatRoomGroup_Request request) { + return sendMessage(CChatRoom_EndMiniGameForChatRoomGroup_Request.class, request.toBuilder()); } @Override - public JobID MuteUserInGroup(SteammessagesChatSteamclient.CChatRoom_MuteUser_Request request) { - return null; + public JobID MuteUserInGroup(CChatRoom_MuteUser_Request request) { + return sendMessage(CChatRoom_MuteUser_Request.class, request.toBuilder()); } @Override - public JobID KickUserFromGroup(SteammessagesChatSteamclient.CChatRoom_KickUser_Request request) { - return null; + public JobID KickUserFromGroup(CChatRoom_KickUser_Request request) { + return sendMessage(CChatRoom_KickUser_Request.class, request.toBuilder()); } @Override - public JobID SetUserBanState(SteammessagesChatSteamclient.CChatRoom_SetUserBanState_Request request) { - return null; + public JobID SetUserBanState(CChatRoom_SetUserBanState_Request request) { + return sendMessage(CChatRoom_SetUserBanState_Request.class, request.toBuilder()); } @Override - public JobID RevokeInviteToGroup(SteammessagesChatSteamclient.CChatRoom_RevokeInvite_Request request) { - return null; + public JobID RevokeInviteToGroup(CChatRoom_RevokeInvite_Request request) { + return sendMessage(CChatRoom_RevokeInvite_Request.class, request.toBuilder()); } @Override - public JobID CreateRole(SteammessagesChatSteamclient.CChatRoom_CreateRole_Request request) { - return null; + public JobID CreateRole(CChatRoom_CreateRole_Request request) { + return sendMessage(CChatRoom_CreateRole_Request.class, request.toBuilder()); } @Override - public JobID GetRoles(SteammessagesChatSteamclient.CChatRoom_GetRoles_Request request) { - return null; + public JobID GetRoles(CChatRoom_GetRoles_Request request) { + return sendMessage(CChatRoom_GetRoles_Request.class, request.toBuilder()); } @Override - public JobID RenameRole(SteammessagesChatSteamclient.CChatRoom_RenameRole_Request request) { - return null; + public JobID RenameRole(CChatRoom_RenameRole_Request request) { + return sendMessage(CChatRoom_RenameRole_Request.class, request.toBuilder()); } @Override - public JobID ReorderRole(SteammessagesChatSteamclient.CChatRoom_ReorderRole_Request request) { - return null; + public JobID ReorderRole(CChatRoom_ReorderRole_Request request) { + return sendMessage(CChatRoom_ReorderRole_Request.class, request.toBuilder()); } @Override - public JobID DeleteRole(SteammessagesChatSteamclient.CChatRoom_DeleteRole_Request request) { - return null; + public JobID DeleteRole(CChatRoom_DeleteRole_Request request) { + return sendMessage(CChatRoom_DeleteRole_Request.class, request.toBuilder()); } @Override - public JobID GetRoleActions(SteammessagesChatSteamclient.CChatRoom_GetRoleActions_Request request) { - return null; + public JobID GetRoleActions(CChatRoom_GetRoleActions_Request request) { + return sendMessage(CChatRoom_GetRoleActions_Request.class, request.toBuilder()); } @Override - public JobID ReplaceRoleActions(SteammessagesChatSteamclient.CChatRoom_ReplaceRoleActions_Request request) { - return null; + public JobID ReplaceRoleActions(CChatRoom_ReplaceRoleActions_Request request) { + return sendMessage(CChatRoom_ReplaceRoleActions_Request.class, request.toBuilder()); } @Override - public JobID AddRoleToUser(SteammessagesChatSteamclient.CChatRoom_AddRoleToUser_Request request) { - return null; + public JobID AddRoleToUser(CChatRoom_AddRoleToUser_Request request) { + return sendMessage(CChatRoom_AddRoleToUser_Request.class, request.toBuilder()); } @Override - public JobID GetRolesForUser(SteammessagesChatSteamclient.CChatRoom_GetRolesForUser_Request request) { - return null; + public JobID GetRolesForUser(CChatRoom_GetRolesForUser_Request request) { + return sendMessage(CChatRoom_GetRolesForUser_Request.class, request.toBuilder()); } @Override - public JobID DeleteRoleFromUser(SteammessagesChatSteamclient.CChatRoom_DeleteRoleFromUser_Request request) { - return null; + public JobID DeleteRoleFromUser(CChatRoom_DeleteRoleFromUser_Request request) { + return sendMessage(CChatRoom_DeleteRoleFromUser_Request.class, request.toBuilder()); } @Override - public JobID JoinChatRoomGroup(SteammessagesChatSteamclient.CChatRoom_JoinChatRoomGroup_Request request) { - return null; + public JobID JoinChatRoomGroup(CChatRoom_JoinChatRoomGroup_Request request) { + return sendMessage(CChatRoom_JoinChatRoomGroup_Request.class, request.toBuilder()); } @Override - public JobID InviteFriendToChatRoomGroup(SteammessagesChatSteamclient.CChatRoom_InviteFriendToChatRoomGroup_Request request) { - return null; + public JobID InviteFriendToChatRoomGroup(CChatRoom_InviteFriendToChatRoomGroup_Request request) { + return sendMessage(CChatRoom_InviteFriendToChatRoomGroup_Request.class, request.toBuilder()); } @Override - public JobID LeaveChatRoomGroup(SteammessagesChatSteamclient.CChatRoom_LeaveChatRoomGroup_Request request) { - return null; + public JobID LeaveChatRoomGroup(CChatRoom_LeaveChatRoomGroup_Request request) { + return sendMessage(CChatRoom_LeaveChatRoomGroup_Request.class, request.toBuilder()); } @Override - public JobID CreateChatRoom(SteammessagesChatSteamclient.CChatRoom_CreateChatRoom_Request request) { - return null; + public JobID CreateChatRoom(CChatRoom_CreateChatRoom_Request request) { + return sendMessage(CChatRoom_CreateChatRoom_Request.class, request.toBuilder()); } @Override - public JobID DeleteChatRoom(SteammessagesChatSteamclient.CChatRoom_DeleteChatRoom_Request request) { - return null; + public JobID DeleteChatRoom(CChatRoom_DeleteChatRoom_Request request) { + return sendMessage(CChatRoom_DeleteChatRoom_Request.class, request.toBuilder()); } @Override - public JobID RenameChatRoom(SteammessagesChatSteamclient.CChatRoom_RenameChatRoom_Request request) { - return null; + public JobID RenameChatRoom(CChatRoom_RenameChatRoom_Request request) { + return sendMessage(CChatRoom_RenameChatRoom_Request.class, request.toBuilder()); } @Override - public JobID ReorderChatRoom(SteammessagesChatSteamclient.CChatRoom_ReorderChatRoom_Request request) { - return null; + public JobID ReorderChatRoom(CChatRoom_ReorderChatRoom_Request request) { + return sendMessage(CChatRoom_ReorderChatRoom_Request.class, request.toBuilder()); } @Override - public JobID SendChatMessage(SteammessagesChatSteamclient.CChatRoom_SendChatMessage_Request request) { - return null; + public JobID SendChatMessage(CChatRoom_SendChatMessage_Request request) { + return sendMessage(CChatRoom_SendChatMessage_Request.class, request.toBuilder()); } @Override - public JobID JoinVoiceChat(SteammessagesChatSteamclient.CChatRoom_JoinVoiceChat_Request request) { - return null; + public JobID JoinVoiceChat(CChatRoom_JoinVoiceChat_Request request) { + return sendMessage(CChatRoom_JoinVoiceChat_Request.class, request.toBuilder()); } @Override - public JobID LeaveVoiceChat(SteammessagesChatSteamclient.CChatRoom_LeaveVoiceChat_Request request) { - return null; + public JobID LeaveVoiceChat(CChatRoom_LeaveVoiceChat_Request request) { + return sendMessage(CChatRoom_LeaveVoiceChat_Request.class, request.toBuilder()); } @Override - public JobID GetMessageHistory(SteammessagesChatSteamclient.CChatRoom_GetMessageHistory_Request request) { - return null; + public JobID GetMessageHistory(CChatRoom_GetMessageHistory_Request request) { + return sendMessage(CChatRoom_GetMessageHistory_Request.class, request.toBuilder()); } @Override - public JobID GetMyChatRoomGroups(SteammessagesChatSteamclient.CChatRoom_GetMyChatRoomGroups_Request request) { - return null; + public JobID GetMyChatRoomGroups(CChatRoom_GetMyChatRoomGroups_Request request) { + return sendMessage(CChatRoom_GetMyChatRoomGroups_Request.class, request.toBuilder()); } @Override - public JobID GetChatRoomGroupState(SteammessagesChatSteamclient.CChatRoom_GetChatRoomGroupState_Request request) { - return null; + public JobID GetChatRoomGroupState(CChatRoom_GetChatRoomGroupState_Request request) { + return sendMessage(CChatRoom_GetChatRoomGroupState_Request.class, request.toBuilder()); } @Override - public JobID GetChatRoomGroupSummary(SteammessagesChatSteamclient.CChatRoom_GetChatRoomGroupSummary_Request request) { - return null; + public JobID GetChatRoomGroupSummary(CChatRoom_GetChatRoomGroupSummary_Request request) { + return sendMessage(CChatRoom_GetChatRoomGroupSummary_Request.class, request.toBuilder()); } @Override - public JobID SetAppChatRoomGroupForceActive(SteammessagesChatSteamclient.CChatRoom_SetAppChatRoomGroupForceActive_Request request) { - return null; + public JobID SetAppChatRoomGroupForceActive(CChatRoom_SetAppChatRoomGroupForceActive_Request request) { + return sendMessage(CChatRoom_SetAppChatRoomGroupForceActive_Request.class, request.toBuilder()); } @Override - public void SetAppChatRoomGroupStopForceActive(SteammessagesChatSteamclient.CChatRoom_SetAppChatRoomGroupStopForceActive_Notification request) { - + public void SetAppChatRoomGroupStopForceActive(CChatRoom_SetAppChatRoomGroupStopForceActive_Notification request) { + sendNotification(CChatRoom_SetAppChatRoomGroupStopForceActive_Notification.class, request.toBuilder()); } @Override - public void AckChatMessage(SteammessagesChatSteamclient.CChatRoom_AckChatMessage_Notification request) { - + public void AckChatMessage(CChatRoom_AckChatMessage_Notification request) { + sendNotification(CChatRoom_AckChatMessage_Notification.class, request.toBuilder()); } @Override - public JobID CreateInviteLink(SteammessagesChatSteamclient.CChatRoom_CreateInviteLink_Request request) { - return null; + public JobID CreateInviteLink(CChatRoom_CreateInviteLink_Request request) { + return sendMessage(CChatRoom_CreateInviteLink_Request.class, request.toBuilder()); } @Override - public JobID GetInviteLinkInfo(SteammessagesChatSteamclient.CChatRoom_GetInviteLinkInfo_Request request) { - return null; + public JobID GetInviteLinkInfo(CChatRoom_GetInviteLinkInfo_Request request) { + return sendMessage(CChatRoom_GetInviteLinkInfo_Request.class, request.toBuilder()); } @Override - public JobID GetInviteInfo(SteammessagesChatSteamclient.CChatRoom_GetInviteInfo_Request request) { - return null; + public JobID GetInviteInfo(CChatRoom_GetInviteInfo_Request request) { + return sendMessage(CChatRoom_GetInviteInfo_Request.class, request.toBuilder()); } @Override - public JobID GetInviteLinksForGroup(SteammessagesChatSteamclient.CChatRoom_GetInviteLinksForGroup_Request request) { - return null; + public JobID GetInviteLinksForGroup(CChatRoom_GetInviteLinksForGroup_Request request) { + return sendMessage(CChatRoom_GetInviteLinksForGroup_Request.class, request.toBuilder()); } @Override - public JobID GetBanList(SteammessagesChatSteamclient.CChatRoom_GetBanList_Request request) { - return null; + public JobID GetBanList(CChatRoom_GetBanList_Request request) { + return sendMessage(CChatRoom_GetBanList_Request.class, request.toBuilder()); } @Override - public JobID GetInviteList(SteammessagesChatSteamclient.CChatRoom_GetInviteList_Request request) { - return null; + public JobID GetInviteList(CChatRoom_GetInviteList_Request request) { + return sendMessage(CChatRoom_GetInviteList_Request.class, request.toBuilder()); } @Override - public JobID DeleteInviteLink(SteammessagesChatSteamclient.CChatRoom_DeleteInviteLink_Request request) { - return null; + public JobID DeleteInviteLink(CChatRoom_DeleteInviteLink_Request request) { + return sendMessage(CChatRoom_DeleteInviteLink_Request.class, request.toBuilder()); } @Override - public JobID SetSessionActiveChatRoomGroups(SteammessagesChatSteamclient.CChatRoom_SetSessionActiveChatRoomGroups_Request request) { - return null; + public JobID SetSessionActiveChatRoomGroups(CChatRoom_SetSessionActiveChatRoomGroups_Request request) { + return sendMessage(CChatRoom_SetSessionActiveChatRoomGroups_Request.class, request.toBuilder()); } @Override - public JobID SetUserChatGroupPreferences(SteammessagesChatSteamclient.CChatRoom_SetUserChatGroupPreferences_Request request) { - return null; + public JobID SetUserChatGroupPreferences(CChatRoom_SetUserChatGroupPreferences_Request request) { + return sendMessage(CChatRoom_SetUserChatGroupPreferences_Request.class, request.toBuilder()); } @Override - public JobID DeleteChatMessages(SteammessagesChatSteamclient.CChatRoom_DeleteChatMessages_Request request) { - return null; + public JobID DeleteChatMessages(CChatRoom_DeleteChatMessages_Request request) { + return sendMessage(CChatRoom_DeleteChatMessages_Request.class, request.toBuilder()); } @Override - public void UpdateMemberListView(SteammessagesChatSteamclient.CChatRoom_UpdateMemberListView_Notification request) { - + public void UpdateMemberListView(CChatRoom_UpdateMemberListView_Notification request) { + sendNotification(CChatRoom_UpdateMemberListView_Notification.class, request.toBuilder()); } @Override - public JobID SearchMembers(SteammessagesChatSteamclient.CChatRoom_SearchMembers_Request request) { - return null; + public JobID SearchMembers(CChatRoom_SearchMembers_Request request) { + return sendMessage(CChatRoom_SearchMembers_Request.class, request.toBuilder()); } @Override - public JobID UpdateMessageReaction(SteammessagesChatSteamclient.CChatRoom_UpdateMessageReaction_Request request) { - return null; + public JobID UpdateMessageReaction(CChatRoom_UpdateMessageReaction_Request request) { + return sendMessage(CChatRoom_UpdateMessageReaction_Request.class, request.toBuilder()); } @Override - public JobID GetMessageReactionReactors(SteammessagesChatSteamclient.CChatRoom_GetMessageReactionReactors_Request request) { - return null; + public JobID GetMessageReactionReactors(CChatRoom_GetMessageReactionReactors_Request request) { + return sendMessage(CChatRoom_GetMessageReactionReactors_Request.class, request.toBuilder()); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoomClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoomClient.java index 51b609fc..6a51e78a 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoomClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoomClient.java @@ -5,8 +5,10 @@ import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; -// TODO implement - +/** + * @author Lossy + * @since 2023-01-04 + */ @SuppressWarnings("unused") public class ChatRoomClient extends UnifiedService implements IChatRoomClient { diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsability.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsability.java index b36d22a6..1deb02cd 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsability.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsability.java @@ -1,12 +1,14 @@ package in.dragonbra.javasteam.rpc.service; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.CChatUsability_ClientUsabilityMetrics_Notification; import in.dragonbra.javasteam.rpc.IChatUsability; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; -// TODO implement - +/** + * @author Lossy + * @since 2023-01-04 + */ @SuppressWarnings("unused") public class ChatUsability extends UnifiedService implements IChatUsability { @@ -15,7 +17,7 @@ public ChatUsability(SteamUnifiedMessages steamUnifiedMessages) { } @Override - public void NotifyClientUsabilityMetrics(SteammessagesChatSteamclient.CChatUsability_ClientUsabilityMetrics_Notification request) { - + public void NotifyClientUsabilityMetrics(CChatUsability_ClientUsabilityMetrics_Notification request) { + sendNotification(CChatUsability_ClientUsabilityMetrics_Notification.class, request.toBuilder()); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsabilityClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsabilityClient.java index 96db3211..82f6a76d 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsabilityClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsabilityClient.java @@ -1,12 +1,14 @@ package in.dragonbra.javasteam.rpc.service; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.CChatUsability_RequestClientUsabilityMetrics_Notification; import in.dragonbra.javasteam.rpc.IChatUsabilityClient; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; -// TODO implement - +/** + * @author Lossy + * @since 2023-01-04 + */ @SuppressWarnings("unused") public class ChatUsabilityClient extends UnifiedService implements IChatUsabilityClient { @@ -15,7 +17,7 @@ public ChatUsabilityClient(SteamUnifiedMessages steamUnifiedMessages) { } @Override - public void NotifyRequestClientUsabilityMetrics(SteammessagesChatSteamclient.CChatUsability_RequestClientUsabilityMetrics_Notification request) { - + public void NotifyRequestClientUsabilityMetrics(CChatUsability_RequestClientUsabilityMetrics_Notification request) { + sendNotification(CChatUsability_RequestClientUsabilityMetrics_Notification.class, request.toBuilder()); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ClanChatRooms.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ClanChatRooms.java index 763dc1b9..33cdcc97 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/ClanChatRooms.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ClanChatRooms.java @@ -1,13 +1,15 @@ package in.dragonbra.javasteam.rpc.service; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesChatSteamclient.*; import in.dragonbra.javasteam.rpc.IClanChatRooms; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; import in.dragonbra.javasteam.types.JobID; -// TODO implement - +/** + * @author Lossy + * @since 2023-01-04 + */ @SuppressWarnings("unused") public class ClanChatRooms extends UnifiedService implements IClanChatRooms { @@ -16,12 +18,12 @@ public ClanChatRooms(SteamUnifiedMessages steamUnifiedMessages) { } @Override - public JobID GetClanChatRoomInfo(SteammessagesChatSteamclient.CClanChatRooms_GetClanChatRoomInfo_Request request) { - return null; + public JobID GetClanChatRoomInfo(CClanChatRooms_GetClanChatRoomInfo_Request request) { + return sendMessage(CClanChatRooms_GetClanChatRoomInfo_Request.class, request.toBuilder()); } @Override - public JobID SetClanChatRoomPrivate(SteammessagesChatSteamclient.CClanChatRooms_SetClanChatRoomPrivate_Request request) { - return null; + public JobID SetClanChatRoomPrivate(CClanChatRooms_SetClanChatRoomPrivate_Request request) { + return sendMessage(CClanChatRooms_SetClanChatRoomPrivate_Request.class, request.toBuilder()); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ContentServerDirectory.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ContentServerDirectory.java index f47c7e19..a0b5b14e 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/ContentServerDirectory.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ContentServerDirectory.java @@ -1,13 +1,15 @@ package in.dragonbra.javasteam.rpc.service; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesContentsystemSteamclient; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesContentsystemSteamclient.*; import in.dragonbra.javasteam.rpc.IContentServerDirectory; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; import in.dragonbra.javasteam.types.JobID; -// TODO implement - +/** + * @author Lossy + * @since 2023-01-04 + */ @SuppressWarnings("unused") public class ContentServerDirectory extends UnifiedService implements IContentServerDirectory { @@ -16,22 +18,22 @@ public ContentServerDirectory(SteamUnifiedMessages steamUnifiedMessages) { } @Override - public JobID GetServersForSteamPipe(SteammessagesContentsystemSteamclient.CContentServerDirectory_GetServersForSteamPipe_Request request) { - return null; + public JobID GetServersForSteamPipe(CContentServerDirectory_GetServersForSteamPipe_Request request) { + return sendMessage(CContentServerDirectory_GetServersForSteamPipe_Request.class, request.toBuilder()); } @Override - public JobID GetDepotPatchInfo(SteammessagesContentsystemSteamclient.CContentServerDirectory_GetDepotPatchInfo_Request request) { - return null; + public JobID GetDepotPatchInfo(CContentServerDirectory_GetDepotPatchInfo_Request request) { + return sendMessage(CContentServerDirectory_GetDepotPatchInfo_Request.class, request.toBuilder()); } @Override - public JobID GetClientUpdateHosts(SteammessagesContentsystemSteamclient.CContentServerDirectory_GetClientUpdateHosts_Request request) { - return null; + public JobID GetClientUpdateHosts(CContentServerDirectory_GetClientUpdateHosts_Request request) { + return sendMessage(CContentServerDirectory_GetClientUpdateHosts_Request.class, request.toBuilder()); } @Override - public JobID GetManifestRequestCode(SteammessagesContentsystemSteamclient.CContentServerDirectory_GetManifestRequestCode_Request request) { - return null; + public JobID GetManifestRequestCode(CContentServerDirectory_GetManifestRequestCode_Request request) { + return sendMessage(CContentServerDirectory_GetManifestRequestCode_Request.class, request.toBuilder()); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessages.java b/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessages.java index 71413cf3..d64d560e 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessages.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessages.java @@ -1,13 +1,15 @@ package in.dragonbra.javasteam.rpc.service; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesFriendmessagesSteamclient; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesFriendmessagesSteamclient.*; import in.dragonbra.javasteam.rpc.IFriendMessages; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; import in.dragonbra.javasteam.types.JobID; -// TODO implement - +/** + * @author Lossy + * @since 2023-01-04 + */ @SuppressWarnings("unused") public class FriendMessages extends UnifiedService implements IFriendMessages { @@ -16,32 +18,32 @@ public FriendMessages(SteamUnifiedMessages steamUnifiedMessages) { } @Override - public JobID GetRecentMessages(SteammessagesFriendmessagesSteamclient.CFriendMessages_GetRecentMessages_Request request) { - return null; + public JobID GetRecentMessages(CFriendMessages_GetRecentMessages_Request request) { + return sendMessage(CFriendMessages_GetRecentMessages_Request.class, request.toBuilder()); } @Override - public SteammessagesFriendmessagesSteamclient.CFriendsMessages_GetActiveMessageSessions_Response GetActiveMessageSessions(SteammessagesFriendmessagesSteamclient.CFriendsMessages_GetActiveMessageSessions_Request request) { - return null; + public JobID GetActiveMessageSessions(CFriendsMessages_GetActiveMessageSessions_Request request) { + return sendMessage(CFriendsMessages_GetActiveMessageSessions_Request.class, request.toBuilder()); } @Override - public JobID SendMessage(SteammessagesFriendmessagesSteamclient.CFriendMessages_SendMessage_Request request) { - return null; + public JobID SendMessage(CFriendMessages_SendMessage_Request request) { + return sendMessage(CFriendMessages_SendMessage_Request.class, request.toBuilder()); } @Override - public void AckMessage(SteammessagesFriendmessagesSteamclient.CFriendMessages_AckMessage_Notification request) { - + public void AckMessage(CFriendMessages_AckMessage_Notification request) { + sendNotification(CFriendMessages_AckMessage_Notification.class, request.toBuilder()); } @Override - public JobID IsInFriendsUIBeta(SteammessagesFriendmessagesSteamclient.CFriendMessages_IsInFriendsUIBeta_Request request) { - return null; + public JobID IsInFriendsUIBeta(CFriendMessages_IsInFriendsUIBeta_Request request) { + return sendMessage(CFriendMessages_IsInFriendsUIBeta_Request.class, request.toBuilder()); } @Override - public JobID UpdateMessageReaction(SteammessagesFriendmessagesSteamclient.CFriendMessages_UpdateMessageReaction_Request request) { - return null; + public JobID UpdateMessageReaction(CFriendMessages_UpdateMessageReaction_Request request) { + return sendMessage(CFriendMessages_UpdateMessageReaction_Request.class, request.toBuilder()); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessagesClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessagesClient.java index 2b212165..2d8d7193 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessagesClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessagesClient.java @@ -1,12 +1,14 @@ package in.dragonbra.javasteam.rpc.service; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesFriendmessagesSteamclient; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesFriendmessagesSteamclient.*; import in.dragonbra.javasteam.rpc.IFriendMessagesClient; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; -// TODO implement - +/** + * @author Lossy + * @since 2023-01-04 + */ @SuppressWarnings("unused") public class FriendMessagesClient extends UnifiedService implements IFriendMessagesClient { @@ -15,17 +17,17 @@ public FriendMessagesClient(SteamUnifiedMessages steamUnifiedMessages) { } @Override - public void IncomingMessage(SteammessagesFriendmessagesSteamclient.CFriendMessages_IncomingMessage_Notification request) { - + public void IncomingMessage(CFriendMessages_IncomingMessage_Notification request) { + sendNotification(CFriendMessages_IncomingMessage_Notification.class, request.toBuilder()); } @Override - public void NotifyAckMessageEcho(SteammessagesFriendmessagesSteamclient.CFriendMessages_AckMessage_Notification request) { - + public void NotifyAckMessageEcho(CFriendMessages_AckMessage_Notification request) { + sendNotification(CFriendMessages_AckMessage_Notification.class, request.toBuilder()); } @Override - public void MessageReaction(SteammessagesFriendmessagesSteamclient.CFriendMessages_MessageReaction_Notification request) { - + public void MessageReaction(CFriendMessages_MessageReaction_Notification request) { + sendNotification(CFriendMessages_MessageReaction_Notification.class, request.toBuilder()); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/Parental.java b/src/main/java/in/dragonbra/javasteam/rpc/service/Parental.java index 34dac6d3..7f3b2d8b 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/Parental.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/Parental.java @@ -1,13 +1,15 @@ package in.dragonbra.javasteam.rpc.service; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesParentalSteamclient; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesParentalSteamclient.*; import in.dragonbra.javasteam.rpc.IParental; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; import in.dragonbra.javasteam.types.JobID; -// TODO implement - +/** + * @author Lossy + * @since 2023-01-04 + */ @SuppressWarnings("unused") public class Parental extends UnifiedService implements IParental { @@ -16,52 +18,52 @@ public Parental(SteamUnifiedMessages steamUnifiedMessages) { } @Override - public JobID EnableParentalSettings(SteammessagesParentalSteamclient.CParental_EnableParentalSettings_Request request) { - return null; + public JobID EnableParentalSettings(CParental_EnableParentalSettings_Request request) { + return sendMessage(CParental_EnableParentalSettings_Request.class, request.toBuilder()); } @Override - public JobID DisableParentalSettings(SteammessagesParentalSteamclient.CParental_DisableParentalSettings_Request request) { - return null; + public JobID DisableParentalSettings(CParental_DisableParentalSettings_Request request) { + return sendMessage(CParental_DisableParentalSettings_Request.class, request.toBuilder()); } @Override - public JobID GetParentalSettings(SteammessagesParentalSteamclient.CParental_GetParentalSettings_Request request) { - return null; + public JobID GetParentalSettings(CParental_GetParentalSettings_Request request) { + return sendMessage(CParental_GetParentalSettings_Request.class, request.toBuilder()); } @Override - public JobID GetSignedParentalSettings(SteammessagesParentalSteamclient.CParental_GetSignedParentalSettings_Request request) { - return null; + public JobID GetSignedParentalSettings(CParental_GetSignedParentalSettings_Request request) { + return sendMessage(CParental_GetSignedParentalSettings_Request.class, request.toBuilder()); } @Override - public JobID SetParentalSettings(SteammessagesParentalSteamclient.CParental_SetParentalSettings_Request request) { - return null; + public JobID SetParentalSettings(CParental_SetParentalSettings_Request request) { + return sendMessage(CParental_SetParentalSettings_Request.class, request.toBuilder()); } @Override - public JobID ValidateToken(SteammessagesParentalSteamclient.CParental_ValidateToken_Request request) { - return null; + public JobID ValidateToken(CParental_ValidateToken_Request request) { + return sendMessage(CParental_ValidateToken_Request.class, request.toBuilder()); } @Override - public JobID ValidatePassword(SteammessagesParentalSteamclient.CParental_ValidatePassword_Request request) { - return null; + public JobID ValidatePassword(CParental_ValidatePassword_Request request) { + return sendMessage(CParental_ValidatePassword_Request.class, request.toBuilder()); } @Override - public JobID LockClient(SteammessagesParentalSteamclient.CParental_LockClient_Request request) { - return null; + public JobID LockClient(CParental_LockClient_Request request) { + return sendMessage(CParental_LockClient_Request.class, request.toBuilder()); } @Override - public JobID RequestRecoveryCode(SteammessagesParentalSteamclient.CParental_RequestRecoveryCode_Request request) { - return null; + public JobID RequestRecoveryCode(CParental_RequestRecoveryCode_Request request) { + return sendMessage(CParental_RequestRecoveryCode_Request.class, request.toBuilder()); } @Override - public JobID DisableWithRecoveryCode(SteammessagesParentalSteamclient.CParental_DisableWithRecoveryCode_Request request) { - return null; + public JobID DisableWithRecoveryCode(CParental_DisableWithRecoveryCode_Request request) { + return sendMessage(CParental_DisableWithRecoveryCode_Request.class, request.toBuilder()); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ParentalClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ParentalClient.java index 23eb91c5..98f797c0 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/ParentalClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ParentalClient.java @@ -1,12 +1,14 @@ package in.dragonbra.javasteam.rpc.service; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesParentalSteamclient; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesParentalSteamclient.*; import in.dragonbra.javasteam.rpc.IParentalClient; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; -// TODO implement - +/** + * @author Lossy + * @since 2023-01-04 + */ @SuppressWarnings("unused") public class ParentalClient extends UnifiedService implements IParentalClient { @@ -15,17 +17,17 @@ public ParentalClient(SteamUnifiedMessages steamUnifiedMessages) { } @Override - public void NotifySettingsChange(SteammessagesParentalSteamclient.CParental_ParentalSettingsChange_Notification request) { - + public void NotifySettingsChange(CParental_ParentalSettingsChange_Notification request) { + sendNotification(CParental_ParentalSettingsChange_Notification.class, request.toBuilder()); } @Override - public void NotifyUnlock(SteammessagesParentalSteamclient.CParental_ParentalUnlock_Notification request) { - + public void NotifyUnlock(CParental_ParentalUnlock_Notification request) { + sendNotification(CParental_ParentalUnlock_Notification.class, request.toBuilder()); } @Override - public void NotifyLock(SteammessagesParentalSteamclient.CParental_ParentalLock_Notification request) { - + public void NotifyLock(CParental_ParentalLock_Notification request) { + sendNotification(CParental_ParentalLock_Notification.class, request.toBuilder()); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/PlayerClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/PlayerClient.java index 9a8e4b9d..2b9c5070 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/PlayerClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/PlayerClient.java @@ -1,12 +1,14 @@ package in.dragonbra.javasteam.rpc.service; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesPlayerSteamclient; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesPlayerSteamclient.*; import in.dragonbra.javasteam.rpc.IPlayerClient; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; -// TODO implement - +/** + * @author Lossy + * @since 2023-01-04 + */ @SuppressWarnings("unused") public class PlayerClient extends UnifiedService implements IPlayerClient { @@ -15,42 +17,42 @@ public PlayerClient(SteamUnifiedMessages steamUnifiedMessages) { } @Override - public void NotifyLastPlayedTimes(SteammessagesPlayerSteamclient.CPlayer_LastPlayedTimes_Notification request) { - + public void NotifyLastPlayedTimes(CPlayer_LastPlayedTimes_Notification request) { + sendNotification(CPlayer_LastPlayedTimes_Notification.class, request.toBuilder()); } @Override - public void NotifyFriendNicknameChanged(SteammessagesPlayerSteamclient.CPlayer_FriendNicknameChanged_Notification request) { - + public void NotifyFriendNicknameChanged(CPlayer_FriendNicknameChanged_Notification request) { + sendNotification(CPlayer_FriendNicknameChanged_Notification.class, request.toBuilder()); } @Override - public void NotifyFriendEquippedProfileItemsChanged(SteammessagesPlayerSteamclient.CPlayer_FriendEquippedProfileItemsChanged_Notification request) { - + public void NotifyFriendEquippedProfileItemsChanged(CPlayer_FriendEquippedProfileItemsChanged_Notification request) { + sendNotification(CPlayer_FriendEquippedProfileItemsChanged_Notification.class, request.toBuilder()); } @Override - public void NotifyNewSteamAnnouncementState(SteammessagesPlayerSteamclient.CPlayer_NewSteamAnnouncementState_Notification request) { - + public void NotifyNewSteamAnnouncementState(CPlayer_NewSteamAnnouncementState_Notification request) { + sendNotification(CPlayer_NewSteamAnnouncementState_Notification.class, request.toBuilder()); } @Override - public void NotifyCommunityPreferencesChanged(SteammessagesPlayerSteamclient.CPlayer_CommunityPreferencesChanged_Notification request) { - + public void NotifyCommunityPreferencesChanged(CPlayer_CommunityPreferencesChanged_Notification request) { + sendNotification(CPlayer_CommunityPreferencesChanged_Notification.class, request.toBuilder()); } @Override - public void NotifyTextFilterWordsChanged(SteammessagesPlayerSteamclient.CPlayer_TextFilterWordsChanged_Notification request) { - + public void NotifyTextFilterWordsChanged(CPlayer_TextFilterWordsChanged_Notification request) { + sendNotification(CPlayer_TextFilterWordsChanged_Notification.class, request.toBuilder()); } @Override - public void NotifyPerFriendPreferencesChanged(SteammessagesPlayerSteamclient.CPlayer_PerFriendPreferencesChanged_Notification request) { - + public void NotifyPerFriendPreferencesChanged(CPlayer_PerFriendPreferencesChanged_Notification request) { + sendNotification(CPlayer_PerFriendPreferencesChanged_Notification.class, request.toBuilder()); } @Override - public void NotifyPrivacyPrivacySettingsChanged(SteammessagesPlayerSteamclient.CPlayer_PrivacySettingsChanged_Notification request) { - + public void NotifyPrivacyPrivacySettingsChanged(CPlayer_PrivacySettingsChanged_Notification request) { + sendNotification(CPlayer_PrivacySettingsChanged_Notification.class, request.toBuilder()); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClient.java index 5fb17a7a..f68a80f9 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClient.java @@ -1,13 +1,15 @@ package in.dragonbra.javasteam.rpc.service; -import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesRemoteclientServiceMessages; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesRemoteclientServiceMessages.*; import in.dragonbra.javasteam.rpc.IRemoteClient; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; import in.dragonbra.javasteam.types.JobID; -// TODO implement - +/** + * @author Lossy + * @since 2023-01-04 + */ @SuppressWarnings("unused") public class RemoteClient extends UnifiedService implements IRemoteClient { @@ -16,67 +18,69 @@ public RemoteClient(SteamUnifiedMessages steamUnifiedMessages) { } @Override - public JobID GetPairingInfo(SteammessagesRemoteclientServiceMessages.CRemoteClient_GetPairingInfo_Request request) { - return null; + public JobID GetPairingInfo(CRemoteClient_GetPairingInfo_Request request) { + return sendMessage(CRemoteClient_GetPairingInfo_Request.class, request.toBuilder()); } @Override - public void NotifyOnline(SteammessagesRemoteclientServiceMessages.CRemoteClient_Online_Notification request) { + public void NotifyOnline(CRemoteClient_Online_Notification request) { + sendNotification(CRemoteClient_Online_Notification.class, request.toBuilder()); } @Override - public void NotifyReplyPacket(SteammessagesRemoteclientServiceMessages.CRemoteClient_ReplyPacket_Notification request) { + public void NotifyReplyPacket(CRemoteClient_ReplyPacket_Notification request) { + sendNotification(CRemoteClient_ReplyPacket_Notification.class, request.toBuilder()); } @Override - public JobID AllocateTURNServer(SteammessagesRemoteclientServiceMessages.CRemoteClient_AllocateTURNServer_Request request) { - return null; + public JobID AllocateTURNServer(CRemoteClient_AllocateTURNServer_Request request) { + return sendMessage(CRemoteClient_AllocateTURNServer_Request.class, request.toBuilder()); } @Override - public JobID AllocateRelayServer(SteammessagesRemoteclientServiceMessages.CRemoteClient_AllocateRelayServer_Request request) { - return null; + public JobID AllocateRelayServer(CRemoteClient_AllocateRelayServer_Request request) { + return sendMessage(CRemoteClient_AllocateRelayServer_Request.class, request.toBuilder()); } @Override - public JobID AllocateSDR(SteammessagesRemoteclientServiceMessages.CRemoteClient_AllocateSDR_Request request) { - return null; + public JobID AllocateSDR(CRemoteClient_AllocateSDR_Request request) { + return sendMessage(CRemoteClient_AllocateSDR_Request.class, request.toBuilder()); } @Override - public void SendSteamBroadcastPacket(SteammessagesRemoteclientServiceMessages.CRemoteClient_SteamBroadcast_Notification request) { - + public void SendSteamBroadcastPacket(CRemoteClient_SteamBroadcast_Notification request) { + sendNotification(CRemoteClient_SteamBroadcast_Notification.class, request.toBuilder()); } @Override - public void SendSteamToSteamPacket(SteammessagesRemoteclientServiceMessages.CRemoteClient_SteamToSteam_Notification request) { - + public void SendSteamToSteamPacket(CRemoteClient_SteamToSteam_Notification request) { + sendNotification(CRemoteClient_SteamToSteam_Notification.class, request.toBuilder()); } @Override - public JobID SendRemotePlaySessionStarted(SteammessagesRemoteclientServiceMessages.CRemotePlay_SessionStarted_Request request) { - return null; + public JobID SendRemotePlaySessionStarted(CRemotePlay_SessionStarted_Request request) { + return sendMessage(CRemotePlay_SessionStarted_Request.class, request.toBuilder()); } @Override - public void SendRemotePlaySessionStopped(SteammessagesRemoteclientServiceMessages.CRemotePlay_SessionStopped_Notification request) { - + public void SendRemotePlaySessionStopped(CRemotePlay_SessionStopped_Notification request) { + sendNotification(CRemotePlay_SessionStopped_Notification.class, request.toBuilder()); } @Override - public void SendRemotePlayTogetherPacket(SteammessagesRemoteclientServiceMessages.CRemotePlayTogether_Notification request) { - + public void SendRemotePlayTogetherPacket(CRemotePlayTogether_Notification request) { + sendNotification(CRemotePlayTogether_Notification.class, request.toBuilder()); } @Override - public JobID CreateRemotePlayTogetherInvitation(SteammessagesRemoteclientServiceMessages.CRemoteClient_CreateRemotePlayTogetherInvitation_Request request) { - return null; + public JobID CreateRemotePlayTogetherInvitation(CRemoteClient_CreateRemotePlayTogetherInvitation_Request request) { + return sendMessage(CRemoteClient_CreateRemotePlayTogetherInvitation_Request.class, request.toBuilder()); } @Override - public JobID DeleteRemotePlayTogetherInvitation(SteammessagesRemoteclientServiceMessages.CRemoteClient_DeleteRemotePlayTogetherInvitation_Request request) { - return null; + public JobID DeleteRemotePlayTogetherInvitation(CRemoteClient_DeleteRemotePlayTogetherInvitation_Request request) { + return sendMessage(CRemoteClient_DeleteRemotePlayTogetherInvitation_Request.class, request.toBuilder()); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClientSteamClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClientSteamClient.java index 1bf4145e..6c6791c9 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClientSteamClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClientSteamClient.java @@ -5,8 +5,10 @@ import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; -// TODO implement - +/** + * @author Lossy + * @since 2023-01-04 + */ @SuppressWarnings("unused") public class RemoteClientSteamClient extends UnifiedService implements IRemoteClientSteamClient { From 44b142773ba2ce4942b67126f53abbe85897df7e Mon Sep 17 00:00:00 2001 From: LossyDragon Date: Thu, 5 Jan 2023 17:00:59 -0600 Subject: [PATCH 16/22] Hopefully more improvements to make the UnifiedService abstract class to alot of the leg work. This allows the adapter classes be less work to maintain. --- .../SampleUnifiedMessages.java | 2 +- .../dragonbra/javasteam/rpc/service/Chat.java | 2 +- .../javasteam/rpc/service/ChatRoom.java | 106 +++++++++--------- .../javasteam/rpc/service/ChatRoomClient.java | 22 ++-- .../javasteam/rpc/service/ChatUsability.java | 2 +- .../rpc/service/ChatUsabilityClient.java | 2 +- .../javasteam/rpc/service/ClanChatRooms.java | 4 +- .../rpc/service/ContentServerDirectory.java | 8 +- .../javasteam/rpc/service/FriendMessages.java | 12 +- .../rpc/service/FriendMessagesClient.java | 6 +- .../javasteam/rpc/service/Parental.java | 20 ++-- .../javasteam/rpc/service/ParentalClient.java | 6 +- .../javasteam/rpc/service/Player.java | 95 ++++++++-------- .../javasteam/rpc/service/PlayerClient.java | 16 +-- .../javasteam/rpc/service/RemoteClient.java | 26 ++--- .../rpc/service/RemoteClientSteamClient.java | 12 +- .../SteamUnifiedMessages.java | 8 +- .../steamunifiedmessages/UnifiedService.java | 26 ++--- 18 files changed, 185 insertions(+), 190 deletions(-) diff --git a/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_8UnifiedMessages/SampleUnifiedMessages.java b/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_8UnifiedMessages/SampleUnifiedMessages.java index 9bf7c80a..2bb008db 100644 --- a/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_8UnifiedMessages/SampleUnifiedMessages.java +++ b/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_8UnifiedMessages/SampleUnifiedMessages.java @@ -189,7 +189,7 @@ private void onLoggedOn(LoggedOnCallback callback) { // alternatively, the request can be made using SteamUnifiedMessages directly, but then you must build the service request name manually // the name format is in the form of .# - badgeRequest = steamUnifiedMessages.sendMessage(CPlayer_GetGameBadgeLevels_Request.class, "Player.GetGameBadgeLevels#1", badgeLevelsRequest); + badgeRequest = steamUnifiedMessages.sendMessage(CPlayer_GetGameBadgeLevels_Request.class, "Player.GetGameBadgeLevels#1", badgeLevelsRequest.build()); } private void onLoggedOff(LoggedOffCallback callback) { diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/Chat.java b/src/main/java/in/dragonbra/javasteam/rpc/service/Chat.java index d156ab05..7ed3a672 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/Chat.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/Chat.java @@ -19,6 +19,6 @@ public Chat(SteamUnifiedMessages steamUnifiedMessages) { @Override public JobID RequestFriendPersonaStates(CChat_RequestFriendPersonaStates_Request request) { - return sendMessage(CChat_RequestFriendPersonaStates_Request.class, request.toBuilder()); + return sendMessage(request); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoom.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoom.java index 69e67340..70b0e5f8 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoom.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoom.java @@ -19,266 +19,266 @@ public ChatRoom(SteamUnifiedMessages steamUnifiedMessages) { @Override public JobID CreateChatRoomGroup(CChatRoom_CreateChatRoomGroup_Request request) { - return sendMessage(CChatRoom_CreateChatRoomGroup_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SaveChatRoomGroup(CChatRoom_SaveChatRoomGroup_Request request) { - return sendMessage(CChatRoom_SaveChatRoomGroup_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID RenameChatRoomGroup(CChatRoom_RenameChatRoomGroup_Request request) { - return sendMessage(CChatRoom_RenameChatRoomGroup_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetChatRoomGroupTagline(CChatRoom_SetChatRoomGroupTagline_Request request) { - return sendMessage(CChatRoom_SetChatRoomGroupTagline_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetChatRoomGroupAvatar(CChatRoom_SetChatRoomGroupAvatar_Request request) { - return sendMessage(CChatRoom_SetChatRoomGroupAvatar_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetChatRoomGroupWatchingBroadcast(CChatRoom_SetChatRoomGroupWatchingBroadcast_Request request) { - return sendMessage(CChatRoom_SetChatRoomGroupWatchingBroadcast_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID JoinMiniGameForChatRoomGroup(CChatRoom_JoinMiniGameForChatRoomGroup_Request request) { - return sendMessage(CChatRoom_JoinMiniGameForChatRoomGroup_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID EndMiniGameForChatRoomGroup(CChatRoom_EndMiniGameForChatRoomGroup_Request request) { - return sendMessage(CChatRoom_EndMiniGameForChatRoomGroup_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID MuteUserInGroup(CChatRoom_MuteUser_Request request) { - return sendMessage(CChatRoom_MuteUser_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID KickUserFromGroup(CChatRoom_KickUser_Request request) { - return sendMessage(CChatRoom_KickUser_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetUserBanState(CChatRoom_SetUserBanState_Request request) { - return sendMessage(CChatRoom_SetUserBanState_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID RevokeInviteToGroup(CChatRoom_RevokeInvite_Request request) { - return sendMessage(CChatRoom_RevokeInvite_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID CreateRole(CChatRoom_CreateRole_Request request) { - return sendMessage(CChatRoom_CreateRole_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetRoles(CChatRoom_GetRoles_Request request) { - return sendMessage(CChatRoom_GetRoles_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID RenameRole(CChatRoom_RenameRole_Request request) { - return sendMessage(CChatRoom_RenameRole_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID ReorderRole(CChatRoom_ReorderRole_Request request) { - return sendMessage(CChatRoom_ReorderRole_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID DeleteRole(CChatRoom_DeleteRole_Request request) { - return sendMessage(CChatRoom_DeleteRole_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetRoleActions(CChatRoom_GetRoleActions_Request request) { - return sendMessage(CChatRoom_GetRoleActions_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID ReplaceRoleActions(CChatRoom_ReplaceRoleActions_Request request) { - return sendMessage(CChatRoom_ReplaceRoleActions_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID AddRoleToUser(CChatRoom_AddRoleToUser_Request request) { - return sendMessage(CChatRoom_AddRoleToUser_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetRolesForUser(CChatRoom_GetRolesForUser_Request request) { - return sendMessage(CChatRoom_GetRolesForUser_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID DeleteRoleFromUser(CChatRoom_DeleteRoleFromUser_Request request) { - return sendMessage(CChatRoom_DeleteRoleFromUser_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID JoinChatRoomGroup(CChatRoom_JoinChatRoomGroup_Request request) { - return sendMessage(CChatRoom_JoinChatRoomGroup_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID InviteFriendToChatRoomGroup(CChatRoom_InviteFriendToChatRoomGroup_Request request) { - return sendMessage(CChatRoom_InviteFriendToChatRoomGroup_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID LeaveChatRoomGroup(CChatRoom_LeaveChatRoomGroup_Request request) { - return sendMessage(CChatRoom_LeaveChatRoomGroup_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID CreateChatRoom(CChatRoom_CreateChatRoom_Request request) { - return sendMessage(CChatRoom_CreateChatRoom_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID DeleteChatRoom(CChatRoom_DeleteChatRoom_Request request) { - return sendMessage(CChatRoom_DeleteChatRoom_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID RenameChatRoom(CChatRoom_RenameChatRoom_Request request) { - return sendMessage(CChatRoom_RenameChatRoom_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID ReorderChatRoom(CChatRoom_ReorderChatRoom_Request request) { - return sendMessage(CChatRoom_ReorderChatRoom_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SendChatMessage(CChatRoom_SendChatMessage_Request request) { - return sendMessage(CChatRoom_SendChatMessage_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID JoinVoiceChat(CChatRoom_JoinVoiceChat_Request request) { - return sendMessage(CChatRoom_JoinVoiceChat_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID LeaveVoiceChat(CChatRoom_LeaveVoiceChat_Request request) { - return sendMessage(CChatRoom_LeaveVoiceChat_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetMessageHistory(CChatRoom_GetMessageHistory_Request request) { - return sendMessage(CChatRoom_GetMessageHistory_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetMyChatRoomGroups(CChatRoom_GetMyChatRoomGroups_Request request) { - return sendMessage(CChatRoom_GetMyChatRoomGroups_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetChatRoomGroupState(CChatRoom_GetChatRoomGroupState_Request request) { - return sendMessage(CChatRoom_GetChatRoomGroupState_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetChatRoomGroupSummary(CChatRoom_GetChatRoomGroupSummary_Request request) { - return sendMessage(CChatRoom_GetChatRoomGroupSummary_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetAppChatRoomGroupForceActive(CChatRoom_SetAppChatRoomGroupForceActive_Request request) { - return sendMessage(CChatRoom_SetAppChatRoomGroupForceActive_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public void SetAppChatRoomGroupStopForceActive(CChatRoom_SetAppChatRoomGroupStopForceActive_Notification request) { - sendNotification(CChatRoom_SetAppChatRoomGroupStopForceActive_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void AckChatMessage(CChatRoom_AckChatMessage_Notification request) { - sendNotification(CChatRoom_AckChatMessage_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public JobID CreateInviteLink(CChatRoom_CreateInviteLink_Request request) { - return sendMessage(CChatRoom_CreateInviteLink_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetInviteLinkInfo(CChatRoom_GetInviteLinkInfo_Request request) { - return sendMessage(CChatRoom_GetInviteLinkInfo_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetInviteInfo(CChatRoom_GetInviteInfo_Request request) { - return sendMessage(CChatRoom_GetInviteInfo_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetInviteLinksForGroup(CChatRoom_GetInviteLinksForGroup_Request request) { - return sendMessage(CChatRoom_GetInviteLinksForGroup_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetBanList(CChatRoom_GetBanList_Request request) { - return sendMessage(CChatRoom_GetBanList_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetInviteList(CChatRoom_GetInviteList_Request request) { - return sendMessage(CChatRoom_GetInviteList_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID DeleteInviteLink(CChatRoom_DeleteInviteLink_Request request) { - return sendMessage(CChatRoom_DeleteInviteLink_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetSessionActiveChatRoomGroups(CChatRoom_SetSessionActiveChatRoomGroups_Request request) { - return sendMessage(CChatRoom_SetSessionActiveChatRoomGroups_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetUserChatGroupPreferences(CChatRoom_SetUserChatGroupPreferences_Request request) { - return sendMessage(CChatRoom_SetUserChatGroupPreferences_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID DeleteChatMessages(CChatRoom_DeleteChatMessages_Request request) { - return sendMessage(CChatRoom_DeleteChatMessages_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public void UpdateMemberListView(CChatRoom_UpdateMemberListView_Notification request) { - sendNotification(CChatRoom_UpdateMemberListView_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public JobID SearchMembers(CChatRoom_SearchMembers_Request request) { - return sendMessage(CChatRoom_SearchMembers_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID UpdateMessageReaction(CChatRoom_UpdateMessageReaction_Request request) { - return sendMessage(CChatRoom_UpdateMessageReaction_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetMessageReactionReactors(CChatRoom_GetMessageReactionReactors_Request request) { - return sendMessage(CChatRoom_GetMessageReactionReactors_Request.class, request.toBuilder()); + return sendMessage(request); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoomClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoomClient.java index 6a51e78a..7e133d8d 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoomClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatRoomClient.java @@ -18,56 +18,56 @@ public ChatRoomClient(SteamUnifiedMessages steamUnifiedMessages) { @Override public void NotifyIncomingChatMessage(SteammessagesChatSteamclient.CChatRoom_IncomingChatMessage_Notification request) { - + sendNotification(request); } @Override public void NotifyChatMessageModified(SteammessagesChatSteamclient.CChatRoom_ChatMessageModified_Notification request) { - + sendNotification(request); } @Override public void NotifyMemberStateChange(SteammessagesChatSteamclient.CChatRoom_MemberStateChange_Notification request) { - + sendNotification(request); } @Override public void NotifyChatRoomHeaderStateChange(SteammessagesChatSteamclient.CChatRoom_ChatRoomHeaderState_Notification request) { - + sendNotification(request); } @Override public void NotifyChatRoomGroupRoomsChange(SteammessagesChatSteamclient.CChatRoom_ChatRoomGroupRoomsChange_Notification request) { - + sendNotification(request); } @Override public void NotifyShouldRejoinChatRoomVoiceChat(SteammessagesChatSteamclient.CChatRoom_NotifyShouldRejoinChatRoomVoiceChat_Notification request) { - + sendNotification(request); } @Override public void NotifyChatGroupUserStateChanged(SteammessagesChatSteamclient.ChatRoomClient_NotifyChatGroupUserStateChanged_Notification request) { - + sendNotification(request); } @Override public void NotifyAckChatMessageEcho(SteammessagesChatSteamclient.CChatRoom_AckChatMessage_Notification request) { - + sendNotification(request); } @Override public void NotifyChatRoomDisconnect(SteammessagesChatSteamclient.ChatRoomClient_NotifyChatRoomDisconnect_Notification request) { - + sendNotification(request); } @Override public void NotifyMemberListViewUpdated(SteammessagesChatSteamclient.CChatRoomClient_MemberListViewUpdated_Notification request) { - + sendNotification(request); } @Override public void NotifyMessageReaction(SteammessagesChatSteamclient.CChatRoom_MessageReaction_Notification request) { - + sendNotification(request); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsability.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsability.java index 1deb02cd..07e81c54 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsability.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsability.java @@ -18,6 +18,6 @@ public ChatUsability(SteamUnifiedMessages steamUnifiedMessages) { @Override public void NotifyClientUsabilityMetrics(CChatUsability_ClientUsabilityMetrics_Notification request) { - sendNotification(CChatUsability_ClientUsabilityMetrics_Notification.class, request.toBuilder()); + sendNotification(request); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsabilityClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsabilityClient.java index 82f6a76d..b7c21f9e 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsabilityClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ChatUsabilityClient.java @@ -18,6 +18,6 @@ public ChatUsabilityClient(SteamUnifiedMessages steamUnifiedMessages) { @Override public void NotifyRequestClientUsabilityMetrics(CChatUsability_RequestClientUsabilityMetrics_Notification request) { - sendNotification(CChatUsability_RequestClientUsabilityMetrics_Notification.class, request.toBuilder()); + sendNotification(request); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ClanChatRooms.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ClanChatRooms.java index 33cdcc97..09686d38 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/ClanChatRooms.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ClanChatRooms.java @@ -19,11 +19,11 @@ public ClanChatRooms(SteamUnifiedMessages steamUnifiedMessages) { @Override public JobID GetClanChatRoomInfo(CClanChatRooms_GetClanChatRoomInfo_Request request) { - return sendMessage(CClanChatRooms_GetClanChatRoomInfo_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetClanChatRoomPrivate(CClanChatRooms_SetClanChatRoomPrivate_Request request) { - return sendMessage(CClanChatRooms_SetClanChatRoomPrivate_Request.class, request.toBuilder()); + return sendMessage(request); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ContentServerDirectory.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ContentServerDirectory.java index a0b5b14e..9cb56a65 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/ContentServerDirectory.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ContentServerDirectory.java @@ -19,21 +19,21 @@ public ContentServerDirectory(SteamUnifiedMessages steamUnifiedMessages) { @Override public JobID GetServersForSteamPipe(CContentServerDirectory_GetServersForSteamPipe_Request request) { - return sendMessage(CContentServerDirectory_GetServersForSteamPipe_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetDepotPatchInfo(CContentServerDirectory_GetDepotPatchInfo_Request request) { - return sendMessage(CContentServerDirectory_GetDepotPatchInfo_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetClientUpdateHosts(CContentServerDirectory_GetClientUpdateHosts_Request request) { - return sendMessage(CContentServerDirectory_GetClientUpdateHosts_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetManifestRequestCode(CContentServerDirectory_GetManifestRequestCode_Request request) { - return sendMessage(CContentServerDirectory_GetManifestRequestCode_Request.class, request.toBuilder()); + return sendMessage(request); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessages.java b/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessages.java index d64d560e..8339e5d9 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessages.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessages.java @@ -19,31 +19,31 @@ public FriendMessages(SteamUnifiedMessages steamUnifiedMessages) { @Override public JobID GetRecentMessages(CFriendMessages_GetRecentMessages_Request request) { - return sendMessage(CFriendMessages_GetRecentMessages_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetActiveMessageSessions(CFriendsMessages_GetActiveMessageSessions_Request request) { - return sendMessage(CFriendsMessages_GetActiveMessageSessions_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SendMessage(CFriendMessages_SendMessage_Request request) { - return sendMessage(CFriendMessages_SendMessage_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public void AckMessage(CFriendMessages_AckMessage_Notification request) { - sendNotification(CFriendMessages_AckMessage_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public JobID IsInFriendsUIBeta(CFriendMessages_IsInFriendsUIBeta_Request request) { - return sendMessage(CFriendMessages_IsInFriendsUIBeta_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID UpdateMessageReaction(CFriendMessages_UpdateMessageReaction_Request request) { - return sendMessage(CFriendMessages_UpdateMessageReaction_Request.class, request.toBuilder()); + return sendMessage(request); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessagesClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessagesClient.java index 2d8d7193..5dc9cdc5 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessagesClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/FriendMessagesClient.java @@ -18,16 +18,16 @@ public FriendMessagesClient(SteamUnifiedMessages steamUnifiedMessages) { @Override public void IncomingMessage(CFriendMessages_IncomingMessage_Notification request) { - sendNotification(CFriendMessages_IncomingMessage_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void NotifyAckMessageEcho(CFriendMessages_AckMessage_Notification request) { - sendNotification(CFriendMessages_AckMessage_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void MessageReaction(CFriendMessages_MessageReaction_Notification request) { - sendNotification(CFriendMessages_MessageReaction_Notification.class, request.toBuilder()); + sendNotification(request); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/Parental.java b/src/main/java/in/dragonbra/javasteam/rpc/service/Parental.java index 7f3b2d8b..24b113f3 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/Parental.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/Parental.java @@ -19,51 +19,51 @@ public Parental(SteamUnifiedMessages steamUnifiedMessages) { @Override public JobID EnableParentalSettings(CParental_EnableParentalSettings_Request request) { - return sendMessage(CParental_EnableParentalSettings_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID DisableParentalSettings(CParental_DisableParentalSettings_Request request) { - return sendMessage(CParental_DisableParentalSettings_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetParentalSettings(CParental_GetParentalSettings_Request request) { - return sendMessage(CParental_GetParentalSettings_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetSignedParentalSettings(CParental_GetSignedParentalSettings_Request request) { - return sendMessage(CParental_GetSignedParentalSettings_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetParentalSettings(CParental_SetParentalSettings_Request request) { - return sendMessage(CParental_SetParentalSettings_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID ValidateToken(CParental_ValidateToken_Request request) { - return sendMessage(CParental_ValidateToken_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID ValidatePassword(CParental_ValidatePassword_Request request) { - return sendMessage(CParental_ValidatePassword_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID LockClient(CParental_LockClient_Request request) { - return sendMessage(CParental_LockClient_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID RequestRecoveryCode(CParental_RequestRecoveryCode_Request request) { - return sendMessage(CParental_RequestRecoveryCode_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID DisableWithRecoveryCode(CParental_DisableWithRecoveryCode_Request request) { - return sendMessage(CParental_DisableWithRecoveryCode_Request.class, request.toBuilder()); + return sendMessage(request); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/ParentalClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/ParentalClient.java index 98f797c0..d4c1f4c8 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/ParentalClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/ParentalClient.java @@ -18,16 +18,16 @@ public ParentalClient(SteamUnifiedMessages steamUnifiedMessages) { @Override public void NotifySettingsChange(CParental_ParentalSettingsChange_Notification request) { - sendNotification(CParental_ParentalSettingsChange_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void NotifyUnlock(CParental_ParentalUnlock_Notification request) { - sendNotification(CParental_ParentalUnlock_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void NotifyLock(CParental_ParentalLock_Notification request) { - sendNotification(CParental_ParentalLock_Notification.class, request.toBuilder()); + sendNotification(request); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/Player.java b/src/main/java/in/dragonbra/javasteam/rpc/service/Player.java index 74b26667..aecba9ef 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/Player.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/Player.java @@ -19,237 +19,236 @@ public Player(SteamUnifiedMessages steamUnifiedMessages) { @Override public JobID GetMutualFriendsForIncomingInvites(CPlayer_GetMutualFriendsForIncomingInvites_Request request) { - return sendMessage(CPlayer_GetMutualFriendsForIncomingInvites_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetOwnedGames(CPlayer_GetOwnedGames_Request request) { - return sendMessage(CPlayer_GetOwnedGames_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetPlayNext(CPlayer_GetPlayNext_Request request) { - return sendMessage(CPlayer_GetPlayNext_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetFriendsGameplayInfo(CPlayer_GetFriendsGameplayInfo_Request request) { - return sendMessage(CPlayer_GetFriendsGameplayInfo_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetGameBadgeLevels(CPlayer_GetGameBadgeLevels_Request request) { - return sendMessage(CPlayer_GetGameBadgeLevels_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetProfileBackground(CPlayer_GetProfileBackground_Request request) { - return sendMessage(CPlayer_GetProfileBackground_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetProfileBackground(CPlayer_SetProfileBackground_Request request) { - return sendMessage(CPlayer_SetProfileBackground_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetMiniProfileBackground(CPlayer_GetMiniProfileBackground_Request request) { - return sendMessage(CPlayer_GetMiniProfileBackground_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetMiniProfileBackground(CPlayer_SetMiniProfileBackground_Request request) { - return sendMessage(CPlayer_SetMiniProfileBackground_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetAvatarFrame(CPlayer_GetAvatarFrame_Request request) { - return sendMessage(CPlayer_GetAvatarFrame_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetAvatarFrame(CPlayer_SetAvatarFrame_Request request) { - return sendMessage(CPlayer_SetAvatarFrame_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetAnimatedAvatar(CPlayer_GetAnimatedAvatar_Request request) { - return sendMessage(CPlayer_GetAnimatedAvatar_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetAnimatedAvatar(CPlayer_SetAnimatedAvatar_Request request) { - return sendMessage(CPlayer_SetAnimatedAvatar_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetSteamDeckKeyboardSkin(CPlayer_GetSteamDeckKeyboardSkin_Request request) { - return sendMessage(CPlayer_GetSteamDeckKeyboardSkin_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetSteamDeckKeyboardSkin(CPlayer_SetSteamDeckKeyboardSkin_Request request) { - return sendMessage(CPlayer_SetSteamDeckKeyboardSkin_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetProfileItemsOwned(CPlayer_GetProfileItemsOwned_Request request) { - return sendMessage(CPlayer_GetProfileItemsOwned_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetProfileItemsEquipped(CPlayer_GetProfileItemsEquipped_Request request) { - return sendMessage(CPlayer_GetProfileItemsEquipped_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetEquippedProfileItemFlags(CPlayer_SetEquippedProfileItemFlags_Request request) { - return sendMessage(CPlayer_SetEquippedProfileItemFlags_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetEmoticonList(CPlayer_GetEmoticonList_Request request) { - return sendMessage(CPlayer_GetEmoticonList_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetAchievementsProgress(CPlayer_GetAchievementsProgress_Request request) { - return sendMessage(CPlayer_GetAchievementsProgress_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetFavoriteBadge(CPlayer_GetFavoriteBadge_Request request) { - return sendMessage(CPlayer_GetFavoriteBadge_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetFavoriteBadge(CPlayer_SetFavoriteBadge_Request request) { - return sendMessage(CPlayer_SetFavoriteBadge_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetProfileCustomization(CPlayer_GetProfileCustomization_Request request) { - return sendMessage(CPlayer_GetProfileCustomization_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetPurchasedProfileCustomizations(CPlayer_GetPurchasedProfileCustomizations_Request request) { - ; - return sendMessage(CPlayer_GetPurchasedProfileCustomizations_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetPurchasedAndUpgradedProfileCustomizations(CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Request request) { - return sendMessage(CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetProfileThemesAvailable(CPlayer_GetProfileThemesAvailable_Request request) { - return sendMessage(CPlayer_GetProfileThemesAvailable_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetProfileTheme(CPlayer_SetProfileTheme_Request request) { - return sendMessage(CPlayer_SetProfileTheme_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetProfilePreferences(CPlayer_SetProfilePreferences_Request request) { - return sendMessage(CPlayer_SetProfilePreferences_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID PostStatusToFriends(CPlayer_PostStatusToFriends_Request request) { - return sendMessage(CPlayer_PostStatusToFriends_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetPostedStatus(CPlayer_GetPostedStatus_Request request) { - return sendMessage(CPlayer_GetPostedStatus_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID DeletePostedStatus(CPlayer_DeletePostedStatus_Request request) { - return sendMessage(CPlayer_DeletePostedStatus_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID ClientGetLastPlayedTimes(CPlayer_GetLastPlayedTimes_Request request) { - return sendMessage(CPlayer_GetLastPlayedTimes_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetTimeSSAAccepted(CPlayer_GetTimeSSAAccepted_Request request) { - return sendMessage(CPlayer_GetTimeSSAAccepted_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID AcceptSSA(CPlayer_AcceptSSA_Request request) { - return sendMessage(CPlayer_AcceptSSA_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetNicknameList(CPlayer_GetNicknameList_Request request) { - return sendMessage(CPlayer_GetNicknameList_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetPerFriendPreferences(CPlayer_GetPerFriendPreferences_Request request) { - return sendMessage(CPlayer_GetPerFriendPreferences_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetPerFriendPreferences(CPlayer_SetPerFriendPreferences_Request request) { - return sendMessage(CPlayer_SetPerFriendPreferences_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID AddFriend(CPlayer_AddFriend_Request request) { - return sendMessage(CPlayer_AddFriend_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID RemoveFriend(CPlayer_RemoveFriend_Request request) { - return sendMessage(CPlayer_RemoveFriend_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID IgnoreFriend(CPlayer_IgnoreFriend_Request request) { - return sendMessage(CPlayer_IgnoreFriend_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetCommunityPreferences(CPlayer_GetCommunityPreferences_Request request) { - return sendMessage(CPlayer_GetCommunityPreferences_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID SetCommunityPreferences(CPlayer_SetCommunityPreferences_Request request) { - return sendMessage(CPlayer_SetCommunityPreferences_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetTextFilterWords(CPlayer_GetTextFilterWords_Request request) { - return sendMessage(CPlayer_GetTextFilterWords_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetNewSteamAnnouncementState(CPlayer_GetNewSteamAnnouncementState_Request request) { - return sendMessage(CPlayer_GetNewSteamAnnouncementState_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID UpdateSteamAnnouncementLastRead(CPlayer_UpdateSteamAnnouncementLastRead_Request request) { - return sendMessage(CPlayer_UpdateSteamAnnouncementLastRead_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetPrivacySettings(CPlayer_GetPrivacySettings_Request request) { - return sendMessage(CPlayer_GetPrivacySettings_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID GetDurationControl(CPlayer_GetDurationControl_Request request) { - return sendMessage(CPlayer_GetDurationControl_Request.class, request.toBuilder()); + return sendMessage(request); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/PlayerClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/PlayerClient.java index 2b9c5070..addc0298 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/PlayerClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/PlayerClient.java @@ -18,41 +18,41 @@ public PlayerClient(SteamUnifiedMessages steamUnifiedMessages) { @Override public void NotifyLastPlayedTimes(CPlayer_LastPlayedTimes_Notification request) { - sendNotification(CPlayer_LastPlayedTimes_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void NotifyFriendNicknameChanged(CPlayer_FriendNicknameChanged_Notification request) { - sendNotification(CPlayer_FriendNicknameChanged_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void NotifyFriendEquippedProfileItemsChanged(CPlayer_FriendEquippedProfileItemsChanged_Notification request) { - sendNotification(CPlayer_FriendEquippedProfileItemsChanged_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void NotifyNewSteamAnnouncementState(CPlayer_NewSteamAnnouncementState_Notification request) { - sendNotification(CPlayer_NewSteamAnnouncementState_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void NotifyCommunityPreferencesChanged(CPlayer_CommunityPreferencesChanged_Notification request) { - sendNotification(CPlayer_CommunityPreferencesChanged_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void NotifyTextFilterWordsChanged(CPlayer_TextFilterWordsChanged_Notification request) { - sendNotification(CPlayer_TextFilterWordsChanged_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void NotifyPerFriendPreferencesChanged(CPlayer_PerFriendPreferencesChanged_Notification request) { - sendNotification(CPlayer_PerFriendPreferencesChanged_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void NotifyPrivacyPrivacySettingsChanged(CPlayer_PrivacySettingsChanged_Notification request) { - sendNotification(CPlayer_PrivacySettingsChanged_Notification.class, request.toBuilder()); + sendNotification(request); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClient.java index f68a80f9..42a4cd74 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClient.java @@ -19,68 +19,68 @@ public RemoteClient(SteamUnifiedMessages steamUnifiedMessages) { @Override public JobID GetPairingInfo(CRemoteClient_GetPairingInfo_Request request) { - return sendMessage(CRemoteClient_GetPairingInfo_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public void NotifyOnline(CRemoteClient_Online_Notification request) { - sendNotification(CRemoteClient_Online_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void NotifyReplyPacket(CRemoteClient_ReplyPacket_Notification request) { - sendNotification(CRemoteClient_ReplyPacket_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public JobID AllocateTURNServer(CRemoteClient_AllocateTURNServer_Request request) { - return sendMessage(CRemoteClient_AllocateTURNServer_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID AllocateRelayServer(CRemoteClient_AllocateRelayServer_Request request) { - return sendMessage(CRemoteClient_AllocateRelayServer_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID AllocateSDR(CRemoteClient_AllocateSDR_Request request) { - return sendMessage(CRemoteClient_AllocateSDR_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public void SendSteamBroadcastPacket(CRemoteClient_SteamBroadcast_Notification request) { - sendNotification(CRemoteClient_SteamBroadcast_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void SendSteamToSteamPacket(CRemoteClient_SteamToSteam_Notification request) { - sendNotification(CRemoteClient_SteamToSteam_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public JobID SendRemotePlaySessionStarted(CRemotePlay_SessionStarted_Request request) { - return sendMessage(CRemotePlay_SessionStarted_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public void SendRemotePlaySessionStopped(CRemotePlay_SessionStopped_Notification request) { - sendNotification(CRemotePlay_SessionStopped_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void SendRemotePlayTogetherPacket(CRemotePlayTogether_Notification request) { - sendNotification(CRemotePlayTogether_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public JobID CreateRemotePlayTogetherInvitation(CRemoteClient_CreateRemotePlayTogetherInvitation_Request request) { - return sendMessage(CRemoteClient_CreateRemotePlayTogetherInvitation_Request.class, request.toBuilder()); + return sendMessage(request); } @Override public JobID DeleteRemotePlayTogetherInvitation(CRemoteClient_DeleteRemotePlayTogetherInvitation_Request request) { - return sendMessage(CRemoteClient_DeleteRemotePlayTogetherInvitation_Request.class, request.toBuilder()); + return sendMessage(request); } } diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClientSteamClient.java b/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClientSteamClient.java index 6c6791c9..84f6d19f 100644 --- a/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClientSteamClient.java +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/RemoteClientSteamClient.java @@ -18,31 +18,31 @@ public RemoteClientSteamClient(SteamUnifiedMessages steamUnifiedMessages) { @Override public void NotifyRegisterStatusUpdate(CRemoteClient_RegisterStatusUpdate_Notification request) { - sendNotification(CRemoteClient_RegisterStatusUpdate_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void NotifyUnregisterStatusUpdate(CRemoteClient_UnregisterStatusUpdate_Notification request) { - sendNotification(CRemoteClient_UnregisterStatusUpdate_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void NotifyRemotePacket(CRemoteClient_RemotePacket_Notification request) { - sendNotification(CRemoteClient_RemotePacket_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void NotifySteamBroadcastPacket(CRemoteClient_SteamBroadcast_Notification request) { - sendNotification(CRemoteClient_SteamBroadcast_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void NotifySteamToSteamPacket(CRemoteClient_SteamToSteam_Notification request) { - sendNotification(CRemoteClient_SteamToSteam_Notification.class, request.toBuilder()); + sendNotification(request); } @Override public void NotifyRemotePlayTogetherPacket(CRemotePlayTogether_Notification request) { - sendNotification(CRemotePlayTogether_Notification.class, request.toBuilder()); + sendNotification(request); } } diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java index 16bd8f40..19cbd1ad 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java @@ -64,7 +64,7 @@ public void handleMsg(IPacketMsg packetMsg) { * @param The type of protobuf object. * @return The JobID of the request. This can be used to find the appropriate {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. */ - public > JobID sendMessage(Class clazz, String rpcName, TRequest message) { + public > JobID sendMessage(Class clazz, String rpcName, AbstractMessage message) { if (message == null) { throw new IllegalArgumentException("message is null"); } @@ -75,7 +75,7 @@ public > JobID sendMessage ClientMsgProtobuf msg = new ClientMsgProtobuf<>(clazz, eMsg); msg.setSourceJobID(jobID); msg.getHeader().getProto().setTargetJobName(rpcName); - msg.setBody(message); + msg.getBody().mergeFrom(message); client.send(msg); @@ -90,7 +90,7 @@ public > JobID sendMessage * @param message The message to send. * @param The type of protobuf object. */ - public > void sendNotification(Class clazz, String rpcName, TRequest message) { + public > void sendNotification(Class clazz, String rpcName, AbstractMessage message) { if (message == null) { throw new IllegalArgumentException("message is null"); } @@ -98,7 +98,7 @@ public > void sendNotifica EMsg eMsg = client.getSteamID() == null ? EMsg.ServiceMethodCallFromClientNonAuthed : EMsg.ServiceMethodCallFromClient; ClientMsgProtobuf msg = new ClientMsgProtobuf<>(clazz, eMsg); msg.getHeader().getProto().setTargetJobName(rpcName); - msg.setBody(message); + msg.getBody().mergeFrom(message); client.send(msg); } diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java index 27101a68..1bb88004 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java @@ -1,7 +1,6 @@ package in.dragonbra.javasteam.steam.handlers.steamunifiedmessages; import com.google.protobuf.AbstractMessage; -import com.google.protobuf.GeneratedMessageV3; import in.dragonbra.javasteam.types.JobID; /** @@ -28,7 +27,7 @@ public String getClassName() { * @param methodName The calling method name, ie: GetGameBadgeLevels * @return The name of the RPC endpoint as formatted ServiceName.RpcName. ie: Player.GetGameBadgeLevels#1 */ - private static String getRpcName(String parentClassName, String methodName) { + private static String getRpcEndpoint(String parentClassName, String methodName) { return String.format("%s.%s#%s", parentClassName, methodName, 1); } @@ -46,35 +45,32 @@ public static String getMethodName() { *

* Results are returned in a {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. * - * @param clazz The type of the body, for type erasure - * @param message The message to send. - * @param The type of protobuf object. + * @param message The message to send. * @return The JobID of the message. This can be used to find the appropriate {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. */ - public > JobID sendMessage(Class clazz, TRequest message) { + public JobID sendMessage(AbstractMessage message) { String serviceName = getClassName(); String rpcName = getMethodName(); + String rpcEndpoint = getRpcEndpoint(serviceName, rpcName); - return sendMessageOrNotification(clazz, getRpcName(serviceName, rpcName), message, false); + return sendMessageOrNotification(message.getClass(), rpcEndpoint, message, false); } /** * Sends a notification. * - * @param clazz The type of the body, for type erasure - * @param message The message to send. - * @param The type of protobuf object. + * @param message The message to send. */ - public > void sendNotification(Class clazz, TRequest message) { + public void sendNotification(AbstractMessage message) { String serviceName = getClassName(); String rpcName = getMethodName(); + String rpcEndpoint = getRpcEndpoint(serviceName, rpcName); - - sendMessageOrNotification(clazz, getRpcName(serviceName, rpcName), message, true); + sendMessageOrNotification(message.getClass(), rpcEndpoint, message, true); } - private > JobID sendMessageOrNotification - (Class clazz, String rpcName, TRequest message, Boolean isNotification) { + private JobID sendMessageOrNotification + (Class clazz, String rpcName, AbstractMessage message, Boolean isNotification) { if (isNotification) { steamUnifiedMessages.sendNotification(clazz, rpcName, message); From 80ee87419c6bc21a9d23919cffa061003d8a1425 Mon Sep 17 00:00:00 2001 From: LossyDragon Date: Fri, 6 Jan 2023 15:21:16 -0600 Subject: [PATCH 17/22] Implement TwoFactor --- .../dragonbra/javasteam/rpc/ITwoFactor.java | 45 ++++ .../javasteam/rpc/service/TwoFactor.java | 74 +++++++ .../steammessages_twofactor.steamclient.proto | 204 ++++++++++++++++++ 3 files changed, 323 insertions(+) create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/ITwoFactor.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/TwoFactor.java create mode 100644 src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_twofactor.steamclient.proto diff --git a/src/main/java/in/dragonbra/javasteam/rpc/ITwoFactor.java b/src/main/java/in/dragonbra/javasteam/rpc/ITwoFactor.java new file mode 100644 index 00000000..c5b67bc7 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/ITwoFactor.java @@ -0,0 +1,45 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesTwofactorSteamclient.*; +import in.dragonbra.javasteam.types.JobID; + +/** + * @author Lossy + * @since 2023-01-06 + */ +@SuppressWarnings("unused") +public interface ITwoFactor { + + /* CTwoFactor_Status_Response */ + JobID QueryStatus(CTwoFactor_Status_Request request); + + /* CTwoFactor_AddAuthenticator_Response */ + JobID AddAuthenticator(CTwoFactor_AddAuthenticator_Request request); + + /* CTwoFactor_SendEmail_Response */ + JobID SendEmail(CTwoFactor_SendEmail_Request request); + + /* CTwoFactor_FinalizeAddAuthenticator_Response */ + JobID FinalizeAddAuthenticator(CTwoFactor_FinalizeAddAuthenticator_Request request); + + /* CTwoFactor_UpdateTokenVersion_Response */ + JobID UpdateTokenVersion(CTwoFactor_UpdateTokenVersion_Request request); + + /* CTwoFactor_RemoveAuthenticator_Response */ + JobID RemoveAuthenticator(CTwoFactor_RemoveAuthenticator_Request request); + + /* CTwoFactor_CreateEmergencyCodes_Response */ + JobID CreateEmergencyCodes(CTwoFactor_CreateEmergencyCodes_Request request); + + /* CTwoFactor_DestroyEmergencyCodes_Response */ + JobID DestroyEmergencyCodes(CTwoFactor_DestroyEmergencyCodes_Request request); + + /* CTwoFactor_ValidateToken_Response */ + JobID ValidateToken(CTwoFactor_ValidateToken_Request request); + + /* CTwoFactor_RemoveAuthenticatorViaChallengeStart_Response */ + JobID RemoveAuthenticatorViaChallengeStart(CTwoFactor_RemoveAuthenticatorViaChallengeStart_Request request); + + /* CTwoFactor_RemoveAuthenticatorViaChallengeContinue_Response */ + JobID RemoveAuthenticatorViaChallengeContinue(CTwoFactor_RemoveAuthenticatorViaChallengeContinue_Request request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/TwoFactor.java b/src/main/java/in/dragonbra/javasteam/rpc/service/TwoFactor.java new file mode 100644 index 00000000..4abd94e6 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/TwoFactor.java @@ -0,0 +1,74 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesTwofactorSteamclient; +import in.dragonbra.javasteam.rpc.ITwoFactor; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; +import in.dragonbra.javasteam.types.JobID; + +/** + * @author Lossy + * @since 2023-01-06 + */ +@SuppressWarnings("unused") +public class TwoFactor extends UnifiedService implements ITwoFactor { + + public TwoFactor(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public JobID QueryStatus(SteammessagesTwofactorSteamclient.CTwoFactor_Status_Request request) { + return sendMessage(request); + } + + @Override + public JobID AddAuthenticator(SteammessagesTwofactorSteamclient.CTwoFactor_AddAuthenticator_Request request) { + return sendMessage(request); + } + + @Override + public JobID SendEmail(SteammessagesTwofactorSteamclient.CTwoFactor_SendEmail_Request request) { + return sendMessage(request); + } + + @Override + public JobID FinalizeAddAuthenticator(SteammessagesTwofactorSteamclient.CTwoFactor_FinalizeAddAuthenticator_Request request) { + return sendMessage(request); + } + + @Override + public JobID UpdateTokenVersion(SteammessagesTwofactorSteamclient.CTwoFactor_UpdateTokenVersion_Request request) { + return sendMessage(request); + } + + @Override + public JobID RemoveAuthenticator(SteammessagesTwofactorSteamclient.CTwoFactor_RemoveAuthenticator_Request request) { + return sendMessage(request); + } + + @Override + public JobID CreateEmergencyCodes(SteammessagesTwofactorSteamclient.CTwoFactor_CreateEmergencyCodes_Request request) { + return sendMessage(request); + } + + @Override + public JobID DestroyEmergencyCodes(SteammessagesTwofactorSteamclient.CTwoFactor_DestroyEmergencyCodes_Request request) { + return sendMessage(request); + } + + @Override + public JobID ValidateToken(SteammessagesTwofactorSteamclient.CTwoFactor_ValidateToken_Request request) { + return sendMessage(request); + } + + @Override + public JobID RemoveAuthenticatorViaChallengeStart(SteammessagesTwofactorSteamclient.CTwoFactor_RemoveAuthenticatorViaChallengeStart_Request request) { + return sendMessage(request); + } + + @Override + public JobID RemoveAuthenticatorViaChallengeContinue(SteammessagesTwofactorSteamclient.CTwoFactor_RemoveAuthenticatorViaChallengeContinue_Request request) { + return sendMessage(request); + } +} diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_twofactor.steamclient.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_twofactor.steamclient.proto new file mode 100644 index 00000000..84161417 --- /dev/null +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_twofactor.steamclient.proto @@ -0,0 +1,204 @@ +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_base.proto"; +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_unified_base.steamclient.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; + +option optimize_for = SPEED; +option java_generic_services = false; + +message CTwoFactor_Status_Request { + optional fixed64 steamid = 1 [(description) = "steamid to use"]; +} + +message CTwoFactor_Status_Response { + optional uint32 state = 1 [(description) = "Authenticator state"]; + optional uint32 inactivation_reason = 2 [(description) = "Inactivation reason (if any)"]; + optional uint32 authenticator_type = 3 [(description) = "Type of authenticator"]; + optional bool authenticator_allowed = 4 [(description) = "Account allowed to have an authenticator?"]; + optional uint32 steamguard_scheme = 5 [(description) = "Steam Guard scheme in effect"]; + optional string token_gid = 6 [(description) = "String rep of token GID assigned by server"]; + optional bool email_validated = 7 [(description) = "Account has verified email capability"]; + optional string device_identifier = 8 [(description) = "Authenticator (phone) identifier"]; + optional uint32 time_created = 9 [(description) = "When the token was created"]; + optional uint32 revocation_attempts_remaining = 10 [(description) = "Number of revocation code attempts remaining"]; + optional string classified_agent = 11 [(description) = "Agent that added the authenticator (e.g., ios / android / other)"]; + optional bool allow_external_authenticator = 12 [(description) = "Allow a third-party authenticator (in addition to two-factor)"]; + optional uint32 time_transferred = 13 [(description) = "When the token was transferred from another device, if applicable"]; + optional uint32 version = 14 [(description) = "Current token version"]; +} + +message CTwoFactor_AddAuthenticator_Request { + optional fixed64 steamid = 1 [(description) = "steamid to use"]; + optional uint64 authenticator_time = 2 [(description) = "Current authenticator time"]; + optional fixed64 serial_number = 3 [(description) = "locally computed serial (deprecated)"]; + optional uint32 authenticator_type = 4 [(description) = "Authenticator type"]; + optional string device_identifier = 5 [(description) = "Authenticator identifier"]; + optional string sms_phone_id = 6 [(description) = "ID of phone to use for SMS verification"]; + repeated string http_headers = 7 [(description) = "HTTP headers alternating by K/V"]; + optional uint32 version = 8 [default = 1, (description) = "What the version of our token should be"]; +} + +message CTwoFactor_AddAuthenticator_Response { + optional bytes shared_secret = 1 [(description) = "Shared secret between server and authenticator"]; + optional fixed64 serial_number = 2 [(description) = "Authenticator serial number (unique per token)"]; + optional string revocation_code = 3 [(description) = "code used to revoke authenticator"]; + optional string uri = 4 [(description) = "URI for QR code generation"]; + optional uint64 server_time = 5 [(description) = "Current server time"]; + optional string account_name = 6 [(description) = "Account name to display on token client"]; + optional string token_gid = 7 [(description) = "Token GID assigned by server"]; + optional bytes identity_secret = 8 [(description) = "Secret used for identity attestation (e.g., for eventing)"]; + optional bytes secret_1 = 9 [(description) = "Spare shared secret"]; + optional int32 status = 10 [(description) = "Result code"]; + optional string phone_number_hint = 11 [(description) = "a portion of the phone number the SMS code was sent to"]; +} + +message CTwoFactor_SendEmail_Request { + optional fixed64 steamid = 1 [(description) = "Steamid to use"]; + optional uint32 email_type = 2 [(description) = "Type of email to send (ETwoFactorEmailType::*)"]; + optional bool include_activation_code = 3 [(description) = "Include activation code in email parameters"]; +} + +message CTwoFactor_SendEmail_Response { +} + +message CTwoFactor_FinalizeAddAuthenticator_Request { + optional fixed64 steamid = 1 [(description) = "steamid to use"]; + optional string authenticator_code = 2 [(description) = "Current auth code"]; + optional uint64 authenticator_time = 3 [(description) = "Current authenticator time"]; + optional string activation_code = 4 [(description) = "Activation code from out-of-band message"]; + repeated string http_headers = 5 [(description) = "HTTP headers alternating by K/V"]; + optional bool validate_sms_code = 6 [(description) = "When finalizing with an SMS code, pass the request on to the PhoneService to update its state too."]; +} + +message CTwoFactor_FinalizeAddAuthenticator_Response { + optional bool success = 1 [(description) = "True if succeeded, or want more tries"]; + optional bool want_more = 2 [(description) = "True if want more tries"]; + optional uint64 server_time = 3 [(description) = "Current server time"]; + optional int32 status = 4 [(description) = "Result code"]; +} + +message CTwoFactor_UpdateTokenVersion_Request { + optional fixed64 steamid = 1; + optional uint32 version = 2 [(description) = "What the version of our token should be"]; + optional bytes signature = 3 [(description) = "HMAC digest over user's private key"]; +} + +message CTwoFactor_UpdateTokenVersion_Response { +} + +message CTwoFactor_RemoveAuthenticator_Request { + optional string revocation_code = 2 [(description) = "Password needed to remove token"]; + optional uint32 revocation_reason = 5 [(description) = "Reason the authenticator is being removed"]; + optional uint32 steamguard_scheme = 6 [(description) = "Type of Steam Guard to use once token is removed"]; + optional bool remove_all_steamguard_cookies = 7 [(description) = "Remove all steamguard cookies"]; +} + +message CTwoFactor_RemoveAuthenticator_Response { + optional bool success = 1 [(description) = "True if request succeeeded. The mobile app checks this."]; + optional uint64 server_time = 3 [(description) = "Current server time"]; + optional uint32 revocation_attempts_remaining = 5 [(description) = "Number of revocation code attempts remaining"]; +} + +message CTwoFactor_CreateEmergencyCodes_Request { + optional string code = 1; +} + +message CTwoFactor_CreateEmergencyCodes_Response { + repeated string codes = 1 [(description) = "Emergency codes"]; +} + +message CTwoFactor_DestroyEmergencyCodes_Request { + optional fixed64 steamid = 1 [(description) = "steamid to use"]; +} + +message CTwoFactor_DestroyEmergencyCodes_Response { +} + +message CTwoFactor_ValidateToken_Request { + optional string code = 1 [(description) = "code to validate"]; +} + +message CTwoFactor_ValidateToken_Response { + optional bool valid = 1 [(description) = "result of validation"]; +} + +message CTwoFactor_RemoveAuthenticatorViaChallengeStart_Request { +} + +message CTwoFactor_RemoveAuthenticatorViaChallengeStart_Response { + optional bool success = 1 [(description) = "True if succeeded, or want more tries with an authenticator_code"]; +} + +message CTwoFactor_RemoveAuthenticatorViaChallengeContinue_Request { + optional string sms_code = 1 [(description) = "Code from SMS"]; + optional bool generate_new_token = 2 [(description) = "Generate new token (instead of removing old one)"]; + optional uint32 version = 3 [default = 1, (description) = "What the version of our token should be"]; +} + +message CRemoveAuthenticatorViaChallengeContinue_Replacement_Token { + optional bytes shared_secret = 1 [(description) = "Shared secret between server and authenticator"]; + optional fixed64 serial_number = 2 [(description) = "Authenticator serial number (unique per token)"]; + optional string revocation_code = 3 [(description) = "code used to revoke authenticator"]; + optional string uri = 4 [(description) = "URI for QR code generation"]; + optional uint64 server_time = 5 [(description) = "Current server time"]; + optional string account_name = 6 [(description) = "Account name to display on token client"]; + optional string token_gid = 7 [(description) = "Token GID assigned by server"]; + optional bytes identity_secret = 8 [(description) = "Secret used for identity attestation (e.g., for eventing)"]; + optional bytes secret_1 = 9 [(description) = "Spare shared secret"]; + optional int32 status = 10 [(description) = "Result code"]; + optional uint32 steamguard_scheme = 11 [(description) = "Type of Steam Guard to use once token is removed"]; + optional fixed64 steamid = 12 [(description) = "steamid that owns the secret"]; +} + +message CTwoFactor_RemoveAuthenticatorViaChallengeContinue_Response { + optional bool success = 1 [(description) = "True if succeeded, or want more tries with an authenticator_code"]; + optional .CRemoveAuthenticatorViaChallengeContinue_Replacement_Token replacement_token = 2 [(description) = "Fresh secret to install"]; +} + +service TwoFactor { + option (service_description) = "Two Factor Authentication Service"; + + rpc QueryStatus (.CTwoFactor_Status_Request) returns (.CTwoFactor_Status_Response) { + option (method_description) = "Get two-factor authentication settings for the logged-in account"; + } + + rpc AddAuthenticator (.CTwoFactor_AddAuthenticator_Request) returns (.CTwoFactor_AddAuthenticator_Response) { + option (method_description) = "Add two-factor authenticator to the logged-in account"; + } + + rpc SendEmail (.CTwoFactor_SendEmail_Request) returns (.CTwoFactor_SendEmail_Response) { + option (method_description) = "Send email to the account"; + } + + rpc FinalizeAddAuthenticator (.CTwoFactor_FinalizeAddAuthenticator_Request) returns (.CTwoFactor_FinalizeAddAuthenticator_Response) { + option (method_description) = "Finalize two-factor authentication addition to the logged-in account"; + } + + rpc UpdateTokenVersion (.CTwoFactor_UpdateTokenVersion_Request) returns (.CTwoFactor_UpdateTokenVersion_Response) { + option (method_description) = "Update the version for my token"; + } + + rpc RemoveAuthenticator (.CTwoFactor_RemoveAuthenticator_Request) returns (.CTwoFactor_RemoveAuthenticator_Response) { + option (method_description) = "Remove two-factor authentication addition from the logged-in account"; + } + + rpc CreateEmergencyCodes (.CTwoFactor_CreateEmergencyCodes_Request) returns (.CTwoFactor_CreateEmergencyCodes_Response) { + option (method_description) = "Generate emergency authenticator codes"; + } + + rpc DestroyEmergencyCodes (.CTwoFactor_DestroyEmergencyCodes_Request) returns (.CTwoFactor_DestroyEmergencyCodes_Response) { + option (method_description) = "Destroy emergency authenticator codes for the account"; + } + + rpc ValidateToken (.CTwoFactor_ValidateToken_Request) returns (.CTwoFactor_ValidateToken_Response) { + option (method_description) = "Validate (and consume) a token"; + } + + rpc RemoveAuthenticatorViaChallengeStart (.CTwoFactor_RemoveAuthenticatorViaChallengeStart_Request) returns (.CTwoFactor_RemoveAuthenticatorViaChallengeStart_Response) { + option (method_description) = "Start challenge-based authenticator removal"; + } + + rpc RemoveAuthenticatorViaChallengeContinue (.CTwoFactor_RemoveAuthenticatorViaChallengeContinue_Request) returns (.CTwoFactor_RemoveAuthenticatorViaChallengeContinue_Response) { + option (method_description) = "Continue challenge-based authenticator removal"; + } +} From 1c4f19262b711428b2f8b7d05ecae43f1098a8a5 Mon Sep 17 00:00:00 2001 From: Lossy Date: Fri, 6 Jan 2023 23:28:39 -0600 Subject: [PATCH 18/22] Some more refinement --- .../SampleUnifiedMessages.java | 2 +- .../SteamUnifiedMessages.java | 10 ++++------ .../steamunifiedmessages/UnifiedService.java | 17 ++++++++--------- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_8UnifiedMessages/SampleUnifiedMessages.java b/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_8UnifiedMessages/SampleUnifiedMessages.java index 2bb008db..d6b2a50b 100644 --- a/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_8UnifiedMessages/SampleUnifiedMessages.java +++ b/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_8UnifiedMessages/SampleUnifiedMessages.java @@ -189,7 +189,7 @@ private void onLoggedOn(LoggedOnCallback callback) { // alternatively, the request can be made using SteamUnifiedMessages directly, but then you must build the service request name manually // the name format is in the form of .# - badgeRequest = steamUnifiedMessages.sendMessage(CPlayer_GetGameBadgeLevels_Request.class, "Player.GetGameBadgeLevels#1", badgeLevelsRequest.build()); + badgeRequest = steamUnifiedMessages.sendMessage("Player.GetGameBadgeLevels#1", badgeLevelsRequest.build()); } private void onLoggedOff(LoggedOffCallback callback) { diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java index 19cbd1ad..8b20a380 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java @@ -58,13 +58,12 @@ public void handleMsg(IPacketMsg packetMsg) { * Sends a message. * Results are returned in a {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. * - * @param clazz The type of the body, for type erasure * @param rpcName Name of the RPC endpoint. Takes the format ServiceName.RpcName * @param message The message to send. * @param The type of protobuf object. * @return The JobID of the request. This can be used to find the appropriate {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. */ - public > JobID sendMessage(Class clazz, String rpcName, AbstractMessage message) { + public > JobID sendMessage(String rpcName, GeneratedMessageV3 message) { if (message == null) { throw new IllegalArgumentException("message is null"); } @@ -72,7 +71,7 @@ public > JobID sendMessage JobID jobID = client.getNextJobID(); EMsg eMsg = client.getSteamID() == null ? EMsg.ServiceMethodCallFromClientNonAuthed : EMsg.ServiceMethodCallFromClient; - ClientMsgProtobuf msg = new ClientMsgProtobuf<>(clazz, eMsg); + ClientMsgProtobuf msg = new ClientMsgProtobuf<>(message.getClass(), eMsg); msg.setSourceJobID(jobID); msg.getHeader().getProto().setTargetJobName(rpcName); msg.getBody().mergeFrom(message); @@ -85,18 +84,17 @@ public > JobID sendMessage /** * Sends a notification. * - * @param clazz The type of the body, for type erasure * @param rpcName Name of the RPC endpoint. Takes the format ServiceName.RpcName * @param message The message to send. * @param The type of protobuf object. */ - public > void sendNotification(Class clazz, String rpcName, AbstractMessage message) { + public > void sendNotification(String rpcName, GeneratedMessageV3 message) { if (message == null) { throw new IllegalArgumentException("message is null"); } EMsg eMsg = client.getSteamID() == null ? EMsg.ServiceMethodCallFromClientNonAuthed : EMsg.ServiceMethodCallFromClient; - ClientMsgProtobuf msg = new ClientMsgProtobuf<>(clazz, eMsg); + ClientMsgProtobuf msg = new ClientMsgProtobuf<>(message.getClass(), eMsg); msg.getHeader().getProto().setTargetJobName(rpcName); msg.getBody().mergeFrom(message); diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java index 1bb88004..91c1d72b 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/UnifiedService.java @@ -1,6 +1,6 @@ package in.dragonbra.javasteam.steam.handlers.steamunifiedmessages; -import com.google.protobuf.AbstractMessage; +import com.google.protobuf.GeneratedMessageV3; import in.dragonbra.javasteam.types.JobID; /** @@ -48,12 +48,12 @@ public static String getMethodName() { * @param message The message to send. * @return The JobID of the message. This can be used to find the appropriate {@link in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.callback.ServiceMethodResponse}. */ - public JobID sendMessage(AbstractMessage message) { + public JobID sendMessage(GeneratedMessageV3 message) { String serviceName = getClassName(); String rpcName = getMethodName(); String rpcEndpoint = getRpcEndpoint(serviceName, rpcName); - return sendMessageOrNotification(message.getClass(), rpcEndpoint, message, false); + return sendMessageOrNotification(rpcEndpoint, message, false); } /** @@ -61,22 +61,21 @@ public JobID sendMessage(AbstractMessage message) { * * @param message The message to send. */ - public void sendNotification(AbstractMessage message) { + public void sendNotification(GeneratedMessageV3 message) { String serviceName = getClassName(); String rpcName = getMethodName(); String rpcEndpoint = getRpcEndpoint(serviceName, rpcName); - sendMessageOrNotification(message.getClass(), rpcEndpoint, message, true); + sendMessageOrNotification(rpcEndpoint, message, true); } - private JobID sendMessageOrNotification - (Class clazz, String rpcName, AbstractMessage message, Boolean isNotification) { + private JobID sendMessageOrNotification(String rpcName, GeneratedMessageV3 message, Boolean isNotification) { if (isNotification) { - steamUnifiedMessages.sendNotification(clazz, rpcName, message); + steamUnifiedMessages.sendNotification(rpcName, message); return null; } - return steamUnifiedMessages.sendMessage(clazz, rpcName, message); + return steamUnifiedMessages.sendMessage(rpcName, message); } } From 46f2ec1f10f88a31c81d5683291f7ef49dd0ed45 Mon Sep 17 00:00:00 2001 From: Lossy Date: Sat, 7 Jan 2023 00:14:46 -0600 Subject: [PATCH 19/22] Add 'optimize_for' for missing protobufs --- .../protobufs/steamclient/steammessages_chat.steamclient.proto | 1 + .../steamclient/steammessages_friendmessages.steamclient.proto | 1 + .../steamclient/steammessages_parental.steamclient.proto | 1 + 3 files changed, 3 insertions(+) diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_chat.steamclient.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_chat.steamclient.proto index 2f9e5f03..9f7ec371 100644 --- a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_chat.steamclient.proto +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_chat.steamclient.proto @@ -3,6 +3,7 @@ import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_clientserver_ option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; +option optimize_for = SPEED; option java_generic_services = false; enum EChatRoomJoinState { diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_friendmessages.steamclient.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_friendmessages.steamclient.proto index b4e1e12a..e4142543 100644 --- a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_friendmessages.steamclient.proto +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_friendmessages.steamclient.proto @@ -2,6 +2,7 @@ import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_unified_base. option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; +option optimize_for = SPEED; option java_generic_services = false; enum EMessageReactionType { diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_parental.steamclient.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_parental.steamclient.proto index 5dba6e78..4e3be3ce 100644 --- a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_parental.steamclient.proto +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_parental.steamclient.proto @@ -2,6 +2,7 @@ import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_unified_base. option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; +option optimize_for = SPEED; option java_generic_services = false; message ParentalApp { From 34bc49be9bc7b663e89e46f4330dc1192aeb964a Mon Sep 17 00:00:00 2001 From: Lossy Date: Sat, 7 Jan 2023 00:18:44 -0600 Subject: [PATCH 20/22] Implement Auth Steam is starting to use a new login flow, so we're gunna prepare for this. SteamKit currently has a PR in draft figuring out how to implement this new login style. --- .../javasteam/rpc/IAuthentication.java | 42 ++ .../javasteam/rpc/IAuthenticationSupport.java | 24 + .../dragonbra/javasteam/rpc/ICloudGaming.java | 19 + .../javasteam/rpc/service/Authentication.java | 69 +++ .../rpc/service/AuthenticationSupport.java | 39 ++ .../javasteam/rpc/service/CloudGaming.java | 29 ++ .../steammessages_auth.steamclient.proto | 410 ++++++++++++++++++ 7 files changed, 632 insertions(+) create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IAuthentication.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/IAuthenticationSupport.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/ICloudGaming.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/Authentication.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/AuthenticationSupport.java create mode 100644 src/main/java/in/dragonbra/javasteam/rpc/service/CloudGaming.java create mode 100644 src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_auth.steamclient.proto diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IAuthentication.java b/src/main/java/in/dragonbra/javasteam/rpc/IAuthentication.java new file mode 100644 index 00000000..143f28b6 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IAuthentication.java @@ -0,0 +1,42 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesAuthSteamclient.*; +import in.dragonbra.javasteam.types.JobID; + +/** + * @author Lossy + * @since 2023-01-07 + */ +@SuppressWarnings("unused") +public interface IAuthentication { + + /* CAuthentication_GetPasswordRSAPublicKey_Response */ + JobID GetPasswordRSAPublicKey(CAuthentication_GetPasswordRSAPublicKey_Request request); + + /* CAuthentication_BeginAuthSessionViaQR_Response */ + JobID BeginAuthSessionViaQR(CAuthentication_BeginAuthSessionViaQR_Request request); + + /* CAuthentication_BeginAuthSessionViaCredentials_Response */ + JobID BeginAuthSessionViaCredentials(CAuthentication_BeginAuthSessionViaCredentials_Request request); + + /* CAuthentication_PollAuthSessionStatus_Response */ + JobID PollAuthSessionStatus(CAuthentication_PollAuthSessionStatus_Request request); + + /* CAuthentication_GetAuthSessionInfo_Response */ + JobID GetAuthSessionInfo(CAuthentication_GetAuthSessionInfo_Request request); + + /* CAuthentication_UpdateAuthSessionWithMobileConfirmation_Response */ + JobID UpdateAuthSessionWithMobileConfirmation(CAuthentication_UpdateAuthSessionWithMobileConfirmation_Request request); + + /* CAuthentication_UpdateAuthSessionWithSteamGuardCode_Response */ + JobID UpdateAuthSessionWithSteamGuardCode(CAuthentication_UpdateAuthSessionWithSteamGuardCode_Request request); + + /* CAuthentication_AccessToken_GenerateForApp_Response */ + JobID GenerateAccessTokenForApp(CAuthentication_AccessToken_GenerateForApp_Request request); + + /* CAuthentication_GetAuthSessionsForAccount_Response */ + JobID GetAuthSessionsForAccount(CAuthentication_GetAuthSessionsForAccount_Request request); + + /* CAuthentication_MigrateMobileSession_Response */ + JobID MigrateMobileSession(CAuthentication_MigrateMobileSession_Request request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/IAuthenticationSupport.java b/src/main/java/in/dragonbra/javasteam/rpc/IAuthenticationSupport.java new file mode 100644 index 00000000..6d9cc47a --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/IAuthenticationSupport.java @@ -0,0 +1,24 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesAuthSteamclient.*; +import in.dragonbra.javasteam.types.JobID; + +/** + * @author Lossy + * @since 2023-01-07 + */ +@SuppressWarnings("unused") +public interface IAuthenticationSupport { + + /* CAuthenticationSupport_QueryRefreshTokensByAccount_Response */ + JobID QueryRefreshTokensByAccount(CAuthenticationSupport_QueryRefreshTokensByAccount_Request request); + + /* CAuthenticationSupport_QueryRefreshTokenByID_Response */ + JobID QueryRefreshTokenByID(CAuthenticationSupport_QueryRefreshTokenByID_Request request); + + /* CAuthenticationSupport_RevokeToken_Response */ + JobID RevokeToken(CAuthenticationSupport_RevokeToken_Request request); + + /* CAuthenticationSupport_GetTokenHistory_Response */ + JobID GetTokenHistory(CAuthenticationSupport_GetTokenHistory_Request request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/ICloudGaming.java b/src/main/java/in/dragonbra/javasteam/rpc/ICloudGaming.java new file mode 100644 index 00000000..ed993dbf --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/ICloudGaming.java @@ -0,0 +1,19 @@ +package in.dragonbra.javasteam.rpc; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesAuthSteamclient.CCloudGaming_CreateNonce_Request; +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesAuthSteamclient.CCloudGaming_GetTimeRemaining_Request; +import in.dragonbra.javasteam.types.JobID; + +/** + * @author Lossy + * @since 2023-01-07 + */ +@SuppressWarnings("unused") +public interface ICloudGaming { + + /* CCloudGaming_CreateNonce_Response */ + JobID CreateNonce(CCloudGaming_CreateNonce_Request request); + + /* CCloudGaming_GetTimeRemaining_Response */ + JobID GetTimeRemaining(CCloudGaming_GetTimeRemaining_Request request); +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/Authentication.java b/src/main/java/in/dragonbra/javasteam/rpc/service/Authentication.java new file mode 100644 index 00000000..6d5d8a81 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/Authentication.java @@ -0,0 +1,69 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesAuthSteamclient; +import in.dragonbra.javasteam.rpc.IAuthentication; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; +import in.dragonbra.javasteam.types.JobID; + +/** + * @author Lossy + * @since 2023-01-07 + */ +@SuppressWarnings("unused") +public class Authentication extends UnifiedService implements IAuthentication { + + public Authentication(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public JobID GetPasswordRSAPublicKey(SteammessagesAuthSteamclient.CAuthentication_GetPasswordRSAPublicKey_Request request) { + return sendMessage(request); + } + + @Override + public JobID BeginAuthSessionViaQR(SteammessagesAuthSteamclient.CAuthentication_BeginAuthSessionViaQR_Request request) { + return sendMessage(request); + } + + @Override + public JobID BeginAuthSessionViaCredentials(SteammessagesAuthSteamclient.CAuthentication_BeginAuthSessionViaCredentials_Request request) { + return sendMessage(request); + } + + @Override + public JobID PollAuthSessionStatus(SteammessagesAuthSteamclient.CAuthentication_PollAuthSessionStatus_Request request) { + return sendMessage(request); + } + + @Override + public JobID GetAuthSessionInfo(SteammessagesAuthSteamclient.CAuthentication_GetAuthSessionInfo_Request request) { + return sendMessage(request); + } + + @Override + public JobID UpdateAuthSessionWithMobileConfirmation(SteammessagesAuthSteamclient.CAuthentication_UpdateAuthSessionWithMobileConfirmation_Request request) { + return sendMessage(request); + } + + @Override + public JobID UpdateAuthSessionWithSteamGuardCode(SteammessagesAuthSteamclient.CAuthentication_UpdateAuthSessionWithSteamGuardCode_Request request) { + return sendMessage(request); + } + + @Override + public JobID GenerateAccessTokenForApp(SteammessagesAuthSteamclient.CAuthentication_AccessToken_GenerateForApp_Request request) { + return sendMessage(request); + } + + @Override + public JobID GetAuthSessionsForAccount(SteammessagesAuthSteamclient.CAuthentication_GetAuthSessionsForAccount_Request request) { + return sendMessage(request); + } + + @Override + public JobID MigrateMobileSession(SteammessagesAuthSteamclient.CAuthentication_MigrateMobileSession_Request request) { + return sendMessage(request); + } +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/AuthenticationSupport.java b/src/main/java/in/dragonbra/javasteam/rpc/service/AuthenticationSupport.java new file mode 100644 index 00000000..cd6f8e46 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/AuthenticationSupport.java @@ -0,0 +1,39 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesAuthSteamclient; +import in.dragonbra.javasteam.rpc.IAuthenticationSupport; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; +import in.dragonbra.javasteam.types.JobID; + +/** + * @author Lossy + * @since 2023-01-07 + */ +@SuppressWarnings("unused") +public class AuthenticationSupport extends UnifiedService implements IAuthenticationSupport { + + public AuthenticationSupport(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public JobID QueryRefreshTokensByAccount(SteammessagesAuthSteamclient.CAuthenticationSupport_QueryRefreshTokensByAccount_Request request) { + return sendMessage(request); + } + + @Override + public JobID QueryRefreshTokenByID(SteammessagesAuthSteamclient.CAuthenticationSupport_QueryRefreshTokenByID_Request request) { + return sendMessage(request); + } + + @Override + public JobID RevokeToken(SteammessagesAuthSteamclient.CAuthenticationSupport_RevokeToken_Request request) { + return sendMessage(request); + } + + @Override + public JobID GetTokenHistory(SteammessagesAuthSteamclient.CAuthenticationSupport_GetTokenHistory_Request request) { + return sendMessage(request); + } +} diff --git a/src/main/java/in/dragonbra/javasteam/rpc/service/CloudGaming.java b/src/main/java/in/dragonbra/javasteam/rpc/service/CloudGaming.java new file mode 100644 index 00000000..d5e5f972 --- /dev/null +++ b/src/main/java/in/dragonbra/javasteam/rpc/service/CloudGaming.java @@ -0,0 +1,29 @@ +package in.dragonbra.javasteam.rpc.service; + +import in.dragonbra.javasteam.protobufs.steamclient.SteammessagesAuthSteamclient; +import in.dragonbra.javasteam.rpc.ICloudGaming; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.SteamUnifiedMessages; +import in.dragonbra.javasteam.steam.handlers.steamunifiedmessages.UnifiedService; +import in.dragonbra.javasteam.types.JobID; + +/** + * @author Lossy + * @since 2023-01-07 + */ +@SuppressWarnings("unused") +public class CloudGaming extends UnifiedService implements ICloudGaming { + + public CloudGaming(SteamUnifiedMessages steamUnifiedMessages) { + super(steamUnifiedMessages); + } + + @Override + public JobID CreateNonce(SteammessagesAuthSteamclient.CCloudGaming_CreateNonce_Request request) { + return sendMessage(request); + } + + @Override + public JobID GetTimeRemaining(SteammessagesAuthSteamclient.CCloudGaming_GetTimeRemaining_Request request) { + return sendMessage(request); + } +} diff --git a/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_auth.steamclient.proto b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_auth.steamclient.proto new file mode 100644 index 00000000..759107b0 --- /dev/null +++ b/src/main/proto/in/dragonbra/javasteam/protobufs/steamclient/steammessages_auth.steamclient.proto @@ -0,0 +1,410 @@ +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_base.proto"; +import "in/dragonbra/javasteam/protobufs/steamclient/steammessages_unified_base.steamclient.proto"; +import "in/dragonbra/javasteam/protobufs/steamclient/enums.proto"; + +option java_package = "in.dragonbra.javasteam.protobufs.steamclient"; + +option optimize_for = SPEED; +option java_generic_services = false; + +enum EAuthTokenPlatformType { + k_EAuthTokenPlatformType_Unknown = 0; + k_EAuthTokenPlatformType_SteamClient = 1; + k_EAuthTokenPlatformType_WebBrowser = 2; + k_EAuthTokenPlatformType_MobileApp = 3; +} + +enum EAuthSessionGuardType { + k_EAuthSessionGuardType_Unknown = 0; + k_EAuthSessionGuardType_None = 1; + k_EAuthSessionGuardType_EmailCode = 2; + k_EAuthSessionGuardType_DeviceCode = 3; + k_EAuthSessionGuardType_DeviceConfirmation = 4; + k_EAuthSessionGuardType_EmailConfirmation = 5; + k_EAuthSessionGuardType_MachineToken = 6; +} + +enum EAuthSessionSecurityHistory { + k_EAuthSessionSecurityHistory_Invalid = 0; + k_EAuthSessionSecurityHistory_UsedPreviously = 1; + k_EAuthSessionSecurityHistory_NoPriorHistory = 2; +} + +enum EAuthTokenRevokeAction { + k_EAuthTokenRevokeLogout = 0; + k_EAuthTokenRevokePermanent = 1; + k_EAuthTokenRevokeReplaced = 2; + k_EAuthTokenRevokeSupport = 3; + k_EAuthTokenRevokeConsume = 4; +} + +enum EAuthTokenState { + k_EAuthTokenState_Invalid = 0; + k_EAuthTokenState_New = 1; + k_EAuthTokenState_Confirmed = 2; + k_EAuthTokenState_Issued = 3; + k_EAuthTokenState_Denied = 4; + k_EAuthTokenState_LoggedOut = 5; + k_EAuthTokenState_Consumed = 6; + k_EAuthTokenState_Revoked = 99; +} + +message CAuthentication_GetPasswordRSAPublicKey_Request { + optional string account_name = 1 [(description) = "user-provided account name to get an RSA key for"]; +} + +message CAuthentication_GetPasswordRSAPublicKey_Response { + optional string publickey_mod = 1 [(description) = "the public key modulus"]; + optional string publickey_exp = 2 [(description) = "the public key exponent"]; + optional uint64 timestamp = 3 [(description) = "the timestamp the key was generated"]; +} + +message CAuthentication_DeviceDetails { + optional string device_friendly_name = 1 [(description) = "User-supplied, or client-supplied, friendly name of device"]; + optional .EAuthTokenPlatformType platform_type = 2 [default = k_EAuthTokenPlatformType_Unknown, (description) = "EAuthTokenPlatformType, claimed, of device"]; + optional int32 os_type = 3 [(description) = "EOSType, claimed, of authorized device"]; + optional uint32 gaming_device_type = 4 [(description) = "EGamingDeviceType, claimed, of authorized device for steam client-type devices"]; +} + +message CAuthentication_BeginAuthSessionViaQR_Request { + optional string device_friendly_name = 1; + optional .EAuthTokenPlatformType platform_type = 2 [default = k_EAuthTokenPlatformType_Unknown]; + optional .CAuthentication_DeviceDetails device_details = 3 [(description) = "User-supplied details about the device attempting to sign in"]; + optional string website_id = 4 [default = "Unknown", (description) = "(EMachineAuthWebDomain) identifier of client requesting auth"]; +} + +message CAuthentication_AllowedConfirmation { + optional .EAuthSessionGuardType confirmation_type = 1 [default = k_EAuthSessionGuardType_Unknown, (description) = "authentication can proceed with this confirmation type"]; + optional string associated_message = 2 [(description) = "message to be interpreted depending on the confirmation type. for email confirmation, this might be the redacted email address to which email was sent."]; +} + +message CAuthentication_BeginAuthSessionViaQR_Response { + optional uint64 client_id = 1 [(description) = "unique identifier of requestor, also used for routing, portion of QR code"]; + optional string challenge_url = 2 [(description) = "URL based on client ID, which will be rendered as QR code"]; + optional bytes request_id = 3 [(description) = "unique request ID to be presented by requestor at poll time - must not be rendered in QR"]; + optional float interval = 4 [(description) = "refresh interval with which requestor should call PollAuthSessionStatus"]; + repeated .CAuthentication_AllowedConfirmation allowed_confirmations = 5 [(description) = "the confirmation types that will be able to confirm the request"]; + optional int32 version = 6 [(description) = "version of the QR data"]; +} + +message CAuthentication_BeginAuthSessionViaCredentials_Request { + optional string device_friendly_name = 1; + optional string account_name = 2; + optional string encrypted_password = 3 [(description) = "password, RSA encrypted client side"]; + optional uint64 encryption_timestamp = 4 [(description) = "timestamp to map to a key - STime"]; + optional bool remember_login = 5 [(description) = "deprecated"]; + optional .EAuthTokenPlatformType platform_type = 6 [default = k_EAuthTokenPlatformType_Unknown]; + optional .ESessionPersistence persistence = 7 [default = k_ESessionPersistence_Persistent, (description) = "whether we are requesting a persistent or an ephemeral session"]; + optional string website_id = 8 [default = "Unknown", (description) = "(EMachineAuthWebDomain) identifier of client requesting auth"]; + optional .CAuthentication_DeviceDetails device_details = 9 [(description) = "User-supplied details about the device attempting to sign in"]; + optional string guard_data = 10 [(description) = "steam guard data for client login"]; + optional uint32 language = 11; +} + +message CAuthentication_BeginAuthSessionViaCredentials_Response { + optional uint64 client_id = 1 [(description) = "unique identifier of requestor, also used for routing"]; + optional bytes request_id = 2 [(description) = "unique request ID to be presented by requestor at poll time - must not be transferred or displayed"]; + optional float interval = 3 [(description) = "refresh interval with which requestor should call PollAuthSessionStatus"]; + repeated .CAuthentication_AllowedConfirmation allowed_confirmations = 4 [(description) = "the confirmation types that will be able to confirm the request"]; + optional uint64 steamid = 5 [(description) = "steamid of the account logging in - will only be included if the credentials were correct"]; + optional string weak_token = 6 [(description) = "partial-authentication token - limited lifetime and scope, included only if credentials were valid"]; + optional string agreement_session_url = 7 [(description) = "agreement the user needs to agree to"]; + optional string extended_error_message = 8 [(description) = "error string to display if supported by the client"]; +} + +message CAuthentication_PollAuthSessionStatus_Request { + optional uint64 client_id = 1; + optional bytes request_id = 2; + optional fixed64 token_to_revoke = 3 [(description) = "If this is set to a token owned by this user, that token will be retired"]; +} + +message CAuthentication_PollAuthSessionStatus_Response { + optional uint64 new_client_id = 1 [(description) = "if challenge is old, this is the new client id"]; + optional string new_challenge_url = 2 [(description) = "if challenge is old, this is the new challenge ID to re-render for mobile confirmation"]; + optional string refresh_token = 3 [(description) = "if login has been confirmed, this is the requestor's new refresh token"]; + optional string access_token = 4 [(description) = "if login has been confirmed, this is a new token subordinate to refresh_token"]; + optional bool had_remote_interaction = 5 [(description) = "whether or not the auth session appears to have had remote interaction from a potential confirmer"]; + optional string account_name = 6 [(description) = "account name of authenticating account, for use by UI layer"]; + optional string new_guard_data = 7 [(description) = "if login has been confirmed, may contain remembered machine ID for future login"]; +} + +message CAuthentication_GetAuthSessionInfo_Request { + optional uint64 client_id = 1 [(description) = "client ID from scanned QR Code, used for routing"]; +} + +message CAuthentication_GetAuthSessionInfo_Response { + optional string ip = 1 [(description) = "IP address of requestor"]; + optional string geoloc = 2 [(description) = "geoloc info of requestor"]; + optional string city = 3 [(description) = "city of requestor"]; + optional string state = 4 [(description) = "state of requestor"]; + optional string country = 5 [(description) = "country of requestor"]; + optional .EAuthTokenPlatformType platform_type = 6 [default = k_EAuthTokenPlatformType_Unknown, (description) = "platform type of requestor"]; + optional string device_friendly_name = 7 [(description) = "name of requestor device"]; + optional int32 version = 8 [(description) = "version field"]; + optional .EAuthSessionSecurityHistory login_history = 9 [default = k_EAuthSessionSecurityHistory_Invalid, (description) = "whether the ip has previuously been used on the account successfully"]; + optional bool requestor_location_mismatch = 10 [(description) = "whether the requestor location matches this requests location"]; + optional bool high_usage_login = 11 [(description) = "whether this login has seen high usage recently"]; + optional .ESessionPersistence requested_persistence = 12 [default = k_ESessionPersistence_Invalid, (description) = "session persistence requestor has indicated they want"]; +} + +message CAuthentication_UpdateAuthSessionWithMobileConfirmation_Request { + optional int32 version = 1 [(description) = "version field"]; + optional uint64 client_id = 2 [(description) = "pending client ID, from scanned QR Code"]; + optional fixed64 steamid = 3 [(description) = "user who wants to login"]; + optional bytes signature = 4 [(description) = "HMAC digest over {version,client_id,steamid} via user's private key"]; + optional bool confirm = 5 [default = false, (description) = "Whether to confirm the login (true) or deny the login (false)"]; + optional .ESessionPersistence persistence = 6 [default = k_ESessionPersistence_Persistent, (description) = "whether we are requesting a persistent or an ephemeral session"]; +} + +message CAuthentication_UpdateAuthSessionWithMobileConfirmation_Response { +} + +message CAuthentication_UpdateAuthSessionWithSteamGuardCode_Request { + optional uint64 client_id = 1 [(description) = "pending client ID, from initialized session"]; + optional fixed64 steamid = 2 [(description) = "user who wants to login"]; + optional string code = 3 [(description) = "confirmation code"]; + optional .EAuthSessionGuardType code_type = 4 [default = k_EAuthSessionGuardType_Unknown, (description) = "type of confirmation code"]; +} + +message CAuthentication_UpdateAuthSessionWithSteamGuardCode_Response { + optional string agreement_session_url = 7 [(description) = "agreement the user needs to agree to"]; +} + +message CAuthentication_AccessToken_GenerateForApp_Request { + optional string refresh_token = 1; + optional fixed64 steamid = 2; +} + +message CAuthentication_AccessToken_GenerateForApp_Response { + optional string access_token = 1; +} + +message CAuthentication_RefreshToken_Enumerate_Request { +} + +message CAuthentication_RefreshToken_Enumerate_Response { + message TokenUsageEvent { + optional uint32 time = 1 [(description) = "Approximate time of history event (may be deliberately fuzzed or omitted)"]; + optional .CMsgIPAddress ip = 2 [(description) = "IP at which event was observed"]; + optional string locale = 3; + optional string country = 4 [(description) = "Location (country code) of event, as inferred from IP"]; + optional string state = 5 [(description) = "Location (state code) of event, as inferred from IP"]; + optional string city = 6 [(description) = "Location (city) of event, as inferred from IP"]; + } + + message RefreshTokenDescription { + optional fixed64 token_id = 1 [(description) = "Persistent token/device identifier"]; + optional string token_description = 2 [(description) = "client-supplied friendly name for the device"]; + optional uint32 time_updated = 3; + optional .EAuthTokenPlatformType platform_type = 4 [default = k_EAuthTokenPlatformType_Unknown, (description) = "gross platform type (mobile/client/browser)"]; + optional bool logged_in = 5 [(description) = "If true, this token is currently valid. False indicates it is a machine token - ok for steamguard if you know the credential"]; + optional uint32 os_platform = 6 [(description) = "EPlatformType - rough classification of device OS, if known"]; + optional uint32 auth_type = 7 [(description) = "EAuthTokenGuardType - device authorization mechanism, if known"]; + optional uint32 gaming_device_type = 8 [(description) = "EGamingDeviceType - classify console/PC/SteamDeck, if known; applies only for Steam Client devices"]; + optional .CAuthentication_RefreshToken_Enumerate_Response.TokenUsageEvent first_seen = 9 [(description) = "Information about original authorization event"]; + optional .CAuthentication_RefreshToken_Enumerate_Response.TokenUsageEvent last_seen = 10 [(description) = "Information about most-recently seen, if known for this device"]; + optional int32 os_type = 11 [(description) = "EOSType - specific device OS, if known"]; + } + + repeated .CAuthentication_RefreshToken_Enumerate_Response.RefreshTokenDescription refresh_tokens = 1; + optional fixed64 requesting_token = 2; +} + +message CAuthentication_GetAuthSessionsForAccount_Request { +} + +message CAuthentication_GetAuthSessionsForAccount_Response { + repeated uint64 client_ids = 1 [(description) = "unique identifier of requestor, also used for routing"]; +} + +message CAuthentication_MigrateMobileSession_Request { + optional fixed64 steamid = 1 [(description) = "Steam ID of the user to migrate"]; + optional string token = 2 [(description) = "WG Token to migrate"]; + optional string signature = 3 [(description) = "Signature over the wg token using the user's 2FA token"]; +} + +message CAuthentication_MigrateMobileSession_Response { + optional string refresh_token = 1; + optional string access_token = 2; +} + +message CAuthentication_RefreshToken_Revoke_Request { + optional fixed64 token_id = 1; + optional fixed64 steamid = 2 [(description) = "Token holder if an admin action on behalf of another user"]; + optional .EAuthTokenRevokeAction revoke_action = 3 [default = k_EAuthTokenRevokePermanent, (description) = "Select between logout and logout-and-forget-machine"]; + optional bytes signature = 4 [(description) = "required signature over token_id"]; +} + +message CAuthentication_RefreshToken_Revoke_Response { +} + +message CAuthenticationSupport_QueryRefreshTokensByAccount_Request { + optional fixed64 steamid = 1 [(description) = "SteamID of the account to query (required)"]; + optional bool include_revoked_tokens = 2 [(description) = "Includes tokens that are revoked or expired in the query"]; +} + +message CSupportRefreshTokenDescription { + message TokenUsageEvent { + optional uint32 time = 1 [(description) = "Approximate time of history event (may be deliberately fuzzed or omitted)"]; + optional .CMsgIPAddress ip = 2 [(description) = "IP at which event was observed"]; + optional string country = 3 [(description) = "Location (country code) of event, as inferred from IP"]; + optional string state = 4 [(description) = "Location (state code) of event, as inferred from IP"]; + optional string city = 5 [(description) = "Location (city) of event, as inferred from IP"]; + } + + optional fixed64 token_id = 1; + optional string token_description = 2; + optional uint32 time_updated = 3; + optional .EAuthTokenPlatformType platform_type = 4 [default = k_EAuthTokenPlatformType_Unknown]; + optional .EAuthTokenState token_state = 5 [default = k_EAuthTokenState_Invalid]; + optional fixed64 owner_steamid = 6; + optional uint32 os_platform = 7 [(description) = "EPlatformType - rough classification of device OS, if known"]; + optional int32 os_type = 8 [(description) = "EOSType - specific device OS, if known"]; + optional uint32 auth_type = 9 [(description) = "EAuthTokenGuardType - device authorization mechanism, if known"]; + optional uint32 gaming_device_type = 10 [(description) = "EGamingDeviceType - classify console/PC/SteamDeck, if known; applies only for Steam Client devices"]; + optional .CSupportRefreshTokenDescription.TokenUsageEvent first_seen = 11 [(description) = "Information about original authorization event"]; + optional .CSupportRefreshTokenDescription.TokenUsageEvent last_seen = 12 [(description) = "Information about most-recently seen, if known for this device"]; +} + +message CAuthenticationSupport_QueryRefreshTokensByAccount_Response { + repeated .CSupportRefreshTokenDescription refresh_tokens = 1; +} + +message CAuthenticationSupport_QueryRefreshTokenByID_Request { + optional fixed64 token_id = 1 [(description) = "Token ID of the token to look up (required)"]; +} + +message CAuthenticationSupport_QueryRefreshTokenByID_Response { + repeated .CSupportRefreshTokenDescription refresh_tokens = 1; +} + +message CAuthenticationSupport_RevokeToken_Request { + optional fixed64 token_id = 1 [(description) = "Token ID of the token to revoke (required)"]; + optional fixed64 steamid = 2 [(description) = "Steam ID of the owner of that token (required)"]; +} + +message CAuthenticationSupport_RevokeToken_Response { +} + +message CAuthenticationSupport_GetTokenHistory_Request { + optional fixed64 token_id = 1 [(description) = "Token ID of the token to get history for (required)"]; +} + +message CSupportRefreshTokenAudit { + optional int32 action = 1; + optional uint32 time = 2; + optional .CMsgIPAddress ip = 3; + optional fixed64 actor = 4; +} + +message CAuthenticationSupport_GetTokenHistory_Response { + repeated .CSupportRefreshTokenAudit history = 1; +} + +message CCloudGaming_CreateNonce_Request { + optional string platform = 1; + optional uint32 appid = 2; +} + +message CCloudGaming_CreateNonce_Response { + optional string nonce = 1; + optional uint32 expiry = 2; +} + +message CCloudGaming_GetTimeRemaining_Request { + optional string platform = 1; + repeated uint32 appid_list = 2; +} + +message CCloudGaming_TimeRemaining { + optional uint32 appid = 1; + optional uint32 minutes_remaining = 2; +} + +message CCloudGaming_GetTimeRemaining_Response { + repeated .CCloudGaming_TimeRemaining entries = 2; +} + +service Authentication { + option (service_description) = "Authentication Service"; + + rpc GetPasswordRSAPublicKey (.CAuthentication_GetPasswordRSAPublicKey_Request) returns (.CAuthentication_GetPasswordRSAPublicKey_Response) { + option (method_description) = "Fetches RSA public key to use to encrypt passwords for a given account name"; + } + + rpc BeginAuthSessionViaQR (.CAuthentication_BeginAuthSessionViaQR_Request) returns (.CAuthentication_BeginAuthSessionViaQR_Response) { + option (method_description) = "start authentication process"; + } + + rpc BeginAuthSessionViaCredentials (.CAuthentication_BeginAuthSessionViaCredentials_Request) returns (.CAuthentication_BeginAuthSessionViaCredentials_Response) { + option (method_description) = "start authentication process"; + } + + rpc PollAuthSessionStatus (.CAuthentication_PollAuthSessionStatus_Request) returns (.CAuthentication_PollAuthSessionStatus_Response) { + option (method_description) = "poll during authentication process"; + } + + rpc GetAuthSessionInfo (.CAuthentication_GetAuthSessionInfo_Request) returns (.CAuthentication_GetAuthSessionInfo_Response) { + option (method_description) = "get metadata of specific auth session, this will also implicitly bind the calling account"; + } + + rpc UpdateAuthSessionWithMobileConfirmation (.CAuthentication_UpdateAuthSessionWithMobileConfirmation_Request) returns (.CAuthentication_UpdateAuthSessionWithMobileConfirmation_Response) { + option (method_description) = "approve an authentication session via mobile 2fa"; + } + + rpc UpdateAuthSessionWithSteamGuardCode (.CAuthentication_UpdateAuthSessionWithSteamGuardCode_Request) returns (.CAuthentication_UpdateAuthSessionWithSteamGuardCode_Response) { + option (method_description) = "approve an authentication session via steam guard code"; + } + + rpc GenerateAccessTokenForApp (.CAuthentication_AccessToken_GenerateForApp_Request) returns (.CAuthentication_AccessToken_GenerateForApp_Response) { + option (method_description) = "Given a refresh token for a client app audience (e.g. desktop client / mobile client), generate an access token"; + } + + rpc EnumerateTokens (.CAuthentication_RefreshToken_Enumerate_Request) returns (.CAuthentication_RefreshToken_Enumerate_Response) { + option (method_description) = "Enumerate durable (refresh) tokens for the given subject account"; + } + + rpc GetAuthSessionsForAccount (.CAuthentication_GetAuthSessionsForAccount_Request) returns (.CAuthentication_GetAuthSessionsForAccount_Response) { + option (method_description) = "Gets all active auth sessions for an account for reference by the mobile app"; + } + + rpc MigrateMobileSession (.CAuthentication_MigrateMobileSession_Request) returns (.CAuthentication_MigrateMobileSession_Response) { + option (method_description) = "Migrates a WG token to an access and refresh token using a signature generated with the user's 2FA secret"; + } + + rpc RevokeRefreshToken (.CAuthentication_RefreshToken_Revoke_Request) returns (.CAuthentication_RefreshToken_Revoke_Response) { + option (method_description) = "Mark the given refresh token as revoked"; + } +} + +service AuthenticationSupport { + option (service_description) = "Authentication Support Service"; + + rpc QueryRefreshTokensByAccount (.CAuthenticationSupport_QueryRefreshTokensByAccount_Request) returns (.CAuthenticationSupport_QueryRefreshTokensByAccount_Response) { + option (method_description) = "Asks the server for a list of refresh tokens associated with an account"; + } + + rpc QueryRefreshTokenByID (.CAuthenticationSupport_QueryRefreshTokenByID_Request) returns (.CAuthenticationSupport_QueryRefreshTokenByID_Response) { + option (method_description) = "Asks the server for a list of refresh tokens associated with an account"; + } + + rpc RevokeToken (.CAuthenticationSupport_RevokeToken_Request) returns (.CAuthenticationSupport_RevokeToken_Response) { + option (method_description) = "Revokes a user's auth token"; + } + + rpc GetTokenHistory (.CAuthenticationSupport_GetTokenHistory_Request) returns (.CAuthenticationSupport_GetTokenHistory_Response) { + option (method_description) = "Gets the audit history for a user's auth token"; + } +} + +service CloudGaming { + option (service_description) = "Methods for Steam cloud gaming operations"; + + rpc CreateNonce (.CCloudGaming_CreateNonce_Request) returns (.CCloudGaming_CreateNonce_Response) { + option (method_description) = "Create a nonce for a cloud gaming service session"; + } + + rpc GetTimeRemaining (.CCloudGaming_GetTimeRemaining_Request) returns (.CCloudGaming_GetTimeRemaining_Response) { + option (method_description) = "Get the amount of streaming time remaining for a set of apps"; + } +} From c2975066fe1f766e0de43a7b44a3d4e5c0796d8e Mon Sep 17 00:00:00 2001 From: Lossy Date: Sun, 8 Jan 2023 01:06:26 -0600 Subject: [PATCH 21/22] Cleanup Sample and enable handler in SteamClient --- .../SampleUnifiedMessages.java | 52 ++++++++----------- .../steam/steamclient/SteamClient.java | 2 +- 2 files changed, 24 insertions(+), 30 deletions(-) diff --git a/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_8UnifiedMessages/SampleUnifiedMessages.java b/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_8UnifiedMessages/SampleUnifiedMessages.java index d6b2a50b..6ac5e50f 100644 --- a/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_8UnifiedMessages/SampleUnifiedMessages.java +++ b/javasteam-samples/src/main/java/in/dragonbra/javasteamsamples/_8UnifiedMessages/SampleUnifiedMessages.java @@ -23,9 +23,6 @@ import in.dragonbra.javasteam.util.log.DefaultLogListener; import in.dragonbra.javasteam.util.log.LogManager; -import java.util.List; - - /** * @author Lossy * @since 2023-01-04 @@ -58,6 +55,7 @@ public class SampleUnifiedMessages implements Runnable { private final String pass; JobID badgeRequest; + JobID favoriteBadge; public SampleUnifiedMessages(String user, String pass) { @@ -88,16 +86,15 @@ public void run() { // create the callback manager which will route callbacks to function calls manager = new CallbackManager(steamClient); - steamClient.addHandler(new SteamUnifiedMessages()); - - // steamClient.setDebugNetworkListener(new NetHookNetworkListener()); - // get the steamuser handler, which is used for logging on after successfully connecting steamUser = steamClient.getHandler(SteamUser.class); // get the steam unified messages handler, which is used for sending and receiving responses from the unified service api steamUnifiedMessages = steamClient.getHandler(SteamUnifiedMessages.class); + // The SteamUnifiedMessages handler can be removed if it's not needed. + // steamClient.removeHandler(SteamUnifiedMessages.class); + // register a few callbacks we're interested in // these are registered upon creation to a callback manager, which will then route the callbacks // to the functions specified @@ -145,6 +142,7 @@ private void onDisconnected(DisconnectedCallback callback) { } private void onLoggedOn(LoggedOnCallback callback) { + if (callback.getResult() != EResult.OK) { if (callback.getResult() == EResult.AccountLogonDenied) { // if we recieve AccountLogonDenied or one of it's flavors (AccountLogonDeniedNoMailSent, etc) @@ -160,7 +158,6 @@ private void onLoggedOn(LoggedOnCallback callback) { isRunning = false; return; - } System.out.println("Successfully logged on!"); @@ -179,11 +176,11 @@ private void onLoggedOn(LoggedOnCallback callback) { CPlayer_GetFavoriteBadge_Request.Builder favoriteBadgeRequest = CPlayer_GetFavoriteBadge_Request.newBuilder(); favoriteBadgeRequest.setSteamid(steamClient.getSteamID().convertToUInt64()); - // now let's send the request, this is done by building a classed based off the IPlayer interface. + // now let's send the request, this is done by building a class based off the IPlayer interface. Player playerService = new Player(steamUnifiedMessages); favoriteBadge = playerService.GetFavoriteBadge(favoriteBadgeRequest.build()); - // first, build our request object, these are autogenerated and can normally be found in the in.dragonbra.javasteam.protobufs.steamclient package + // second, build our request object, these are autogenerated and can normally be found in the in.dragonbra.javasteam.protobufs.steamclient package CPlayer_GetGameBadgeLevels_Request.Builder badgeLevelsRequest = CPlayer_GetGameBadgeLevels_Request.newBuilder(); badgeLevelsRequest.setAppid(440); @@ -213,33 +210,30 @@ private void onMethodResponse(ServiceMethodResponse callback) { // for responses: CMyService_Method_Response if (callback.getJobID().equals(badgeRequest)) { - CPlayer_GetGameBadgeLevels_Response.Builder response; - response = callback.getDeserializedResponse(CPlayer_GetGameBadgeLevels_Response.class); - response.build(); + CPlayer_GetGameBadgeLevels_Response.Builder response = callback.getDeserializedResponse(CPlayer_GetGameBadgeLevels_Response.class); System.out.println("Our player level is " + response.getPlayerLevel()); - List badgeList = response.getBadgesList(); - badgeList.forEach(badge -> System.out.println("Badge series " + badge.getSeries() + " is level " + badge.getLevel())); - - if (badgeList.isEmpty()) - System.out.println("No badges found for game. " + response.getBadgesCount() + "."); + // If we have a list of badges, we'll print them out by series and level. + response.getBadgesList().forEach(x -> + System.out.println("Badge series " + x.getSeries() + " is level " + x.getLevel()) + ); badgeRequest = JobID.INVALID; } if (callback.getJobID().equals(favoriteBadge)) { - CPlayer_GetFavoriteBadge_Response.Builder response; - response = callback.getDeserializedResponse(CPlayer_GetFavoriteBadge_Response.class); - response.build(); - - System.out.println("Has favorite badge: " + response.hasHasFavoriteBadge()); - System.out.println("Badge ID: " + response.getBadgeid()); - System.out.println("Community item ID: " + response.getCommunityitemid()); - System.out.println("Item Type: " + response.getItemType()); - System.out.println("Border Color: " + response.getBorderColor()); - System.out.println("App ID: " + response.getAppid()); - System.out.println("Level: " + response.getLevel()); + CPlayer_GetFavoriteBadge_Response.Builder response = callback.getDeserializedResponse(CPlayer_GetFavoriteBadge_Response.class); + + System.out.println( + "Has favorite badge: " + response.hasHasFavoriteBadge() + + "\nBadge ID: " + response.getBadgeid() + + "\nCommunity item ID: " + response.getCommunityitemid() + + "\nItem Type: " + response.getItemType() + + "\nBorder Color: " + response.getBorderColor() + + "\nApp ID: " + response.getAppid() + + "\nLevel: " + response.getLevel() + ); favoriteBadge = JobID.INVALID; } diff --git a/src/main/java/in/dragonbra/javasteam/steam/steamclient/SteamClient.java b/src/main/java/in/dragonbra/javasteam/steam/steamclient/SteamClient.java index 87544402..632501ef 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/steamclient/SteamClient.java +++ b/src/main/java/in/dragonbra/javasteam/steam/steamclient/SteamClient.java @@ -82,7 +82,7 @@ public SteamClient(SteamConfiguration configuration) { addHandler(new SteamMasterServer()); addHandler(new SteamGameServer()); addHandler(new SteamGameCoordinator()); - // addHandler(new SteamUnifiedMessages()); // TODO uncomment when ready + addHandler(new SteamUnifiedMessages()); processStartTime = new Date(); From 51ccba5e51a8b31e941a2621bb0cdae213d8fe46 Mon Sep 17 00:00:00 2001 From: LossyDragon Date: Mon, 9 Jan 2023 14:30:50 -0600 Subject: [PATCH 22/22] Backport to Java 7 --- .../SteamUnifiedMessages.java | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java index 8b20a380..8ec20e17 100644 --- a/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java +++ b/src/main/java/in/dragonbra/javasteam/steam/handlers/steamunifiedmessages/SteamUnifiedMessages.java @@ -16,11 +16,9 @@ import in.dragonbra.javasteam.util.log.Logger; import java.lang.reflect.Method; -import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Map; -import java.util.stream.Stream; /** * @author Lossy @@ -36,8 +34,18 @@ public class SteamUnifiedMessages extends ClientMsgHandler { public SteamUnifiedMessages() { dispatchMap = new HashMap<>(); - dispatchMap.put(EMsg.ServiceMethodResponse, this::handleServiceMethodResponse); - dispatchMap.put(EMsg.ServiceMethod, this::handleServiceMethod); + dispatchMap.put(EMsg.ServiceMethodResponse, new Consumer() { + @Override + public void accept(IPacketMsg packetMsg) { + handleServiceMethodResponse(packetMsg); + } + }); + dispatchMap.put(EMsg.ServiceMethod, new Consumer() { + @Override + public void accept(IPacketMsg packetMsg) { + handleServiceMethod(packetMsg); + } + }); dispatchMap = Collections.unmodifiableMap(dispatchMap); } @@ -129,23 +137,26 @@ private void handleServiceMethod(IPacketMsg packetMsg) { String serviceInterfaceName = "in.dragonbra.javasteam.rpc.I" + serviceName; try { - logger.debug("Trying to process unified interface: " + serviceInterfaceName); + logger.debug("Handling Service Method: " + serviceInterfaceName); Class serviceInterfaceType = Class.forName(serviceInterfaceName); - System.out.println("serviceInterfaceType:" + serviceInterfaceType); - Stream methods = Arrays.stream(serviceInterfaceType.getDeclaredMethods()); - Method method = methods.filter(m -> m.getName().equals(methodName)).findFirst().orElse(null); - System.out.println("method:" + method); + + Method method = null; + for (Method m : serviceInterfaceType.getDeclaredMethods()) { + if (m.getName().equals(methodName)) { + method = m; + } + } if (method != null) { - Stream> arguments = Arrays.stream(method.getParameterTypes()); - Class argumentType = (Class) arguments.findFirst().orElse(null); // :') - System.out.println("argumentType:" + argumentType); + Class argumentType = (Class) method.getParameterTypes()[0]; client.postCallback(new ServiceMethodNotification(argumentType, packetMsg)); } } catch (ClassNotFoundException e) { - logger.error("Interface: " + serviceName + ", was not found"); + // The RPC service implementation was not implemented. + // Either the .proto is missing, or the service was not converted to an interface yet. + logger.error("Service Method: " + serviceName + ", was not found"); } } }