diff --git a/ArchiSteamFarm.CustomPlugins.ExamplePlugin/ArchiSteamFarm.CustomPlugins.ExamplePlugin.csproj b/ArchiSteamFarm.CustomPlugins.ExamplePlugin/ArchiSteamFarm.CustomPlugins.ExamplePlugin.csproj index d2d315e8e..aad285465 100644 --- a/ArchiSteamFarm.CustomPlugins.ExamplePlugin/ArchiSteamFarm.CustomPlugins.ExamplePlugin.csproj +++ b/ArchiSteamFarm.CustomPlugins.ExamplePlugin/ArchiSteamFarm.CustomPlugins.ExamplePlugin.csproj @@ -36,6 +36,7 @@ all + diff --git a/ArchiSteamFarm/ArchiHandler.cs b/ArchiSteamFarm/ArchiHandler.cs index f48516ea3..8aaa53842 100644 --- a/ArchiSteamFarm/ArchiHandler.cs +++ b/ArchiSteamFarm/ArchiHandler.cs @@ -43,7 +43,6 @@ namespace ArchiSteamFarm { private readonly SteamUnifiedMessages.UnifiedService UnifiedClanChatRoomsService; private readonly SteamUnifiedMessages.UnifiedService UnifiedEconService; private readonly SteamUnifiedMessages.UnifiedService UnifiedFriendMessagesService; - private readonly SteamUnifiedMessages.UnifiedService UnifiedParentalService; private readonly SteamUnifiedMessages.UnifiedService UnifiedPlayerService; internal DateTime LastPacketReceived { get; private set; } @@ -58,7 +57,6 @@ namespace ArchiSteamFarm { UnifiedClanChatRoomsService = steamUnifiedMessages.CreateService(); UnifiedEconService = steamUnifiedMessages.CreateService(); UnifiedFriendMessagesService = steamUnifiedMessages.CreateService(); - UnifiedParentalService = steamUnifiedMessages.CreateService(); UnifiedPlayerService = steamUnifiedMessages.CreateService(); } @@ -631,90 +629,6 @@ namespace ArchiSteamFarm { Client.Send(request); } - internal async Task<(bool IsSteamParentalEnabled, string SteamParentalCode)?> ValidateSteamParental(string steamParentalCode = null) { - if (!Client.IsConnected) { - return null; - } - - CParental_GetParentalSettings_Request request = new CParental_GetParentalSettings_Request { steamid = Client.SteamID }; - - SteamUnifiedMessages.ServiceMethodResponse response; - - try { - response = await UnifiedParentalService.SendMessage(x => x.GetParentalSettings(request)); - } catch (Exception e) { - ArchiLogger.LogGenericWarningException(e); - - return null; - } - - if (response == null) { - ArchiLogger.LogNullError(nameof(response)); - - return null; - } - - if (response.Result != EResult.OK) { - return null; - } - - CParental_GetParentalSettings_Response body = response.GetDeserializedResponse(); - - if (body.settings == null) { - return null; - } - - if (!body.settings.is_enabled) { - return (false, null); - } - - ArchiCryptoHelper.ESteamParentalAlgorithm steamParentalAlgorithm; - - switch (body.settings.passwordhashtype) { - case 4: - steamParentalAlgorithm = ArchiCryptoHelper.ESteamParentalAlgorithm.Pbkdf2; - - break; - case 6: - steamParentalAlgorithm = ArchiCryptoHelper.ESteamParentalAlgorithm.SCrypt; - - break; - default: - ASF.ArchiLogger.LogGenericError(string.Format(Strings.WarningUnknownValuePleaseReport, nameof(body.settings.passwordhashtype), body.settings.passwordhashtype)); - - return (false, null); - } - - if ((steamParentalCode != null) && (steamParentalCode.Length == BotConfig.SteamParentalCodeLength)) { - byte i = 0; - byte[] password = new byte[steamParentalCode.Length]; - - foreach (char character in steamParentalCode) { - if ((character < '0') || (character > '9')) { - break; - } - - password[i++] = (byte) character; - } - - if (i >= steamParentalCode.Length) { - byte[] passwordHash = ArchiCryptoHelper.GenerateSteamParentalHash(password, body.settings.salt, (byte) body.settings.passwordhash.Length, steamParentalAlgorithm); - - if (passwordHash.SequenceEqual(body.settings.passwordhash)) { - return (true, steamParentalCode); - } - } - } - - ArchiLogger.LogGenericInfo(Strings.BotGeneratingSteamParentalCode); - - steamParentalCode = ArchiCryptoHelper.RecoverSteamParentalCode(body.settings.passwordhash, body.settings.salt, steamParentalAlgorithm); - - ArchiLogger.LogGenericInfo(Strings.Done); - - return (true, steamParentalCode); - } - private void HandleItemAnnouncements(IPacketMsg packetMsg) { if (packetMsg == null) { ArchiLogger.LogNullError(nameof(packetMsg)); diff --git a/ArchiSteamFarm/ArchiSteamFarm.csproj b/ArchiSteamFarm/ArchiSteamFarm.csproj index 582eb32e7..2b4df96f5 100644 --- a/ArchiSteamFarm/ArchiSteamFarm.csproj +++ b/ArchiSteamFarm/ArchiSteamFarm.csproj @@ -74,13 +74,17 @@ + - + + + lib\SteamKit2.dll + diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index f8c22750d..d59deb2f2 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -2417,18 +2417,18 @@ namespace ArchiSteamFarm { } } - (bool IsSteamParentalEnabled, string SteamParentalCode)? steamParental = await ArchiHandler.ValidateSteamParental(BotConfig.SteamParentalCode).ConfigureAwait(false); + if (callback.ParentalSettings != null) { + (bool isSteamParentalEnabled, string steamParentalCode) = ValidateSteamParental(callback.ParentalSettings, BotConfig.SteamParentalCode); - if (steamParental.HasValue) { - if (steamParental.Value.IsSteamParentalEnabled) { + if (isSteamParentalEnabled) { SteamParentalActive = true; - if (!string.IsNullOrEmpty(steamParental.Value.SteamParentalCode)) { - if (BotConfig.SteamParentalCode != steamParental.Value.SteamParentalCode) { - SetUserInput(ASF.EUserInputType.SteamParentalCode, steamParental.Value.SteamParentalCode); + if (!string.IsNullOrEmpty(steamParentalCode)) { + if (BotConfig.SteamParentalCode != steamParentalCode) { + SetUserInput(ASF.EUserInputType.SteamParentalCode, steamParentalCode); } } else { - string steamParentalCode = await Logging.GetUserInput(ASF.EUserInputType.SteamParentalCode, BotName).ConfigureAwait(false); + steamParentalCode = await Logging.GetUserInput(ASF.EUserInputType.SteamParentalCode, BotName).ConfigureAwait(false); if (string.IsNullOrEmpty(steamParentalCode) || (steamParentalCode.Length != BotConfig.SteamParentalCodeLength)) { Stop(); @@ -2943,6 +2943,64 @@ namespace ArchiSteamFarm { return message.Replace("\\[", "[").Replace("\\\\", "\\"); } + private (bool IsSteamParentalEnabled, string SteamParentalCode) ValidateSteamParental(ParentalSettings settings, string steamParentalCode = null) { + if (settings == null) { + ArchiLogger.LogNullError(nameof(settings)); + + return (false, null); + } + + if (!settings.is_enabled) { + return (false, null); + } + + ArchiCryptoHelper.ESteamParentalAlgorithm steamParentalAlgorithm; + + switch (settings.passwordhashtype) { + case 4: + steamParentalAlgorithm = ArchiCryptoHelper.ESteamParentalAlgorithm.Pbkdf2; + + break; + case 6: + steamParentalAlgorithm = ArchiCryptoHelper.ESteamParentalAlgorithm.SCrypt; + + break; + default: + ArchiLogger.LogGenericError(string.Format(Strings.WarningUnknownValuePleaseReport, nameof(settings.passwordhashtype), settings.passwordhashtype)); + + return (true, null); + } + + if ((steamParentalCode != null) && (steamParentalCode.Length == BotConfig.SteamParentalCodeLength)) { + byte i = 0; + byte[] password = new byte[steamParentalCode.Length]; + + foreach (char character in steamParentalCode) { + if ((character < '0') || (character > '9')) { + break; + } + + password[i++] = (byte) character; + } + + if (i >= steamParentalCode.Length) { + byte[] passwordHash = ArchiCryptoHelper.GenerateSteamParentalHash(password, settings.salt, (byte) settings.passwordhash.Length, steamParentalAlgorithm); + + if (passwordHash.SequenceEqual(settings.passwordhash)) { + return (true, steamParentalCode); + } + } + } + + ArchiLogger.LogGenericInfo(Strings.BotGeneratingSteamParentalCode); + + steamParentalCode = ArchiCryptoHelper.RecoverSteamParentalCode(settings.passwordhash, settings.salt, steamParentalAlgorithm); + + ArchiLogger.LogGenericInfo(Strings.Done); + + return (true, steamParentalCode); + } + internal enum EFileType : byte { Config, Database, diff --git a/ArchiSteamFarm/lib/SteamKit2.dll b/ArchiSteamFarm/lib/SteamKit2.dll new file mode 100644 index 000000000..dfeeb3c37 Binary files /dev/null and b/ArchiSteamFarm/lib/SteamKit2.dll differ diff --git a/ArchiSteamFarm/lib/SteamKit2.xml b/ArchiSteamFarm/lib/SteamKit2.xml new file mode 100644 index 000000000..721f77275 --- /dev/null +++ b/ArchiSteamFarm/lib/SteamKit2.xml @@ -0,0 +1,8516 @@ + + + + SteamKit2 + + + + + Represents a protobuf backed client message. Only contains the header information. + + + + + Gets a value indicating whether this client message is protobuf backed. + Client messages of this type are always protobuf backed. + + + true if this instance is protobuf backed; otherwise, false. + + + + + Gets the network message type of this client message. + + + The network message type. + + + + + Gets or sets the session id for this client message. + + + The session id. + + + + + Gets or sets the for this client message. + + + The . + + + + + Gets or sets the target job id for this client message. + + + The target job id. + + + + + Gets or sets the source job id for this client message. + + + The source job id. + + + + + Shorthand accessor for the protobuf header. + + + + + Initializes a new instance of the class. + This is a recieve constructor. + + The packet message to build this client message from. + + + + Serializes this client message instance to a byte array. + + This class is for reading Protobuf messages only. If you want to create a protobuf message, use . + + + + Initializes this client message by deserializing the specified data. + + The data representing a client message. + + + + Represents a protobuf backed client message. + + The body type of this message. + + + + Gets the body structure of this message. + + + + + Initializes a new instance of the class. + This is a client send constructor. + + The network message type this client message represents. + The number of bytes to initialize the payload capacity to. + + + + Initializes a new instance of the class. + This a reply constructor. + + The network message type this client message represents. + The message that this instance is a reply for. + The number of bytes to initialize the payload capacity to. + + + + Initializes a new instance of the class. + This is a recieve constructor. + + The packet message to build this client message from. + + + + Serializes this client message instance to a byte array. + + + Data representing a client message. + + + + + Initializes this client message by deserializing the specified data. + + The data representing a client message. + + + + Represents a struct backed client message. + + The body type of this message. + + + + Gets a value indicating whether this client message is protobuf backed. + + + true if this instance is protobuf backed; otherwise, false. + + + + + Gets the network message type of this client message. + + + The network message type. + + + + + Gets or sets the session id for this client message. + + + The session id. + + + + + Gets or sets the for this client message. + + + The . + + + + + Gets or sets the target job id for this client message. + + + The target job id. + + + + + Gets or sets the source job id for this client message. + + + The source job id. + + + + + Gets the body structure of this message. + + + + + Initializes a new instance of the class. + This is a client send constructor. + + The number of bytes to initialize the payload capacity to. + + + + Initializes a new instance of the class. + This a reply constructor. + + The message that this instance is a reply for. + The number of bytes to initialize the payload capacity to. + + + + Initializes a new instance of the class. + This is a recieve constructor. + + The packet message to build this client message from. + + + + Serializes this client message instance to a byte array. + + + Data representing a client message. + + + + + Initializes this client message by deserializing the specified data. + + The data representing a client message. + + + + Represents a struct backed message without session or client info. + + The body type of this message. + + + + Gets a value indicating whether this client message is protobuf backed. + + + true if this instance is protobuf backed; otherwise, false. + + + + + Gets the network message type of this client message. + + + The network message type. + + + + + Gets or sets the session id for this client message. + This type of client message does not support session ids + + + The session id. + + + + + Gets or sets the for this client message. + This type of client message goes not support SteamIDs. + + + The . + + + + + Gets or sets the target job id for this client message. + + + The target job id. + + + + + Gets or sets the source job id for this client message. + + + The source job id. + + + + + Gets the structure body of the message. + + + + + Initializes a new instance of the class. + This is a client send constructor. + + The number of bytes to initialize the payload capacity to. + + + + Initializes a new instance of the class. + This a reply constructor. + + The message that this instance is a reply for. + The number of bytes to initialize the payload capacity to. + + + + Initializes a new instance of the class. + This is a recieve constructor. + + The packet message to build this client message from. + + + + Serializes this client message instance to a byte array. + + + Data representing a client message. + + + + + Initializes this client message by deserializing the specified data. + + The data representing a client message. + + + + Represents a protobuf backed game coordinator message. + + The body type of this message. + + + + Gets a value indicating whether this gc message is protobuf backed. + Client messages of this type are always protobuf backed. + + + true if this instance is protobuf backed; otherwise, false. + + + + + Gets the network message type of this gc message. + + + The network message type. + + + + + Gets or sets the target job id for this gc message. + + + The target job id. + + + + + Gets or sets the source job id for this gc message. + + + The source job id. + + + + + Shorthand accessor for the protobuf header. + + + + + Gets the body structure of this message. + + + + + Initializes a new instance of the class. + This is a client send constructor. + + The network message type this gc message represents. + The number of bytes to initialize the payload capacity to. + + + + Initializes a new instance of the class. + This a reply constructor. + + The network message type this gc message represents. + The message that this instance is a reply for. + The number of bytes to initialize the payload capacity to. + + + + Initializes a new instance of the class. + This is a recieve constructor. + + The packet message to build this gc message from. + + + + Serializes this gc message instance to a byte array. + + + Data representing a gc message. + + + + + Initializes this gc message by deserializing the specified data. + + The data representing a gc message. + + + + Represents a struct backed game coordinator message. + + The body type of this message. + + + + Gets a value indicating whether this gc message is protobuf backed. + + + true if this instance is protobuf backed; otherwise, false. + + + + + Gets the network message type of this gc message. + + + The network message type. + + + + + Gets or sets the target job id for this gc message. + + + The target job id. + + + + + Gets or sets the source job id for this gc message. + + + The source job id. + + + + + Gets the body structure of this message. + + + + + Initializes a new instance of the class. + This is a client send constructor. + + The number of bytes to initialize the payload capacity to. + + + + Initializes a new instance of the class. + This a reply constructor. + + The message that this instance is a reply for. + The number of bytes to initialize the payload capacity to. + + + + Initializes a new instance of the class. + This is a recieve constructor. + + The packet message to build this gc message from. + + + + Serializes this gc message instance to a byte array. + + + Data representing a client message. + + + + + Initializes this gc message by deserializing the specified data. + + The data representing a client message. + + + + Represents a unified interface into client messages. + + + + + Gets a value indicating whether this client message is protobuf backed. + + + true if this instance is protobuf backed; otherwise, false. + + + + + Gets the network message type of this client message. + + + The message type. + + + + + Gets or sets the target job id for this client message. + + + The target job id. + + + + + Gets or sets the source job id for this client message. + + + The source job id. + + + + + Serializes this client message instance to a byte array. + + Data representing a client message. + + + + Initializes this client message by deserializing the specified data. + + The data representing a client message. + + + + This is the abstract base class for all available game coordinator messages. + It's used to maintain packet payloads and provide a header for all gc messages. + + The header type for this gc message. + + + + Gets a value indicating whether this gc message is protobuf backed. + + + true if this instance is protobuf backed; otherwise, false. + + + + + Gets the network message type of this gc message. + + + The network message type. + + + + + Gets or sets the target job id for this gc message. + + + The target job id. + + + + + Gets or sets the source job id for this gc message. + + + The source job id. + + + + + Gets the header for this message type. + + + + + Initializes a new instance of the class. + + The number of bytes to initialize the payload capacity to. + + + + Serializes this gc message instance to a byte array. + + + Data representing a gc message. + + + + + Initializes this gc message by deserializing the specified data. + + The data representing a gc message. + + + + Represents a simple unified interface into game coordinator messages recieved from the network. + This is contrasted with in that this interface is packet body agnostic + and only allows simple access into the header. This interface is also immutable, and the underlying + data cannot be modified. + + + + + Gets a value indicating whether this packet message is protobuf backed. + + + true if this instance is protobuf backed; otherwise, false. + + + + + Gets the network message type of this packet message. + + + The message type. + + + + + Gets the target job id for this packet message. + + + The target job id. + + + + + Gets the source job id for this packet message. + + + The source job id. + + + + + Gets the underlying data that represents this client message. + + The data. + + + + Represents a protobuf backed packet message. + + + + + Gets a value indicating whether this packet message is protobuf backed. + This type of message is always protobuf backed. + + + true if this instance is protobuf backed; otherwise, false. + + + + + Gets the network message type of this packet message. + + + The message type. + + + + + Gets the target job id for this packet message. + + + The target job id. + + + + + Gets the source job id for this packet message. + + + The source job id. + + + + + Initializes a new instance of the class. + + The network message type for this packet message. + The data. + + + + Gets the underlying data that represents this client message. + + The data. + + + + Represents a packet message with extended header information. + + + + + Gets a value indicating whether this packet message is protobuf backed. + This type of message is never protobuf backed. + + + true if this instance is protobuf backed; otherwise, false. + + + + + Gets the network message type of this packet message. + + + The message type. + + + + + Gets the target job id for this packet message. + + + The target job id. + + + + + Gets the source job id for this packet message. + + + The source job id. + + + + + Initializes a new instance of the class. + + The network message type for this packet message. + The data. + + + + Gets the underlying data that represents this packet message. + + The data. + + + + This base client handles the underlying connection to a CM server. This class should not be use directly, but through the class. + + + + + The configuration for this client. + + + + + Bootstrap list of CM servers. + + + + + Returns the the local IP of this client. + + The local IP. + + + + Gets the universe of this client. + + The universe. + + + + Gets a value indicating whether this instance is connected to the remote CM server. + + + true if this instance is connected; otherwise, false. + + + + + Gets the session token assigned to this client from the AM. + + + + + Gets the Steam recommended Cell ID of this client. This value is assigned after a logon attempt has succeeded. + This value will be null if the client is logged off of Steam. + + + + + Gets the session ID of this client. This value is assigned after a logon attempt has succeeded. + This value will be null if the client is logged off of Steam. + + The session ID. + + + + Gets the SteamID of this client. This value is assigned after a logon attempt has succeeded. + This value will be null if the client is logged off of Steam. + + The SteamID. + + + + Gets or sets the connection timeout used when connecting to the Steam server. + + + The connection timeout. + + + + + Gets or sets the network listening interface. Use this for debugging only. + For your convenience, you can use class. + + + + + Initializes a new instance of the class with a specific configuration. + + The configuration to use for this client. + The configuration object is null + + + + Connects this client to a Steam3 server. + This begins the process of connecting and encrypting the data channel between the client and the server. + Results are returned asynchronously in a . + If the server that SteamKit attempts to connect to is down, a + will be posted instead. + SteamKit will not attempt to reconnect to Steam, you must handle this callback and call Connect again + preferrably after a short delay. + + + The of the CM server to connect to. + If null, SteamKit will randomly select a CM server from its internal list. + + + + + Disconnects this client. + + + + + Sends the specified client message to the server. + This method automatically assigns the correct SessionID and SteamID of the message. + + The client message to send. + + + + Returns the list of servers matching the given type + + Server type requested + List of server endpoints + + + + Called when a client message is received from the network. + + The packet message. + + + + Called when the client is securely connected to Steam3. + + + + + Called when the client is physically disconnected from Steam3. + + + + + This is the base class for the utility class. + This is for internal use only, and shouldn't be used directly. + + + + + Represents a unified interface into client messages. + + + + + Gets a value indicating whether this client message is protobuf backed. + + + true if this instance is protobuf backed; otherwise, false. + + + + + Gets the network message type of this client message. + + + The message type. + + + + + Gets or sets the session id for this client message. + + + The session id. + + + + + Gets or sets the for this client message. + + + The . + + + + + Gets or sets the target job id for this client message. + + + The target job id. + + + + + Gets or sets the source job id for this client message. + + + The source job id. + + + + + Serializes this client message instance to a byte array. + + Data representing a client message. + + + + Initializes this client message by deserializing the specified data. + + The data representing a client message. + + + + This class provides a payload backing to client messages. + + + + + Returns a which is the backing stream for client message payload data. + + + + + Initializes a new instance of the class. + + The number of bytes to initialize the payload capacity to. + + + + Seeks within the payload to the specified offset. + + The offset in the payload to seek to. + The origin to seek from. + The new position within the stream, calculated by combining the initial reference point and the offset. + + + + Writes a single unsigned byte to the message payload. + + The unsigned byte. + + + + Writes a single signed byte to the message payload. + + The signed byte. + + + + Writes the specified byte array to the message payload. + + The byte array. + + + + Writes a single 16bit short to the message payload. + + The short. + + + + Writes a single unsigned 16bit short to the message payload. + + The unsigned short. + + + + Writes a single 32bit integer to the message payload. + + The integer. + + + + Writes a single unsigned 32bit integer to the message payload. + + The unsigned integer. + + + + Writes a single 64bit long to the message payload. + + The long. + + + + Writes a single unsigned 64bit long to the message payload. + + The unsigned long. + + + + Writes a single 32bit float to the message payload. + + The float. + + + + Writes a single 64bit double to the message payload. + + The double. + + + + Writes the specified string to the message payload using default encoding. + This function does not write a terminating null character. + + The string to write. + + + + Writes the specified string to the message payload using the specified encoding. + This function does not write a terminating null character. + + The string to write. + The encoding to use. + + + + Writes the secified string and a null terminator to the message payload using default encoding. + + The string to write. + + + + Writes the specified string and a null terminator to the message payload using the specified encoding. + + The string to write. + The encoding to use. + + + + Reads a single signed byte from the message payload. + + The signed byte. + + + + Reads a single signed byte from the message payload. + + The signed byte. + + + + Reads a single unsigned byte from the message payload. + + The unsigned byte. + + + + Reads a single unsigned byte from the message payload. + + The unsigned byte. + + + + Reads a number of bytes from the message payload. + + The number of bytes to read. + The data. + + + + Reads a single 16bit short from the message payload. + + The short. + + + + Reads a single 16bit short from the message payload. + + The short. + + + + Reads a single unsigned 16bit short from the message payload. + + The unsigned short. + + + + Reads a single unsigned 16bit short from the message payload. + + The unsigned short. + + + + Reads a single 32bit integer from the message payload. + + The integer. + + + + Reads a single 32bit integer from the message payload. + + The integer. + + + + Reads a single unsigned 32bit integer from the message payload. + + The unsigned integer. + + + + Reads a single unsigned 32bit integer from the message payload. + + The unsigned integer. + + + + Reads a single 64bit long from the message payload. + + The long. + + + + Reads a single 64bit long from the message payload. + + The long. + + + + Reads a single unsigned 64bit long from the message payload. + + The unsigned long. + + + + Reads a single unsigned 64bit long from the message payload. + + The unsigned long. + + + + Reads a single 32bit float from the message payload. + + The float. + + + + Reads a single 32bit float from the message payload. + + The float. + + + + Reads a single 64bit double from the message payload. + + The double. + + + + Reads a null terminated string from the message payload with the default encoding. + + The string. + + + + Reads a null terminated string from the message payload with the specified encoding. + + The encoding to use. + /// The string. + + + + This is the abstract base class for all available client messages. + It's used to maintain packet payloads and provide a header for all client messages. + + The header type for this client message. + + + + Gets a value indicating whether this client message is protobuf backed. + + + true if this instance is protobuf backed; otherwise, false. + + + + + Gets the network message type of this client message. + + + The network message type. + + + + + Gets or sets the session id for this client message. + + + The session id. + + + + + Gets or sets the for this client message. + + + The . + + + + + Gets or sets the target job id for this client message. + + + The target job id. + + + + + Gets or sets the source job id for this client message. + + + The source job id. + + + + + Gets the header for this message type. + + + + + Initializes a new instance of the class. + + The number of bytes to initialize the payload capacity to. + + + + Serializes this client message instance to a byte array. + + + Data representing a client message. + + + + + Initializes this client message by deserializing the specified data. + + The data representing a client message. + + + + Represents a simple unified interface into client messages recieved from the network. + This is contrasted with in that this interface is packet body agnostic + and only allows simple access into the header. This interface is also immutable, and the underlying + data cannot be modified. + + + + + Gets a value indicating whether this packet message is protobuf backed. + + + true if this instance is protobuf backed; otherwise, false. + + + + + Gets the network message type of this packet message. + + + The message type. + + + + + Gets the target job id for this packet message. + + + The target job id. + + + + + Gets the source job id for this packet message. + + + The source job id. + + + + + Gets the underlying data that represents this client message. + + The data. + + + + Represents a protobuf backed packet message. + + + + + Gets a value indicating whether this packet message is protobuf backed. + This type of message is always protobuf backed. + + + true if this instance is protobuf backed; otherwise, false. + + + + + Gets the network message type of this packet message. + + + The message type. + + + + + Gets the target job id for this packet message. + + + The target job id. + + + + + Gets the source job id for this packet message. + + + The source job id. + + + + + Initializes a new instance of the class. + + The network message type for this packet message. + The data. + + + + Gets the underlying data that represents this client message. + + The data. + + + + Represents a packet message with extended header information. + + + + + Gets a value indicating whether this packet message is protobuf backed. + This type of message is never protobuf backed. + + + true if this instance is protobuf backed; otherwise, false. + + + + + Gets the network message type of this packet message. + + + The message type. + + + + + Gets the target job id for this packet message. + + + The target job id. + + + + + Gets the source job id for this packet message. + + + The source job id. + + + + + Initializes a new instance of the class. + + The network message type for this packet message. + The data. + + + + Gets the underlying data that represents this client message. + + The data. + + + + Represents a packet message with basic header information. + + + + + Gets a value indicating whether this packet message is protobuf backed. + This type of message is never protobuf backed. + + + true if this instance is protobuf backed; otherwise, false. + + + + + Gets the network message type of this packet message. + + + The message type. + + + + + Gets the target job id for this packet message. + + + The target job id. + + + + + Gets the source job id for this packet message. + + + The source job id. + + + + + Initializes a new instance of the class. + + The network message type for this packet message. + The data. + + + + Gets the underlying data that represents this client message. + + The data. + + + + Occurs when a net message is recieved over the network. + + + + + The remote of the current connection. + This is non-null between and , inclusive. + + + + + Occurs when the physical connection is established. + + + + + Occurs when the physical connection is broken. + + + + + Connects to the specified end point. + + The end point to connect to. + Timeout in milliseconds + + + + Disconnects this instance. + + If true, this disconnection attempt was initated by a consumer. + + + + Sends the specified data packet. + + The data packet to send. + + + + Gets the local IP. + + The local IP. + + + + The type of communication protocol that this connection uses. + + + + + Represents data that has been received over the network. + + + + + The type of communications protocol to use when communicating with the Steam backend + + + + + TCP + + + + + UDP + + + + + WebSockets (HTTP / TLS) + + + + + All available protocol types + + + + + Connects to the specified end point. + + The end point to connect to. + Timeout in milliseconds + + + + Nets the loop. + + + + + Seconds to wait before sending packets. + + + + + Seconds to wait before considering the connection dead. + + + + + Maximum number of packets to resend when RESEND_DELAY is exceeded. + + + + + Maximum number of packets that we can be waiting on at a time. + + + + + Contains information about the state of the connection, used to filter out packets that are + unexpected or not valid given the state of the connection. + + + + + The next outgoing sequence number to be used. + + + + + The highest sequence number of an outbound packet that has been sent. + + + + + The sequence number of the highest packet acknowledged by the server. + + + + + The sequence number we plan on acknowledging receiving with the next Ack. All packets below or equal + to inSeq *must* have been received, but not necessarily handled. + + + + + The highest sequence number we've acknowledged receiving. + + + + + The highest sequence number we've processed. + + + + + Connects to the specified CM server. + + The endPoint to connect to + Timeout in milliseconds + + + + Disconnects this instance, blocking until the queue of messages is empty or the connection + is otherwise terminated. + + + + + Serializes and sends the provided data to the server in as many packets as is necessary. + + The data to send to the server + + + + Sends the data sequenced as a single message, splitting it into multiple parts if necessary. + + The data to send. + + + + Sends the packet as a sequenced, reliable packet. + + The packet. + + + + Sends the packets as one sequenced, reliable net message. + + The packets that make up the single net message + + + + Sends a packet immediately. + + The packet. + + + + Sends a datagram Ack, used when an Ack needs to be sent but there is no data response to piggy-back on. + + + + + Sends or resends sequenced messages, if necessary. Also responsible for throttling + the rate at which they are sent. + + + + + Returns the number of message parts in the next message. + + Non-zero number of message parts if a message is ready to be handled, 0 otherwise + + + + Dispatches up to one message to the rest of SteamKit + + True if a message was dispatched, false otherwise + + + + Processes incoming packets, maintains connection consistency, and oversees outgoing packets. + + + + + Receives the packet, performs all sanity checks and then passes it along as necessary. + + The packet. + + + + Receives the challenge and responds with a Connect request + + The packet. + + + + Receives the notification of an accepted connection and sets the connection id that will be used for the + connection's duration. + + The packet. + + + + Receives typical data packets before dispatching them for consumption by the rest of SteamKit + + The packet. + + + + Gets a value indicating whether this instance is valid. + + + true if this instance is valid; otherwise, false. + + + + + Initializes a new instance of the class with + information from the memory stream. + + Header is populated from the MemoryStream + + The stream containing the packet and it's payload data. + + + + Initializes a new instance of the class, with + no payload. + + Header must be populated manually. + + The type. + + + + Initializes a new instance of the class, of the + specified type containing the specified payload. + + Header must be populated manually. + + The type. + The payload. + + + + Initializes a new instance of the class, of the + specified type containing the first 'length' bytes of specified payload. + + Header must be populated manually. + + The type. + The payload. + The length. + + + + Sets the payload + + The payload to copy. + + + + Sets the payload. + + The payload. + The length. + + + + Serializes the UdpPacket. + + The serialized packet. + + + + The CDNClient class is used for downloading game content from the Steam servers. + + + + + Represents a single Steam3 'Steampipe' content server. + + + + + The protocol used to connect to this server + + + + + Server does not advertise HTTPS support, connect over HTTP + + + + + Server advertises it supports HTTPS, connection made over HTTPS + + + + + Gets the supported connection protocol of the server. + + + + + Gets the hostname of the server. + + + + + Gets the virtual hostname of the server. + + + + + Gets the port of the server. + + + + + Gets the type of the server. + + + + + Gets the SourceID this server belongs to. + + + + + Gets the CellID this server belongs to. + + + + + Gets the load value associated with this server. + + + + + Gets the weighted load. + + + + + Gets the number of entries this server is worth. + + + + + Performs an implicit conversion from to . + + A IPEndPoint to convert into a . + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + A DnsEndPoint to convert into a . + + The result of the conversion. + + + + + Returns a that represents this server. + + + A that represents this server. + + + + + Represents a single downloaded chunk from a file in a depot. + + + + + Gets the depot manifest chunk information associated with this chunk. + + + + + Gets a value indicating whether this chunk has been processed. A chunk is processed when the data has been decrypted and decompressed. + + + true if this chunk has been processed; otherwise, false. + + + + + Gets the underlying data for this chunk. + + + + + Processes the specified depot key by decrypting the data with the given depot encryption key, and then by decompressing the data. + If the chunk has already been processed, this function does nothing. + + The depot decryption key. + Thrown if the processed data does not match the expected checksum given in it's chunk information. + + + + Default timeout to use when making requests + + + + + Initializes a new instance of the class. + + + The this instance will be associated with. + The SteamClient instance must be connected and logged onto Steam. + + The optional appticket for the depot that will be downloaded. + This must be present when connected to steam non-anonymously. + + + + + Fetches a list of content servers. + + + The optional Steam3 content server to fetch the list from. + If this parameter is not specified, a random CS server will be selected. + + + The optional CellID used to specify which regional servers should be returned in the list. + If this parameter is not specified, Steam's GeoIP suggested CellID will be used instead. + + The maximum amount of servers to request. + A list of servers. + + No Steam CS servers available, or the suggested CellID is unavailable. + Check that the associated with this instance is logged onto Steam. + + An network error occurred when performing the request. + A network error occurred when performing the request. + + + + Connects and initializes a session to the specified content server. + + The content server to connect to. + csServer was null. + An network error occurred when performing the request. + A network error occurred when performing the request. + + + + Authenticate a CDNClient to a depot in the connected session + + The id of the depot being accessed. + + The optional depot decryption key for the depot that will be downloaded. + This is used for decrypting filenames (if needed) in depot manifests, and processing depot chunks. + + CDN auth token for CDN content server endpoints. + An network error occurred when performing the request. + A network error occurred when performing the request. + + + + Downloads the depot manifest specified by the given manifest ID, and optionally decrypts the manifest's filenames if the depot decryption key has been provided. + + The id of the depot being accessed. + The unique identifier of the manifest to be downloaded. + A instance that contains information about the files present within a depot. + An network error occurred when performing the request. + A network error occurred when performing the request. + + + + Downloads the depot manifest specified by the given manifest ID, and optionally decrypts the manifest's filenames if the depot decryption key has been provided. + + The id of the depot being accessed. + The unique identifier of the manifest to be downloaded. + CDN hostname. + CDN auth token for CDN content server endpoints. + + The depot decryption key for the depot that will be downloaded. + This is used for decrypting filenames (if needed) in depot manifests, and processing depot chunks. + + A instance that contains information about the files present within a depot. + An network error occurred when performing the request. + A network error occurred when performing the request. + + + + Downloads the depot manifest specified by the given manifest ID, and optionally decrypts the manifest's filenames if the depot decryption key has been provided. + + The id of the depot being accessed. + The unique identifier of the manifest to be downloaded. + The content server to connect to. + CDN auth token for CDN content server endpoints. + + The depot decryption key for the depot that will be downloaded. + This is used for decrypting filenames (if needed) in depot manifests, and processing depot chunks. + + A instance that contains information about the files present within a depot. + An network error occurred when performing the request. + A network error occurred when performing the request. + + + + Downloads the specified depot chunk, and optionally processes the chunk and verifies the checksum if the depot decryption key has been provided. + + + This function will also validate the length of the downloaded chunk with the value of , + if it has been assigned a value. + + The id of the depot being accessed. + + A instance that represents the chunk to download. + This value should come from a manifest downloaded with . + + A instance that contains the data for the given chunk. + chunk's was null. + Thrown if the downloaded data does not match the expected length. + An network error occurred when performing the request. + A network error occurred when performing the request. + + + + Downloads the specified depot chunk, and optionally processes the chunk and verifies the checksum if the depot decryption key has been provided. + + + This function will also validate the length of the downloaded chunk with the value of , + if it has been assigned a value. + + The id of the depot being accessed. + + A instance that represents the chunk to download. + This value should come from a manifest downloaded with . + + A instance that contains the data for the given chunk. + CDN hostname. + CDN auth token for CDN content server endpoints. + + The depot decryption key for the depot that will be downloaded. + This is used for decrypting filenames (if needed) in depot manifests, and processing depot chunks. + + chunk's was null. + Thrown if the downloaded data does not match the expected length. + An network error occurred when performing the request. + A network error occurred when performing the request. + + + + Downloads the specified depot chunk, and optionally processes the chunk and verifies the checksum if the depot decryption key has been provided. + + + This function will also validate the length of the downloaded chunk with the value of , + if it has been assigned a value. + + The id of the depot being accessed. + + A instance that represents the chunk to download. + This value should come from a manifest downloaded with . + + A instance that contains the data for the given chunk. + The content server to connect to. + CDN auth token for CDN content server endpoints. + + The depot decryption key for the depot that will be downloaded. + This is used for decrypting filenames (if needed) in depot manifests, and processing depot chunks. + + chunk's was null. + Thrown if the downloaded data does not match the expected length. + An network error occurred when performing the request. + A network error occurred when performing the request. + + + + Disposes of this object. + + + + + A server list provider that uses a file to persist the server list using protobuf + + + + + Initialize a new instance of FileStorageServerListProvider + + + + + Read the stored list of servers from the file + + List of servers if persisted, otherwise an empty list + + + + Writes the supplied list of servers to persistent storage + + List of server endpoints + Awaitable task for write completion + + + + An interface for persisting the server list for connection discovery + + + + + Ask a provider to fetch any servers that it has available + + A list of IPEndPoints representing servers + + + + Update the persistent list of endpoints + + List of endpoints + + + + A server list provider that uses IsolatedStorage to persist the server list + + + + + Initialize a new instance of IsolatedStorageServerListProvider using + + + + + Read the stored list of servers from IsolatedStore + + List of servers if persisted, otherwise an empty list + + + + Writes the supplied list of servers to persistent storage + + List of server endpoints + Awaitable task for write completion + + + + A server list provider that returns an empty list, for consumers that populate the server list themselves + + + + + No-op implementation that returns an empty server list + + Empty server list + + + + No-op implementation that does not persist server list + + Server list + Completed task + + + + Represents the information needed to connect to a CM server + + + + + The endpoint of the server to connect to. + + + + + The various protocol types that can be used to communicate with this server. + + + + + Gets the host of the associated endpoint. This could be an IP address, or a DNS host name. + + The of the associated endpoint. + + + + Gets the port number of the associated endpoint. + + The port numer of the associated endpoint. + + + + Creates a server record for a given endpoint. + + The host to connect to. This can be an IP address or a DNS name. + The port to connect to. + The protocol types that this server supports. + + + + + Creates a Socket server given an IP endpoint. + + The IP address and port of the server. + A new instance + + + + Creates a Socket server given an IP endpoint. + + The IP address and port of the server, as a string. + A new , if the address was able to be parsed. null otherwise. + true if the address was able to be parsed, false otherwise. + + + + Creates a WebSocket server given an address in the form of "hostname:port". + + The name and port of the server + A new instance + + + + Determines whether two objects are equal. + + The object on the left-hand side of the equality operator. + The object on the right-hand side of the equality operator. + true if the specified object is equal to the current object; otherwise, false. + + + + Determines whether two objects are not equal. + + The object on the left-hand side of the inequality operator. + The object on the right-hand side of the inequality operator. + true if the specified object is not equal to the current object; otherwise, false. + + + + Determines whether the specified object is equal to the current object. + + + true if the specified object is equal to the current object; otherwise, false. + + + + Hash function + + A hash code for the current object. + + + + Currently marked quality of a server. All servers start off as Undetermined. + + + + + Known good server. + + + + + Known bad server. + + + + + Smart list of CM servers. + + + + + Initialize SmartCMServerList with a given server list provider + + The Steam configuration to use. + The configuration object is null. + + + + Determines how long a server's bad connection state is remembered for. + + + + + Resets the scores of all servers which has a last bad connection more than ago. + + + + + Replace the list with a new list of servers provided to us by the Steam servers. + + The s to use for this . + + + + Explicitly resets the known state of all servers. + + + + + Perform the actual score lookup of the server list and return the candidate + + IPEndPoint candidate + + + + Get the next server in the list. + + The minimum supported of the server to return. + An , or null if the list is empty. + + + + Get the next server in the list. + + The minimum supported of the server to return. + An , or null if the list is empty. + + + + Gets the s of all servers in the server list. + + An array contains the s of the servers in the list + + + + This class implements the base requirements every message handler should inherit from. + + + + + Gets the underlying for use in sending replies. + + + + + Gets or sets whether or not the related should imminently expect the server to close the connection. + If this is true when the connection is closed, the 's property + will be set to true. + + + + + Initializes a new instance of the class. + + + + + Handles a client message. This should not be called directly. + + The packet message that contains the data. + + + + This handler is used for interacting with apps and packages on the Steam network. + + + + + This callback is fired during logon, informing the client of it's available licenses. + + + + + Represents a granted license (steam3 subscription) for one or more games. + + + + + Gets the package ID used to identify the license. + + The package ID. + + + + Gets the last change number for this license. + + + + + Gets the time the license was created. + + The time created. + + + + Gets the next process time for the license. + + The next process time. + + + + Gets the minute limit of the license. + + The minute limit. + + + + Gets the minutes used of the license. + + The minutes used. + + + + Gets the payment method used when the license was created. + + The payment method. + + + + Gets the license flags. + + The license flags. + + + + Gets the two letter country code where the license was purchased. + + The purchase country code. + + + + Gets the type of the license. + + The type of the license. + + + + Gets the territory code of the license. + + The territory code. + + + + Gets the result of the message. + + The result. + + + + Gets the license list. + + The license list. + + + + This callback is received in response to calling , informing the client of newly granted packages, if any. + + + + + Gets the result of the message. + + The result. + + + + Gets the list of granted apps. + + List of granted apps. + + + + Gets the list of granted packages. + + List of granted packages. + + + + This callback is received in response to calling . + + + + + Gets the result of requesting the ticket. + + + + + Gets the AppID this ticket is for. + + + + + Gets the ticket data. + + + + + This callback is recieved in response to calling . + + + + + Gets the result of requesting this encryption key. + + + + + Gets the DepotID this encryption key is for. + + + + + Gets the encryption key for this depot. + + + + + This callback is fired when the client receives a list of game connect tokens. + + + + + Gets a count of tokens to keep. + + + + + Gets the list of tokens. + + + + + This callback is fired when the client receives it's VAC banned status. + + + + + Gets a list of VAC banned apps the client is banned from. + + + + + This callback is fired when the PICS returns access tokens for a list of appids and packageids + + + + + Gets a list of denied package tokens + + + + + Gets a list of denied app tokens + + + + + Dictionary containing requested package tokens + + + + + Dictionary containing requested package tokens + + + + + This callback is fired when the PICS returns the changes since the last change number + + + + + Holds the change data for a single app or package + + + + + App or package ID this change data represents + + + + + Current change number of this app + + + + + Signals if an access token is needed for this request + + + + + Supplied change number for the request + + + + + Gets the current change number + + + + + If this update requires a full update of the information + + + + + Dictionary containing requested package tokens + + + + + Dictionary containing requested package tokens + + + + + This callback is fired when the PICS returns the product information requested + + + + + Represents the information for a single app or package + + + + + Gets the ID of the app or package + + + + + Gets the current change number for the app or package + + + + + Gets if an access token was required for the request + + + + + Gets the hash of the content + + + + + Gets the KeyValue info + + + + + For an app request, returns if only the public information was requested + + + + + Whether or not to use HTTP to load the KeyValues data. + + + + + For an app metadata-only request, returns the Uri for HTTP appinfo requests. + + + + + Gets if this response contains only product metadata + + + + + Gets if there are more product information responses pending + + + + + Gets a list of unknown package ids + + + + + Gets a list of unknown app ids + + + + + Dictionary containing requested app info + + + + + Dictionary containing requested package info + + + + + This callback is received when the list of guest passes is updated. + + + + + Result of the operation + + + + + Number of guest passes to be given out + + + + + Number of guest passes to be redeemed + + + + + Guest pass list + + + + + This callback is received when a CDN auth token is received + + + + + Result of the operation + + + + + CDN auth token + + + + + Token expiration date + + + + + This callback is received when a beta password check has been completed + + + + + Result of the operation + + + + + Map of beta names to their encryption keys + + + + + Represents a PICS request used for + + + + + Gets or sets the ID of the app or package being requested + + The ID + + + + Gets or sets the access token associated with the request + + The access token + + + + Requests only public app info + + The flag specifying if only public data is requested + + + + Instantiate an empty PICS product info request + + + + + Instantiate a PICS product info request for a given app or package id + + App or package ID + + + + Instantiate a PICS product info request for a given app or package id and an access token + + App or package ID + PICS access token + Get only public info + + + + Requests an app ownership ticket for the specified AppID. + Results are returned in a callback. + The returned can also be awaited to retrieve the callback result. + + The appid to request the ownership ticket of. + The Job ID of the request. This can be used to find the appropriate . + + + + Request the depot decryption key for a specified DepotID. + Results are returned in a callback. + The returned can also be awaited to retrieve the callback result. + + The DepotID to request a decryption key for. + The AppID to request the decryption key for. + The Job ID of the request. This can be used to find the appropriate . + + + + Request PICS access tokens for an app or package. + Results are returned in a callback. + The returned can also be awaited to retrieve the callback result. + + App id to request access token for. + Package id to request access token for. + The Job ID of the request. This can be used to find the appropriate . + + + + Request PICS access tokens for a list of app ids and package ids + Results are returned in a callback. + The returned can also be awaited to retrieve the callback result. + + List of app ids to request access tokens for. + List of package ids to request access tokens for. + The Job ID of the request. This can be used to find the appropriate . + + + + Request changes for apps and packages since a given change number + Results are returned in a callback. + The returned can also be awaited to retrieve the callback result. + + Last change number seen. + Whether to send app changes. + Whether to send package changes. + The Job ID of the request. This can be used to find the appropriate . + + + + Request product information for an app or package + Results are returned in a callback. + The returned can also be awaited to retrieve the callback result. + + App id requested. + Package id requested. + Whether to send only public information. + Whether to send only meta data. + The Job ID of the request. This can be used to find the appropriate . + + + + Request product information for a list of apps or packages + Results are returned in a callback. + The returned can also be awaited to retrieve the callback result. + + List of app ids requested. + List of package ids requested. + Whether to send only public information. + Whether to send only meta data. + The Job ID of the request. This can be used to find the appropriate . + + + + Request product information for a list of apps or packages + Results are returned in a callback. + The returned can also be awaited to retrieve the callback result. + + List of requests for apps. + List of requests for packages. + Whether to send only meta data. + The Job ID of the request. This can be used to find the appropriate . + + + + Request product information for an app or package + Results are returned in a callback. + The returned can also be awaited to retrieve the callback result. + + App id requested. + Depot id requested. + CDN host name being requested. + The Job ID of the request. This can be used to find the appropriate . + + + + Request a free license for given appid, can be used for free on demand apps + Results are returned in a callback. + The returned can also be awaited to retrieve the callback result. + + The app to request a free license for. + The Job ID of the request. This can be used to find the appropriate . + + + + Request a free license for given appids, can be used for free on demand apps + Results are returned in a callback. + The returned can also be awaited to retrieve the callback result. + + The apps to request a free license for. + The Job ID of the request. This can be used to find the appropriate . + + + + Submit a beta password for a given app to retrieve any betas and their encryption keys. + Results are returned in a callback. + The returned can also be awaited to retrieve the callback result. + + App id requested. + Password to check. + The Job ID of the request. This can be used to find the appropriate . + + + + Handles a client message. This should not be called directly. + + The packet message that contains the data. + + + + This handler is used for interacting with remote storage and user generated content. + + + + + This callback is recieved in response to calling . + + + + + Gets the result of the request. + + + + + Gets the App ID the UGC is for. + + + + + Gets the SteamID of the UGC's creator. + + + + + Gets the URL that the content is located at. + + + + + Gets the name of the file. + + + + + Gets the size of the file. + + + + + This callback is recieved in response to calling . + + + + + Gets the result of the request. + + + + + Gets the App ID the file is for. + + + + + Gets the file name request. + + + + + Gets the SHA hash of the file. + + + + + Gets the timestamp of the file. + + + + + Gets the size of the file. + + + + + Gets if the file was explicity deleted by the user. + + + + + This callback is recieved in response to calling . + + + + + Gets the result of the request. + + + + + Gets the resulting UGC handle. + + + + + Requests details for a specific item of user generated content from the Steam servers. + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The unique user generated content id. + The Job ID of the request. This can be used to find the appropriate . + + + + Requests details for a specific file in the user's Cloud storage. + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The app id of the game. + The path to the file being requested. + The Job ID of the request. This can be used to find the appropriate . + + + + Commit a Cloud file at the given path to make its UGC handle publicly visible. + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The app id of the game. + The path to the file being requested. + The Job ID of the request. This can be used to find the appropriate . + + + + Handles a client message. This should not be called directly. + + The packet message that contains the data. + + + + This handler handles all interaction with other users on the Steam3 network. + + + + + Represents the details of a user which is a member of a chatroom. + + + + + Initializes a new instance of the class. + + The KeyValue backing store for this member info. + + + + Initializes a new instance of the class. + + + + + Gets the clan permission details of this chat member. + + + + + Gets the permissions this user has with the chatroom. + + + + + Gets the of this user. + + + + + This callback is fired in response to someone changing their friend details over the network. + + + + + Gets the status flags. This shows what has changed. + + The status flags. + + + + Gets the friend ID. + + The friend ID. + + + + Gets the state. + + The state. + + + + Gets the state flags. + + The state flags. + + + + Gets the game app ID. + + The game app ID. + + + + Gets the game ID. + + The game ID. + + + + Gets the name of the game. + + The name of the game. + + + + Gets the game server IP. + + The game server IP. + + + + Gets the game server port. + + The game server port. + + + + Gets the query port. + + The query port. + + + + Gets the source steam ID. + + The source steam ID. + + + + Gets the game data blob. + + The game data blob. + + + + Gets the name. + + The name. + + + + Gets the avatar hash. + + The avatar hash. + + + + Gets the last log off. + + The last log off. + + + + Gets the last log on. + + The last log on. + + + + Gets the clan rank. + + The clan rank. + + + + Gets the clan tag. + + The clan tag. + + + + Gets the online session instances. + + The online session instances. + + + + Gets the published session ID. + + The published session ID. + + + + This callback is posted when a clan's state has been changed. + + + + + Represents an event or announcement that was posted by a clan. + + + + + Gets the globally unique ID for this specific event. + + + + + Gets the event time. + + + + + Gets the headline of the event. + + + + + Gets the associated with this event, if any. + + + + + Gets a value indicating whether this event was just posted. + + + true if the event was just posted; otherwise, false. + + + + + Gets the of the clan that posted this state update. + + + + + Gets the account flags. + + + + + Gets the privacy of the chat room. + + + + + Gets the name of the clan. + + + The name of the clan. + + + + + Gets the SHA-1 avatar hash. + + + + + Gets the total number of members in this clan. + + + + + Gets the number of members in this clan that are currently online. + + + + + Gets the number of members in this clan that are currently chatting. + + + + + Gets the number of members in this clan that are currently in-game. + + + + + Gets any events associated with this clan state update. + + + + + Gets any announcements associated with this clan state update. + + + + + This callback is fired when the client receives a list of friends. + + + + + Represents a single friend entry in a client's friendlist. + + + + + Gets the SteamID of the friend. + + The SteamID. + + + + Gets the relationship to this friend. + + The relationship. + + + + Gets a value indicating whether this is an incremental update. + + true if incremental; otherwise, false. + + + + Gets the friend list. + + The friend list. + + + + This callback is fired in response to receiving a message from a friend. + + + + + Gets or sets the sender. + + The sender. + + + + Gets the chat entry type. + + The chat entry type. + + + + Gets a value indicating whether this message is from a limited account. + + true if this message is from a limited account; otherwise, false. + + + + Gets the message. + + The message. + + + + This callback is fired in response to receiving an echo message from another instance. + + + + + Gets or sets the recipient + + The recipient. + + + + Gets the chat entry type. + + The chat entry type. + + + + Gets a value indicating whether this message is from a limited account. + + true if this message is from a limited account; otherwise, false. + + + + Gets the message. + + The message. + + + + This callback is fired in response to receiving historical messages. + See also and + . + + + + + Gets the result of the request. + + + + + Gets the SteamID of the user with whom these messages were exchanged. + + + + + The messages exchanged with the user. + Offline messages are marked by having set to true + + + + + Represents a single Message sent to or received from a friend + + + + + The SteamID of the User that wrote the message + + + + + Whether or not the message has been read, i.e., is an offline message. + + + + + The actual message + + + + + The time (in UTC) when the message was sent + + + + + This callback is fired in response to adding a user to your friends list. + + + + + Gets the result of the request. + + The result. + + + + Gets the SteamID of the friend that was added. + + The SteamID. + + + + Gets the persona name of the friend. + + The persona name. + + + + This callback is fired in response to attempting to join a chat. + + + + + Gets SteamID of the chat room. + + + + + Gets the friend ID. + + + + + Gets the type of the chat room. + + + The type of the chat room. + + + + + Gets the SteamID of the chat room owner. + + + + + Gets clan SteamID that owns this chat room. + + + + + Gets the chat flags. + + + + + Gets the chat enter response. + + + + + Gets the number of users currently in this chat room. + + + + + Gets the name of the chat room. + + + + + Gets a list of instances for each of the members of this chat room. + + + + + This callback is fired when a chat room message arrives. + + + + + Gets the SteamID of the chatter. + + + + + Gets the SteamID of the chat room. + + + + + Gets chat entry type. + + + + + Gets the message. + + + + + This callback is fired in response to chat member info being recieved. + + + + + Represents state change information. + + + + + Gets the SteamID of the chatter that was acted on. + + + + + Gets the state change for the acted on SteamID. + + + + + Gets the SteamID of the chatter that acted on . + + + + + Gets the member information for a user that has joined the chat room. + This field is only populated when is . + + + + + Gets SteamId of the chat room. + + + + + Gets the info type. + + + + + Gets the state change info for member info updates. + + + + + This callback is fired in response to chat room info being recieved. + + + + + Gets SteamId of the chat room. + + + + + Gets the info type. + + + + + This callback is fired when a chat action has completed. + + + + + Gets the SteamID of the chat room the action was performed in. + + + + + Gets the SteamID of the chat member the action was performed on. + + + + + Gets the chat action that was performed. + + + + + Gets the result of the chat action. + + + + + This callback is fired when a chat invite is recieved. + + + + + Gets the SteamID of the user who was invited to the chat. + + + + + Gets the chat room SteamID. + + + + + Gets the SteamID of the user who performed the invitation. + + + + + Gets the chat room type. + + + + + Gets the SteamID of the chat friend. + + + + + Gets the name of the chat room. + + + + + Gets the GameID associated with this chat room, if it's a game lobby. + + + + + This callback is fired in response to an attempt at ignoring a friend. + + + + + Gets the result of ignoring a friend. + + + + + This callback is fired in response to requesting profile info for a user. + + + + + Gets the result of requesting profile info. + + + + + Gets the this info belongs to. + + + + + Gets the time this account was created. + + + + + Gets the real name. + + + + + Gets the name of the city. + + + + + Gets the name of the state. + + + + + Gets the name of the country. + + + + + Gets the headline. + + + + + Gets the summary. + + + + + This callback is fired in response to setting this client's persona name or state + with or . + + + + + Gets the result of changing this client's persona information. + + + + + Gets the name of this client according to Steam. + + + + + Gets the local user's persona name. Will be null before user initialization. + User initialization is performed prior to callback. + + The name. + + + + Sets the local user's persona name and broadcasts it over the network. + + The name. + + + + Gets the local user's persona state. + + The persona state. + + + + Sets the local user's persona state and broadcasts it over the network. + + The state. + + + + Gets the friend count of the local user. + + The number of friends. + + + + Gets a friend by index. + + The index. + A valid steamid of a friend if the index is in range; otherwise a steamid representing 0. + + + + Gets the persona name of a friend. + + The steam id. + The name. + + + + Gets the persona state of a friend. + + The steam id. + The persona state. + + + + Gets the relationship of a friend. + + The steam id. + The relationship of the friend to the local user. + + + + Gets the game name of a friend playing a game. + + The steam id. + The game name of a friend playing a game, or null if they haven't been cached yet. + + + + Gets the GameID of a friend playing a game. + + The steam id. + The gameid of a friend playing a game, or 0 if they haven't been cached yet. + + + + Gets a SHA-1 hash representing the friend's avatar. + + The SteamID of the friend to get the avatar of. + A byte array representing a SHA-1 hash of the friend's avatar. + + + + Gets the count of clans the local user is a member of. + + The number of clans this user is a member of. + + + + Gets a clan SteamID by index. + + The index. + A valid steamid of a clan if the index is in range; otherwise a steamid representing 0. + + + + Gets the name of a clan. + + The clan SteamID. + The name. + + + + Gets the relationship of a clan. + + The clan steamid. + The relationship of the clan to the local user. + + + + Gets a SHA-1 hash representing the clan's avatar. + + The SteamID of the clan to get the avatar of. + A byte array representing a SHA-1 hash of the clan's avatar, or null if the clan could not be found. + + + + Sends a chat message to a friend. + + The target to send to. + The type of message to send. + The message to send. + + + + Sends a friend request to a user. + + The account name or email of the user. + + + + Sends a friend request to a user. + + The SteamID of the friend to add. + + + + Removes a friend from your friends list. + + The SteamID of the friend to remove. + + + + Attempts to join a chat room. + + The SteamID of the chat room. + + + + Attempts to leave a chat room. + + The SteamID of the chat room. + + + + Sends a message to a chat room. + + The SteamID of the chat room. + The message type. + The message. + + + + Invites a user to a chat room. + The results of this action will be available through the callback. + + The SteamID of the user to invite. + The SteamID of the chat room to invite the user to. + + + + Kicks the specified chat member from the given chat room. + + The SteamID of chat room to kick the member from. + The SteamID of the member to kick from the chat. + + + + Bans the specified chat member from the given chat room. + + The SteamID of chat room to ban the member from. + The SteamID of the member to ban from the chat. + + + + Unbans the specified SteamID from the given chat room. + + The SteamID of chat room to unban the member from. + The SteamID of the member to unban from the chat. + + + + Requests persona state for a list of specified SteamID. + Results are returned in . + + A list of SteamIDs to request the info of. + The requested info flags. If none specified, this uses . + + + + Requests persona state for a specified SteamID. + Results are returned in . + + A SteamID to request the info of. + The requested info flags. If none specified, this uses . + + + + Ignores or unignores a friend on Steam. + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The SteamID of the friend to ignore or unignore. + if set to true, the friend will be ignored; otherwise, they will be unignored. + The Job ID of the request. This can be used to find the appropriate . + + + + Requests profile information for the given . + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The SteamID of the friend to request the details of. + The Job ID of the request. This can be used to find the appropriate . + + + + Requests the last few chat messages with a friend. + Results are returned in a + + SteamID of the friend + + + + Requests all offline messages. + This also marks them as read server side. + Results are returned in a . + + + + + Handles a client message. This should not be called directly. + + The packet message that contains the data. + + + + This handler handles all game coordinator messaging. + + + + + This callback is fired when a game coordinator message is recieved from the network. + + + + + Gets the game coordinator message type. + + + + + Gets the AppID of the game coordinator the message is from. + + + + + Gets a value indicating whether this message is protobuf'd. + + + true if this instance is protobuf'd; otherwise, false. + + + + + Gets the actual message. + + + + + Sends a game coordinator message for a specific appid. + + The GC message to send. + The app id of the game coordinator to send to. + + + + Handles a client message. This should not be called directly. + + The packet message that contains the data. + + + + This handler is used for interacting with the Steam network as a game server. + + + + + This callback is fired when the game server receives a status reply. + + + + + Gets a value indicating whether this game server is VAC secure. + + + true if this server is VAC secure; otherwise, false. + + + + + This callback is fired when ticket authentication has completed. + + + + + Gets the SteamID the ticket auth completed for. + + + + + Gets the GameID the ticket was for. + + + + + Gets the authentication state. + + + + + Gets the auth session response. + + + + + Gets the ticket CRC. + + + + + Gets the ticket sequence. + + + + + Represents the details required to log into Steam3 as a game server. + + + + + Gets or sets the authentication token used to log in as a game server. + + + + + Gets or sets the AppID this gameserver will serve. + + + + + Represents the details of the game server's current status. + + + + + Gets or sets the AppID this game server is serving. + + + + + Gets or sets the server's basic state as flags. + + + + + Gets or sets the directory the game data is in. + + + + + Gets or sets the IP address the game server listens on. + + + + + Gets or sets the port the game server listens on. + + + + + Gets or sets the port the game server responds to queries on. + + + + + Gets or sets the current version of the game server. + + + + + Logs onto the Steam network as a persistent game server. + The client should already have been connected at this point. + Results are return in a . + + The details to use for logging on. + No logon details were provided. + Username or password are not set within . + + + + Logs the client into the Steam3 network as an anonymous game server. + The client should already have been connected at this point. + Results are returned in a . + + The AppID served by this game server, or 0 for the default. + + + + Informs the Steam servers that this client wishes to log off from the network. + The Steam server will disconnect the client, and a will be posted. + + + + + Sends the server's status to the Steam network. + Results are returned in a callback. + + A object containing the server's status. + + + + Handles a client message. This should not be called directly. + + The packet message that contains the data. + + + + This handler is used for requesting server list details from Steam. + + + + + This callback is received in response to calling . + + + + + Represents a single server. + + + + + Gets the IP endpoint of the server. + + + + + Gets the number of Steam authenticated players on this server. + + + + + Gets the list of servers. + + + + + Details used when performing a server list query. + + + + + Gets or sets the AppID used when querying servers. + + + + + Gets or sets the filter used for querying the master server. + Check https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol for details on how the filter is structured. + + + + + Gets or sets the region that servers will be returned from. + + + + + Gets or sets the IP address that will be GeoIP located. + This is done to return servers closer to this location. + + + + + Gets or sets the maximum number of servers to return. + + + + + Requests a list of servers from the Steam game master server. + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The details for the request. + The Job ID of the request. This can be used to find the appropriate . + + + + Handles a client message. This should not be called directly. + + The packet message that contains the data. + + + + This handler is used for initializing Steam trades with other clients. + + + + + This callback is fired when this client receives a trade proposal. + + + + + Gets the result. + + + + + Gets the screenshot ID of the newly added screenshot. + + + + + Width of a screenshot thumnail + + + + + Represents the details required to add a screenshot + + + + + Gets or sets the Steam game ID this screenshot belongs to + + The game ID. + + + + Gets or sets the UFS image filepath. + + The UFS image filepath. + + + + Gets or sets the UFS thumbnail filepath. + + The UFS thumbnail filepath. + + + + Gets or sets the screenshot caption + + The screenshot caption. + + + + Gets or sets the screenshot privacy + + The screenshot privacy. + + + + Gets or sets the screenshot width + + The screenshot width. + + + + Gets or sets the screenshot height + + The screenshot height. + + + + Gets or sets the creation time + + The creation time. + + + + Gets or sets whether or not the screenshot contains spoilers + + Whether or not the screenshot contains spoilers. + + + + Initializes a new instance of the class. + + + + + Adds a screenshot to the user's screenshot library. The screenshot image and thumbnail must already exist on the UFS. + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The details of the screenshot. + The Job ID of the request. This can be used to find the appropriate . + + + + Handles a client message. This should not be called directly. + + The packet message that contains the data. + + + + This handler is used for initializing Steam trades with other clients. + + + + + This callback is fired when this client receives a trade proposal. + + + + + Gets the Trade ID of his proposal, used for replying. + + + + + Gets the SteamID of the client that sent the proposal. + + + + + This callback is fired when this client receives the response from a trade proposal. + + + + + Gets the Trade ID that this result is for. + + + + + Gets the response of the trade proposal. + + + + + Gets the SteamID of the client that responded to the proposal. + + + + + Gets the number of days Steam Guard is required to have been active on this account. + + + + + Gets the number of days a new device cannot trade for. + + + + + Gets the default number of days one cannot trade for after a password reset. + + + + + Gets the number of days one cannot trade for after a password reset. + + + + + This callback is fired when a trading session has started. + + + + + Gets the SteamID of the client that this the trading session has started with. + + + + + Proposes a trade to another client. + + The client to trade. + + + + Responds to a trade proposal. + + The trade id of the received proposal. + if set to true, the trade will be accepted. + + + + Cancels an already sent trade proposal. + + The user. + + + + Handles a client message. This should not be called directly. + + The packet message that contains the data. + + + + This handler is used for interacting with Steamworks unified messaging + + + + + This callback is returned in response to a service method sent through . + + + + + Gets the result of the message. + + + + + Gets the raw binary response. + + + + + Gets the name of the Service. + + + + + Gets the name of the RPC method. + + + + + Gets the full name of the service method. + + + + + Deserializes the response into a protobuf object. + + Protobuf type of the response message. + The response to the message sent through . + + + + This callback represents a service notification recieved though . + + + + + Gets the name of the Service. + + + + + Gets the name of the RPC method. + + + + + Gets the full name of the service method. + + + + + Gets the protobuf notification body. + + + + + This wrapper is used for expression-based RPC calls using Steam Unified Messaging. + + + + + Sends a message. + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The type of the protobuf object which is the response to the RPC call. + RPC call expression, e.g. x => x.SomeMethodCall(message); + Whether this message is a notification or not. + The JobID of the request. This can be used to find the appropriate . + + + + Sends a message. + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The type of a protobuf object. + Name of the RPC endpoint. Takes the format ServiceName.RpcName + The message to send. + Whether this message is a notification or not. + The JobID of the request. This can be used to find the appropriate . + + + + Creates a wrapper for expression-based unified messaging. + + The type of a service interface. + The wrapper. + + + + Handles a client message. This should not be called directly. + + The packet message that contains the data. + + + + This handler handles Steam user statistic related actions. + + + + + This callback is fired in response to . + + + + + Gets the result of the request. + + + + + Gets the current number of players according to Steam. + + + + + This callback is fired in response to and . + + + + + Gets the result of the request. + + + + + Leaderboard ID. + + + + + How many entires there are for requested leaderboard. + + + + + Sort method to use for this leaderboard. + + + + + Display type for this leaderboard. + + + + + This callback is fired in response to . + + + + + Represents a single package in this response. + + + + + Gets the for this entry. + + + + + Gets the global rank for this entry. + + + + + Gets the score for this entry. + + + + + Gets the attached to this entry. + + + + + Extra game-defined information regarding how the user got that score. + + + + + Gets the result of the request. + + + + + How many entires there are for requested leaderboard. + + + + + Gets the list of leaderboard entries this response contains. + + + + + Retrieves the number of current players for a given app id. + Results are returned in a . + + The app id to request the number of players for. + The Job ID of the request. This can be used to find the appropriate . + + + + Asks the Steam back-end for a leaderboard by name for a given appid. + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The AppID to request a leaderboard for. + Name of the leaderboard to request. + The Job ID of the request. This can be used to find the appropriate . + + + + Asks the Steam back-end for a leaderboard by name, and will create it if it's not yet. + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The AppID to request a leaderboard for. + Name of the leaderboard to create. + Sort method to use for this leaderboard + Display type for this leaderboard. + The Job ID of the request. This can be used to find the appropriate . + + + + Asks the Steam back-end for a set of rows in the leaderboard. + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The AppID to request leaderboard rows for. + ID of the leaderboard to view. + The Job ID of the request. This can be used to find the appropriate . + Range start or 0. + Range end or max leaderboard entries. + Type of request. + + + + Handles a client message. This should not be called directly. + + The instance containing the event data. + + + + This handler handles all user log on/log off related actions and callbacks. + + + + + This callback is returned in response to an attempt to log on to the Steam3 network through . + + + + + Gets the result of the logon. + + + + + Gets the extended result of the logon. + + + + + Gets the out of game secs per heartbeat value. + This is used internally by SteamKit to initialize heartbeating. + + + + + Gets the in game secs per heartbeat value. + This is used internally by SteamKit to initialize heartbeating. + + + + + Gets or sets the public IP of the client + + + + + Gets the Steam3 server time. + + + + + Gets the account flags assigned by the server. + + + + + Gets the client steam ID. + + + + + Gets the email domain. + + + + + Gets the Steam2 CellID. + + + + + Gets the Steam2 CellID ping threshold. + + + + + Gets the Steam2 ticket. + This is used for authenticated content downloads in Steam2. + This field will only be set when has been set to true. + + + + + Gets a value indicating whether the client should use PICS. + + + + + Gets the WebAPI authentication user nonce. + + + + + Gets the IP country code. + + + + + Gets the vanity URL. + + + + + Gets the threshold for login failures before Steam wants the client to migrate to a new CM. + + + + + Gets the threshold for disconnects before Steam wants the client to migrate to a new CM. + + + + + Gets the Steam parental settings. + + + + + This callback is returned when the client is told to log off by the server. + + + + + Gets the result of the log off. + + The result. + + + + This callback is returned some time after logging onto the network. + + + + + Gets the login key. + + The login key. + + + + Gets the unique ID. + + The unique ID. + + + + This callback is fired when the client recieves it's unique Steam3 session token. This token is used for authenticated content downloading in Steam2. + + + + + Gets the Steam3 session token used for authenticating to various other services. + + + + + This callback is received when account information is recieved from the network. + This generally happens after logon. + + + + + Gets the last recorded persona name used by this account. + + + + + Gets the country this account is connected from. + + + + + Gets the count of SteamGuard authenticated computers. + + + + + Gets the account flags for this account. + + + + + Gets the facebook ID of this account if it is linked with facebook. + + + + + Gets the facebook name if this account is linked with facebook. + + + + + This callback is received when wallet info is recieved from the network. + + + + + Gets a value indicating whether this instance has wallet data. + + + true if this instance has wallet data; otherwise, false. + + + + + Gets the currency code for this wallet. + + + + + Gets the balance of the wallet as a 32-bit integer, in cents. + + + + + Gets the balance of the wallet as a 64-bit integer, in cents. + + + + + This callback is received when the backend wants the client to update it's local machine authentication data. + + + + + Represents various one-time-password details. + + + + + Gets the OTP type. + + + + + Gets the OTP identifier. + + + + + Gets the OTP shared secret. + + + + + Gets the OTP time drift. + + + + + Implicitly converts into . + + The details to convert. + + + + + Gets the sentry file data that should be written. + + + + + Gets the number of bytes to write. + + + + + Gets the offset to write to. + + + + + Gets the name of the sentry file to write. + + + + + Gets the one-time-password details. + + + + + This callback is received when requesting a new WebAPI authentication user nonce. + + + + + Gets the result of the request. + + + + + Gets the authentication nonce. + + + + + This callback is fired when the client receives a marketing message update. + + + + + Represents a single marketing message. + + + + + Gets the unique identifier for this marketing message. + + + + + Gets the URL for this marketing message. + + + + + Gets the marketing message flags. + + + + + Gets the time of this marketing message update. + + + + + Gets the messages. + + + + + Represents the details required to log into Steam3 as a user. + + + + + Gets or sets the username. + + The username. + + + + Gets or sets the password. + + The password. + + + + Gets or sets the CellID. + + The CellID. + + + + Gets or sets the LoginID. This number is used for identifying logon session. + The purpose of this field is to allow multiple sessions to the same steam account from the same machine. + This is because Steam Network doesn't allow more than one session with the same LoginID to access given account at the same time from the same public IP. + If you want to establish more than one active session to given account, you must make sure that every session (to that account) from the same public IP has a unique LoginID. + By default LoginID is automatically generated based on machine's primary bind address, which is the same for all sessions. + Null value will cause this property to be automatically generated based on default behaviour. + If in doubt, set this property to null. + + The LoginID. + + + + Gets or sets the Steam Guard auth code used to login. This is the code sent to the user's email. + + The auth code. + + + + Gets or sets the 2-factor auth code used to login. This is the code that can be received from the authenticator apps. + + The two factor auth code. + + + + Gets or sets the login key used to login. This is a key that has been recieved in a previous Steam sesson by a . + + The login key. + + + + Gets or sets the 'Should Remember Password' flag. This is used in combination with the login key and for password-less login. + + The 'Should Remember Password' flag. + + + + Gets or sets the sentry file hash for this logon attempt, or null if no sentry file is available. + + The sentry file hash. + + + + Gets or sets the account instance. 1 for the PC instance or 2 for the Console (PS3) instance. + + The account instance. + + + + + + Gets or sets the account ID used for connecting clients when using the Console instance. + + + The account ID. + + + + + + Gets or sets a value indicating whether to request the Steam2 ticket. + This is an optional request only needed for Steam2 content downloads. + + + true if the Steam2 ticket should be requested; otherwise, false. + + + + + Gets or sets the client operating system type. + + The client operating system type. + + + + Gets or sets the client language. + + The client language. + + + + Initializes a new instance of the class. + + + + + Represents the details required to log into Steam3 as an anonymous user. + + + + + Gets or sets the CellID. + + The CellID. + + + + Gets or sets the client operating system type. + + The client operating system type. + + + + Gets or sets the client language. + + The client language. + + + + Initializes a new instance of the class. + + + + + Represents details required to complete a machine auth request. + + + + + The One-Time-Password details for this response. + + + + + Gets or sets the one-time-password type. + + + + + Gets or sets the one-time-password identifier. + + + + + Gets or sets the one-time-password value. + + + + + Gets or sets the target Job ID for the request. + This is provided in the for a . + + The Job ID. + + + + Gets or sets the result of updating the machine auth. + + The result. + + + + Gets or sets the number of bytes written for the sentry file. + + The number of bytes written. + + + + Gets or sets the offset within the sentry file that was written. + + The offset. + + + + Gets or sets the filename of the sentry file that was written. + + The name of the sentry file. + + + + Gets or sets the size of the sentry file. + + / The size of the sentry file. + + + + Gets or sets the last error that occurred while writing the sentry file, or 0 if no error occurred. + + The last error. + + + + Gets or sets the SHA-1 hash of the sentry file. + + The sentry file hash. + + + + Gets or sets the one-time-password details. + + The one time password details. + + + + Initializes a new instance of the class. + + + + + Gets the SteamID of this client. This value is assigned after a logon attempt has succeeded. + + The SteamID. + + + + Logs the client into the Steam3 network. + The client should already have been connected at this point. + Results are returned in a . + + The details to use for logging on. + No logon details were provided. + Username or password are not set within . + + + + Logs the client into the Steam3 network as an anonymous user. + The client should already have been connected at this point. + Results are returned in a . + + + + + Logs the client into the Steam3 network as an anonymous user. + The client should already have been connected at this point. + Results are returned in a . + + The details to use for logging on. + + + + Informs the Steam servers that this client wishes to log off from the network. + The Steam server will disconnect the client, and a will be posted. + + + + + Sends a machine auth response. + This should normally be used in response to a . + + The details pertaining to the response. + + + + Requests a new WebAPI authentication user nonce. + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The Job ID of the request. This can be used to find the appropriate . + + + + Accepts the new Login Key provided by a . + + The callback containing the new Login Key. + + + + Handles a client message. This should not be called directly. + + The packet message that contains the data. + + + + This handler is used for requesting files published on the Steam Workshop. + + + + + This callback is received in response to calling . + + + + + Represents the details of a single published file. + + + + + Gets the file ID. + + + + + Gets the number of reports for this file. + + + + + Gets the score of this file, based on up and down votes. + + + + + Gets the total count of up votes. + + + + + Gets the total count of down votes. + + + + + Gets the result. + + + + + Gets the list of enumerated files. + + + + + Gets the count of total results. + + + + + This callback is received in response to calling . + + + + + Represents the details of a single published file. + + + + + Gets the file ID. + + + + + Gets the result. + + + + + Gets the list of enumerated files. + + + + + Gets the count of total results. + + + + + This callback is received in response to calling . + + + + + Represents the details of a single published file. + + + + + Gets the file ID. + + + + + Gets the time this file was subscribed to. + + + + + Gets the result. + + + + + Gets the list of enumerated files. + + + + + Gets the count of total results. + + + + + This callback is received in response to calling . + + + + + Represents the details of a single published file. + + + + + Gets the file ID. + + + + + Gets the timestamp of this file. + + + + + Gets the result. + + + + + Gets the list of enumerated files. + + + + + Gets the count of total results. + + + + + Represents the details of an enumeration request used for the local user's files. + + + + + Gets or sets the AppID of the workshop to enumerate. + + + The AppID. + + + + + Gets or sets the sort order. + This value is only used by . + + + The sort order. + + + + + Gets or sets the start index. + + + The start index. + + + + + Gets or sets the user action to filter by. + This value is only used by . + + + The user action. + + + + + Enumerates the list of published files for the current logged in user. + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The specific details of the request. + The Job ID of the request. This can be used to find the appropriate . + + + + Enumerates the list of subscribed files for the current logged in user. + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The specific details of the request. + The Job ID of the request. This can be used to find the appropriate . + + + + Enumerates the list of published files for the current logged in user based on user action. + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The specific details of the request. + The Job ID of the request. This can be used to find the appropriate . + + + + Represents the details of an enumeration request for all published files. + + + + + Gets or sets the AppID of the workshop to enumerate. + + + The AppID. + + + + + Gets or sets the type of the enumeration. + + + The type. + + + + + Gets or sets the start index. + + + The start index. + + + + + Gets or sets the days. + + + The days. + + + + + Gets or sets the number of results to return. + + + The number of results. + + + + + Gets the list of tags to enumerate. + + + + + Gets the list of user tags to enumerate. + + + + + Initializes a new instance of the class. + + + + + Enumerates the list of all published files on the Steam workshop. + Results are returned in a . + The returned can also be awaited to retrieve the callback result. + + The specific details of the request. + The Job ID of the request. This can be used to find the appropriate . + + + + Handles a client message. This should not be called directly. + + The packet message that contains the data. + + + + Tracks a job with this manager. + + The asynchronous job to track. + + + + Passes a callback to a pending async job. + If the given callback completes the job, the job is removed from this manager. + + The JobID. + The callback. + + + + Extends the lifetime of a job. + + The job identifier. + + + + Marks a certain job as remotely failed. + + The job identifier. + + + + Cancels and clears all jobs being tracked. + + + + + Enables or disables periodic checks for job timeouts. + + Whether or not job timeout checks should be enabled. + + + + This is called periodically to cancel and clear out any jobs that have timed out (no response from Steam). + + + + + Retrieves a job from this manager, and optionally removes it from tracking. + + The JobID. + If set to true, this job is removed from tracking. + + + + + Thrown when Steam encounters a remote error with a pending . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message that describes the error. + + + + Initializes a new instance of the class. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + This class is a utility for routing callbacks to function calls. + In order to bind callbacks to functions, an instance of this class must be created for the + instance that will be posting callbacks. + + + + + Initializes a new instance of the class. + + The instance to handle the callbacks of. + + + + Runs a single queued callback. + If no callback is queued, this method will instantly return. + + + + + Blocks the current thread to run a single queued callback. + If no callback is queued, the method will block for the given timeout. + + The length of time to block. + + + + Blocks the current thread to run all queued callbacks. + If no callback is queued, the method will block for the given timeout. + + The length of time to block. + + + + Blocks the current thread to run a single queued callback. + If no callback is queued, the method will block until one is posted. + + + + + Registers the provided to receive callbacks of type . + + The of the callbacks that should be subscribed to. + If this is , all callbacks of type will be recieved. + The function to invoke with the callback. + The type of callback to subscribe to. + An . Disposing of the return value will unsubscribe the . + + + + Registers the provided to receive callbacks of type . + + The function to invoke with the callback. + An . Disposing of the return value will unsubscribe the . + + + + A callback message + + + + + The that this callback is associated with. If there is no job associated, + then this will be + + + + + Represents the base object all callbacks are based off. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the job ID this callback refers to. If it is not a job callback, it will be . + + + + + Represents a single client that connects to the Steam3 network. + This class is also responsible for handling the registration of client message handlers and callbacks. + + + + + This callback is received after attempting to connect to the Steam network. + + + + + This callback is received when the steamclient is physically disconnected from the Steam network. + + + + + If true, the disconnection was initiated by calling . + If false, the disconnection was the cause of something not user-controlled, such as a network failure or + a forcible disconnection by the remote server. + + + + + This callback is received when the client has received the CM list from Steam. + + + + + Gets the CM server list. + + + + + This callback is fired when the client receives a list of all publically available Steam3 servers. + This callback may be fired multiple times for different server lists. + + + + + Gets the server list. + + + + + Initializes a new instance of the class with the default configuration. + + + + + Initializes a new instance of the class with a specific configuration. + + The configuration to use for this client. + The configuration object is null + + + + Adds a new handler to the internal list of message handlers. + + The handler to add. + A handler of that type is already registered. + + + + Removes a registered handler by name. + + The handler name to remove. + + + + Removes a registered handler. + + The handler to remove. + + + + Returns a registered handler. + + The type of the handler to cast to. Must derive from ClientMsgHandler. + + A registered handler on success, or null if the handler could not be found. + + + + + Gets the next callback object in the queue. + This function does not dequeue the callback, you must call FreeLastCallback after processing it. + + The next callback in the queue, or null if no callback is waiting. + + + + Gets the next callback object in the queue, and optionally frees it. + + if set to true this function also frees the last callback if one existed. + The next callback in the queue, or null if no callback is waiting. + + + + Blocks the calling thread until a callback object is posted to the queue. + This function does not dequeue the callback, you must call FreeLastCallback after processing it. + + The callback object from the queue. + + + + Blocks the calling thread until a callback object is posted to the queue, or null after the timeout has elapsed. + This function does not dequeue the callback, you must call FreeLastCallback after processing it. + + The length of time to block. + A callback object from the queue if a callback has been posted, or null if the timeout has elapsed. + + + + Blocks the calling thread until a callback object is posted to the queue, and optionally frees it. + + if set to true this function also frees the last callback. + The callback object from the queue. + + + + Blocks the calling thread until a callback object is posted to the queue, and optionally frees it. + + if set to true this function also frees the last callback. + The length of time to block. + A callback object from the queue if a callback has been posted, or null if the timeout has elapsed. + + + + Blocks the calling thread until the queue contains a callback object. Returns all callbacks, and optionally frees them. + + if set to true this function also frees all callbacks. + The length of time to block. + All current callback objects in the queue. + + + + Frees the last callback in the queue. + + + + + Posts a callback to the queue. This is normally used directly by client message handlers. + + The message. + + + + Returns the next available JobID for job based messages. + This function is thread-safe. + + The next available JobID. + + + + Called when a client message is received from the network. + + The packet message. + + + + Called when the client is securely connected to Steam3. + + + + + Called when the client is physically disconnected from Steam3. + + + + + Interface to configure a before it is created. + A reference to the underlying object should not be live beyond the configurator function's scope. + + + + + Configures this for a particular Steam cell. + + The Steam Cell ID to prioritize when connecting. + A builder with modified configuration. + + + + Configures this with a connection timeout. + + The connection timeout used when connecting to Steam serves. + A builder with modified configuration. + + + + Configures this with the default s to request from Steam. + + The default persona state flags used when requesting information for a new friend, or + when calling SteamFriends.RequestFriendInfo without specifying flags. + A builder with modified configuration. + + + + Configures this to discover available servers. + + Whether or not to use the Steam Directory to discover available servers. + A builder with modified configuration. + + + + Configures this with custom HTTP behaviour. + + A function to create and configure a new HttpClient. + A builder with modified configuration. + + + + Configures how this will be used to connect to Steam. + + The supported protocol types to use when attempting to connect to Steam. + A builder with modified configuration. + + + + Configures the server list provider for this . + + The server list provider to use.. + A builder with modified configuration. + + + + Configures the Universe that this belongs to. + + The Universe to connect to. This should always be unless + you work at Valve and are using this internally. If this is you, hello there. + A builder with modified configuration. + + + + Configures the Steam Web API address for this . + + The base address of the Steam Web API to connect to. + Use of "partner.steam-api.com" requires a Partner API Key. + A builder with modified configuration. + + + + Configures this with a Web API key to attach to requests. + + An API key to be used for authorized requests. + Keys can be obtained from https://steamcommunity.com/dev or the Steamworks Partner site. + A builder with modified configuration. + + + + Factory function to create a user-configured HttpClient. + The HttpClient will be disposed of after use. + + A new to be used to send HTTP requests. + + + + Configuration object to use. + This object should not be mutated after it is passed to one or more objects. + + + + + Do not use directly - create a SteamConfiguration object by using a builder or helper method. + + + + + Creates a , allowing for configuration. + + A method which is used to configure the configuration. + A configuration object. + + + + Whether or not to use the Steam Directory to discover available servers. + + + + + The Steam Cell ID to prioritize when connecting. + + + + + The connection timeout used when connecting to Steam serves. + + + + + The default persona state flags used when requesting information for a new friend, or + when calling SteamFriends.RequestFriendInfo without specifying flags. + + + + + Factory function to create a user-configured HttpClient. + + + + + The supported protocol types to use when attempting to connect to Steam. + + + + + The server list provider to use. + + + + + The Universe to connect to. This should always be unless + you work at Valve and are using this internally. If this is you, hello there. + + + + + The base address of the Steam Web API to connect to. + Use of "partner.steam-api.com" requires a Partner API key. + + + + + An API key to be used for authorized requests. + Keys can be obtained from https://steamcommunity.com/dev or the Steamworks Partner site. + + + + + The server list used for this configuration. + If this configuration is used by multiple instances, they all share the server list. + + + + + Represents a single client that connects to a UFS server. + + + + + This callback is received after attempting to connect to the UFS server. + + + + + This callback is received when the client is physically disconnected from the UFS server. + + + + + If true, the disconnection was initiated by calling . + If false, the disconnection was the cause of something not user-controlled, such as a network failure or + a forcible disconnection by the remote server. + + + + + This callback is returned in response to an attempt to log on to the UFS server through . + + + + + Gets the result of the logon + + + + + This callback is returned in response to a request to upload a file through . + + + + + Gets the result of the upload request + + + + + Gets whether or not the file upload should proceed over HTTP + + + + + Gets whether or not the file upload should proceed over HTTPS + + + + + Gets whether or not the file should be encrypted during upload + + + + + Gets the SHA hash of the file to be uploaded + + + + + Gets the JobID on the UFS server. + + + + + This callback is returned when a file upload through is completed. + + + + + Gets the result of the file upload + + + + + Gets the SHA hash of the file that was uploaded + + + + + Gets the connected universe of this client. + This value will be if the client is not connected to Steam. + + The universe. + + + + Gets a value indicating whether this instance is connected to the remote UFS server. + + + true if this instance is connected; otherwise, false. + + + + + Gets or sets the connection timeout used when connecting to the UFS server. + The default value is 5 seconds. + + + The connection timeout. + + + + + Initializes a new instance of the class. + + + The parent instance that the UFS connection is for. + Callbacks will also be posted through this instance. + + + + + Connects this client to a UFS server. + This begins the process of connecting and encrypting the data channel between the client and the UFS server. + Results are returned asynchronously in a . + If the UFS server that this client attempts to connect to is down, a will be posted instead. + will not attempt to reconnect to Steam, you must handle this callback and call again, preferrably after a short delay. + In order to connect to the UFS server, the parent must be connected to the CM server. + + + The of the UFS server to connect to. + If null, will randomly select a UFS server from the 's list of servers. + + + + + Disconnects this client from the UFS server. + a will be posted upon disconnection. + + + + + Represents all the information required to upload a file to the UFS server. + + + + + Gets or sets the AppID this upload request is for. + + + The AppID. + + + + + Gets or sets the remote name of the file that is being uploaded. + + + The name of the file. + + + + + Gets or sets the physical file data for this upload. + + + The file data. + + + + + Gets or sets the JobID of this file upload. This value should be assigned from . + + + The job ID. + + + + + Attempt to logon to the UFS and authorize the client for the given AppIDs. + The should be connected before this point. + Results are returned in a . + + The AppIDs to authorize when connecting to the UFS. + The Job ID of the request. This can be used to find the appropriate . + + + + Begins a request to upload a file to the UFS. + The should be logged on before this point. + Results are returned in a . + + The details to use for uploading the file. + The Job ID of the request. This can be used to find the appropriate . + + + + Uploads the actual contents of a file to the UFS. + The should be logged on before this point, and the previous request to upload a file must have completed successfully. + Results are returned in a . + + The details to use for uploading the file. + The Job ID of the request. This can be used to find the appropriate . + + + + Sends the specified client message to the UFS server. + This method will automatically assign the correct of the message, as given by the parent . + + The client message to send. + + + + Helper class to load servers from the Content Server Directory Service Web API. + + + + + Load a list of servers from the Content Server Directory Service. + + Configuration Object + A with the Result set to an enumerable list of s. + + + + Load a list of servers from the Content Server Directory Service. + + Configuration Object + Cancellation Token + A with the Result set to an enumerable list of s. + + + + Load a list of servers from the Content Server Directory Service. + + Configuration Object + Preferred steam cell id + Cancellation Token + A with the Result set to an enumerable list of s. + + + + Load a list of servers from the Content Server Directory Service. + + Configuration Object + Preferred steam cell id + Max number of servers to return. + Cancellation Token + A with the Result set to an enumerable list of s. + + + + Provides helper extensions to make WebAPI interfaces from existing SteamConfiguration. + + + + + Retrieves a dynamic handler capable of interacting with the specified interface on the Web API. + + The configuration to use for this Web API interface. + The interface to retrieve a handler for. + A dynamic object to interact with the Web API. + + + + Retrieves a dynamic handler capable of interacting with the specified interface on the Web API. + + The configuration to use for this Web API interface. + The interface to retrieve a handler for. + A dynamic object to interact with the Web API. + + + + Helper class to load servers from the Steam Directory Web API. + + + + + Load a list of servers from the Steam Directory. + + Configuration Object + A with the Result set to an enumerable list of s. + + + + Load a list of servers from the Steam Directory. + + Configuration Object + Cancellation Token + A with the Result set to an enumerable list of s. + + + + Load a list of servers from the Steam Directory. + + Configuration Object + Max number of servers to return. The API will typically return this number per server type (socket and websocket). + Cancellation Token + A with the Result set to an enumerable list of s. + + + + Utility class for interacting with the Steam Web API. + + + + + The default base address used for the Steam Web API. + A different base address can be specified in a object, or + as a function argument where overloads are available. + + + + + Represents a single interface that exists within the Web API. + This is a dynamic object that allows function calls to interfaces with minimal code. + + + + + Gets or sets the timeout value in milliseconds for any web requests made to the WebAPI. + + + The timeout value in milliseconds. The default value is 100 seconds. + + + + + Manually calls the specified Web API function with the provided details. + + The function name to call. + The version of the function to call. + A dictionary of string key value pairs representing arguments to be passed to the API. + A object representing the results of the Web API call. + The function name or request method provided were null. + An network error occurred when performing the request. + A network error occurred when performing the request. + An error occured when parsing the response from the WebAPI. + + + + Manually calls the specified Web API function with the provided details. + + The function name to call. + The version of the function to call. + A dictionary of string key value pairs representing arguments to be passed to the API. + The http request method. Either "POST" or "GET". + A object representing the results of the Web API call. + The function name or request method provided were null. + An network error occurred when performing the request. + A network error occurred when performing the request. + An error occured when parsing the response from the WebAPI. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Provides the implementation for operations that invoke a member. + Classes derived from the class can + override this method to specify dynamic behavior for operations such as calling a method. + This method should not be called directly, it is called through dynamic method calls. + + + Provides information about the dynamic operation. + The binder.Name property provides the name of the member on which the dynamic operation is performed. + For example, for the statement sampleObject.SampleMethod(100), where sampleObject is an instance of the + class derived from the class, binder.Name returns "SampleMethod". + The binder.IgnoreCase property specifies whether the member name is case-sensitive. + + + The arguments that are passed to the object member during the invoke operation. For example, + for the statement sampleObject.SampleMethod(100), where sampleObject is derived from the + class, the first argument to is equal to 100. + + The result of the member invocation. + + true if the operation is successful; otherwise, false. If this method returns false, the run-time + binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.) + + + Dynamic method is called with non-named argument. + All parameters must be passed as name arguments to API calls. + - or - + The dynamic method name was not in the correct format. + All API function calls must be in the format 'FunctionName###' where the optional ###'s represent a version number. + + + The function version number specified was out of range. + + + + + Represents a single interface that exists within the Web API. + This is a dynamic object that allows function calls to interfaces with minimal code. + This version of the class makes use of TPL Tasks to provide an asynchronous API. + + + + + Gets or sets the timeout value in milliseconds for any web requests made to the WebAPI. + + + The timeout value in milliseconds. The default value is 100 seconds. + + + + + Manually calls the specified Web API function with the provided details. + + The function name to call. + The version of the function to call. + A dictionary of string key value pairs representing arguments to be passed to the API. + The http request method. Either "POST" or "GET". + A that contains a object representing the results of the Web API call. + The function name or request method provided were null. + An network error occurred when performing the request. + A network error occurred when performing the request. + An error occured when parsing the response from the WebAPI. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Provides the implementation for operations that invoke a member. + Classes derived from the class can + override this method to specify dynamic behavior for operations such as calling a method. + This method should not be called directly, it is called through dynamic method calls. + + + Provides information about the dynamic operation. + The binder.Name property provides the name of the member on which the dynamic operation is performed. + For example, for the statement sampleObject.SampleMethod(100), where sampleObject is an instance of the + class derived from the class, binder.Name returns "SampleMethod". + The binder.IgnoreCase property specifies whether the member name is case-sensitive. + + + The arguments that are passed to the object member during the invoke operation. For example, + for the statement sampleObject.SampleMethod(100), where sampleObject is derived from the + class, the first argument to is equal to 100. + + The result of the member invocation. + + true if the operation is successful; otherwise, false. If this method returns false, the run-time + binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.) + + + Dynamic method is called with non-named argument. + All parameters must be passed as name arguments to API calls. + - or - + The dynamic method name was not in the correct format. + All API function calls must be in the format 'FunctionName###' where the optional ###'s represent a version number. + + + The function version number specified was out of range. + + + + + Retrieves a dynamic handler capable of interacting with the specified interface on the Web API. + + The base of the Steam Web API. + The interface to retrieve a handler for. + An optional API key to be used for authorized requests. + A dynamic object to interact with the Web API. + + + + Retrieves a dynamic handler capable of interacting with the specified interface on the Web API. + + The interface to retrieve a handler for. + An optional API key to be used for authorized requests. + A dynamic object to interact with the Web API. + + + + Retrieves a dynamic handler capable of interacting with the specified interface on the Web API. + + The interface to retrieve a handler for. + An optional API key to be used for authorized requests. + A dynamic object to interact with the Web API. + + + + Retrieves a dynamic handler capable of interacting with the specified interface on the Web API. + + The base of the Steam Web API. + The interface to retrieve a handler for. + An optional API key to be used for authorized requests. + A dynamic object to interact with the Web API. + + + + Thrown when WebAPI request fails. + + + + + Initializes a new instance of the class. + + The message that describes the error. + HTTP response message including the status code and data. + + + + Represents a Steam3 depot manifest. + + + + + Represents a single chunk within a file. + + + + + Gets or sets the SHA-1 hash chunk id. + + + + + Gets or sets the expected Adler32 checksum of this chunk. + + + + + Gets or sets the chunk offset. + + + + + Gets or sets the compressed length of this chunk. + + + + + Gets or sets the decompressed length of this chunk. + + + + + Initializes a new instance of the class. + + + + + Represents a single file within a manifest. + + + + + Gets the name of the file. + + + + + Gets the chunks that this file is composed of. + + + + + Gets the file flags + + + + + Gets the total size of this file. + + + + + Gets the hash of this file. + + + + + Gets the list of files within this manifest. + + + + + Gets a value indicating whether filenames within this depot are encrypted. + + + true if the filenames are encrypted; otherwise, false. + + + + + Gets the depot id. + + + + + Gets the manifest id. + + + + + Gets the depot creation time. + + + + + Gets the total uncompressed size of all files in this depot. + + + + + Gets the total compressed size of all files in this depot. + + + + + Attempts to decrypts file names with the given encryption key. + + The encryption key. + true if the file names were successfully decrypted; otherwise, false. + + + + This 64bit structure represents an app, mod, shortcut, or p2p file on the Steam network. + + + + + Represents various types of games. + + + + + A Steam application. + + + + + A game modification. + + + + + A shortcut to a program. + + + + + A peer-to-peer file. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The 64bit integer to assign this GameID from. + + + + Initializes a new instance of the class. + + The 32bit app id to assign this GameID from. + + + + Initializes a new instance of the class. + + The base app id of the mod. + The game folder name of the mod. + + + + Initializes a new instance of the class. + + The path to the executable, usually quoted. + The name of the application shortcut. + + + + Sets the various components of this GameID from a 64bit integer form. + + The 64bit integer to assign this GameID from. + + + + Converts this GameID into it's 64bit integer form. + + A 64bit integer representing this GameID. + + + + Performs an implicit conversion from to . + + The GameID to convert.. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The GameId to convert. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The 64bit integer representing a GameID to convert. + + The result of the conversion. + + + + + Gets or sets the app id. + + + The app IDid + + + + + Gets or sets the type of the app. + + + The type of the app. + + + + + Gets or sets the mod id. + + + The mod ID. + + + + + Gets a value indicating whether this instance is a mod. + + + true if this instance is a mod; otherwise, false. + + + + + Gets a value indicating whether this instance is a shortcut. + + + true if this instance is a shortcut; otherwise, false. + + + + + Gets a value indicating whether this instance is a peer-to-peer file. + + + true if this instance is a p2p file; otherwise, false. + + + + + Gets a value indicating whether this instance is a steam app. + + + true if this instance is a steam app; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Implements the operator ==. + + The left side GameID. + The right side GameID. + + The result of the operator. + + + + + Implements the operator !=. + + The left side GameID. + The right side GameID. + + The result of the operator. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Represents a globally unique identifier within the Steam network. + Guaranteed to be unique across all racks and servers for a given Steam universe. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The GID value. + + + + Performs an implicit conversion from to . + + The gid. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The gid. + + The result of the conversion. + + + + + Gets or sets the sequential count for this GID. + + + The sequential count. + + + + + Gets or sets the start time of the server that generated this GID. + + + The start time. + + + + + Gets or sets the process ID of the server that generated this GID. + + + The process ID. + + + + + Gets or sets the box ID of the server that generated this GID. + + + The box ID. + + + + + Gets or sets the entire 64bit value of this GID. + + + The value. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Implements the operator ==. + + The left side GID. + The right side GID. + + The result of the operator. + + + + + Implements the operator !=. + + The left side GID. + The right side GID. + + The result of the operator. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Represents a single unique handle to a piece of User Generated Content. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The UGC ID. + + + + Performs an implicit conversion from to . + + The UGC handle. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The UGC ID. + + The result of the conversion. + + + + + Represents an identifier of a network task known as a job. + + + + + Represents an invalid JobID. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The Job ID to initialize this instance with. + + + + Performs an implicit conversion from to . + + The Job ID. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The Job ID. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The asynchronous job. + + The result of the conversion. + + + + + The base class for awaitable versions of a . + Should not be used or constructed directly, but rather with . + + + + + Gets the for this job. + + + + + Gets or sets the period of time before this job will be considered timed out and will be canceled. By default this is 10 seconds. + + + + + Adds a callback to the async job's result set. + + The callback. + true if this result completes the set; otherwise, false. + + + + Sets this job as failed, either remotely or due to a message timeout. + + + If set to true this job is marked as failed because Steam informed us of a job failure; + otherwise, this job has failed due to a message timeout. + + + + + Marks this job as having received a heartbeat and extends the job's timeout. + + + + + Represents an awaitable version of a . + Can either be converted to a TPL with or can be awaited directly. + + The callback type that will be returned by this async job. + + + + Initializes a new instance of the class. + + The that this job will be associated with. + The Job ID value associated with this async job. + + + + Converts this instance into a TPL . + + + + + Gets an awaiter used to await this . + An awaiter instance. + This method is intended for compiler use rather than use directly in code. + + + + Adds a callback to the async job's result set. For an , this always completes the set. + + The callback. + Always true. + + + + Sets this job as failed, either remotely or due to a message timeout. + + + If set to true this job is marked as failed because Steam informed us of a job failure; + otherwise, this job has failed due to a message timeout. + + + + + Represents an awaitable version of a . + Can either be converted to a TPL with or can be awaited directly. + This type of async job can contain multiple callback results. + + The callback type that will be returned by this async job. + + + + The set of callback results for an . + + + + + Gets a value indicating whether this is complete and contains every result sent by Steam. + + + + + Gets a value indicating whether the parent received an incomplete result set and then encountered a remote failure. + + + + + Gets a read only collection of callback results for this async job. + + + + + Initializes a new instance of the class. + + The that this job will be associated with. + The Job ID value associated with this async job. + The condition that must be fulfilled for the result set to be considered complete. + + + + Converts this instance into a TPL . + + + + + Gets an awaiter used to await this . + An awaiter instance. + This method is intended for compiler use rather than use directly in code. + + + + Adds a callback to the async job's result set. + + The callback. + true if this result completes the set; otherwise, false. + + + + Sets this job as failed, either remotely or due to a message timeout. + + + If set to true this job is marked as failed because Steam informed us of a job failure; + otherwise, this job has failed due to a message timeout. + + + + + Represents a recursive string key to arbitrary value container. + + + + + Initializes a new instance of the class. + + The optional name of the root key. + The optional value assigned to the root key. + + + + Represents an invalid given when a searched for child does not exist. + + + + + Gets or sets the name of this instance. + + + + + Gets or sets the value of this instance. + + + + + Gets the children of this instance. + + + + + Gets or sets the child with the specified key. + When retrieving by key, if no child with the given key exists, is returned. + + + + + Returns the value of this instance as a string. + + The value of this instance as a string. + + + + Attempts to convert and return the value of this instance as an unsigned byte. + If the conversion is invalid, the default value is returned. + + The default value to return if the conversion is invalid. + The value of this instance as an unsigned byte. + + + + Attempts to convert and return the value of this instance as an unsigned short. + If the conversion is invalid, the default value is returned. + + The default value to return if the conversion is invalid. + The value of this instance as an unsigned short. + + + + Attempts to convert and return the value of this instance as an integer. + If the conversion is invalid, the default value is returned. + + The default value to return if the conversion is invalid. + The value of this instance as an integer. + + + + Attempts to convert and return the value of this instance as an unsigned integer. + If the conversion is invalid, the default value is returned. + + The default value to return if the conversion is invalid. + The value of this instance as an unsigned integer. + + + + Attempts to convert and return the value of this instance as a long. + If the conversion is invalid, the default value is returned. + + The default value to return if the conversion is invalid. + The value of this instance as a long. + + + + Attempts to convert and return the value of this instance as an unsigned long. + If the conversion is invalid, the default value is returned. + + The default value to return if the conversion is invalid. + The value of this instance as an unsigned long. + + + + Attempts to convert and return the value of this instance as a float. + If the conversion is invalid, the default value is returned. + + The default value to return if the conversion is invalid. + The value of this instance as a float. + + + + Attempts to convert and return the value of this instance as a boolean. + If the conversion is invalid, the default value is returned. + + The default value to return if the conversion is invalid. + The value of this instance as a boolean. + + + + Attempts to convert and return the value of this instance as an enum. + If the conversion is invalid, the default value is returned. + + The default value to return if the conversion is invalid. + The value of this instance as an enum. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Attempts to load the given filename as a text . + + The path to the file to load. + a instance if the load was successful, or null on failure. + + This method will swallow any exceptions that occur when reading, use if you wish to handle exceptions. + + + + + Attempts to load the given filename as a binary . + + The path to the file to load. + The resulting object if the load was successful, or null if unsuccessful. + true if the load was successful, or false on failure. + + + + Attempts to create an instance of from the given input text. + + The input text to load. + a instance if the load was successful, or null on failure. + + This method will swallow any exceptions that occur when reading, use if you wish to handle exceptions. + + + + + Populate this instance from the given as a text . + + The input to read from. + true if the read was successful; otherwise, false. + + + + Opens and reads the given filename as text. + + + The file to open and read. + true if the read was successful; otherwise, false. + + + + Saves this instance to file. + + The file path to save to. + If set to true, saves this instance as binary. + + + + Saves this instance to a given . + + The to save to. + If set to true, saves this instance as binary. + + + + Populate this instance from the given as a binary . + + The input to read from. + true if the read was successful; otherwise, false. + + + + Represents the binary Steam3 manifest format. + + + + + Represents a backed MessageObject structure, which are often sent by the Steam servers. + + + + + Gets the inner object. + + + + + Initializes a new instance of the class, using the provided KeyValues object. + + The KeyValue backing store for this message object. + + + + Initializes a new instance of the class with an empty inner KeyValues. + + + + + Populates this MessageObject instance from the data inside the given stream. + + The stream to load data from. + true on success; otherwise, false. + + + + Writes this MessageObject instance to the given stream. + + The stream to write to. + + + + The base class used for wrapping common ulong types, to introduce type safety and distinguish between common types. + + + + + Gets or sets the value. + + + The value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The value to initialize this handle to. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Indicates whether the current object is equal to another object of the same type. + + An object to compare with this object. + + true if the current object is equal to the other parameter; otherwise, false. + + + + + Represents a handle to a published file on the Steam workshop. + + + + + Initializes a new instance of the class. + + The file id. + + + + Performs an implicit conversion from to . + + The published file. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The file id. + + The result of the conversion. + + + + + Implements the operator ==. + + The first published file. + The second published file. + + The result of the operator. + + + + + Implements the operator !=. + + The first published file. + The second published file. + + The result of the operator. + + + + + This 64-bit structure is used for identifying various objects on the Steam network. + + + + + The account instance value when representing all instanced SteamIDs. + + + + + The account instance value for a desktop . + + + + + The account instance value for a console . + + + + + The account instance for mobile or web based SteamIDs. + + + + + Masking value used for the account id. + + + + + Masking value used for packing chat instance flags into a . + + + + + Represents various flags a chat may have, packed into its instance. + + + + + This flag is set for clan based chat SteamIDs. + + + + + This flag is set for lobby based chat SteamIDs. + + + + + This flag is set for matchmaking lobby based chat SteamIDs. + + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + The account ID. + The universe. + The account type. + + + + + Initializes a new instance of the class. + + The account ID. + The instance. + The universe. + The account type. + + + + Initializes a new instance of the class. + + The 64bit integer to assign this SteamID from. + + + + Initializes a new instance of the class from a Steam2 "STEAM_" rendered form. + This constructor assumes the rendered SteamID is in the public universe. + + A "STEAM_" rendered form of the SteamID. + + + + Initializes a new instance of the class from a Steam2 "STEAM_" rendered form and universe. + + A "STEAM_" rendered form of the SteamID. + The universe the SteamID belongs to. + + + + Sets the various components of this SteamID instance. + + The account ID. + The universe. + The account type. + + + + Sets the various components of this SteamID instance. + + The account ID. + The instance. + The universe. + The account type. + + + + Sets the various components of this SteamID from a Steam2 "STEAM_" rendered form and universe. + + A "STEAM_" rendered form of the SteamID. + The universe the SteamID belongs to. + true if this instance was successfully assigned; otherwise, false if the given string was in an invalid format. + + + + Sets the various components of this SteamID from a Steam3 "[X:1:2:3]" rendered form and universe. + + A "[X:1:2:3]" rendered form of the SteamID. + true if this instance was successfully assigned; otherwise, false if the given string was in an invalid format. + + + + Sets the various components of this SteamID from a 64bit integer form. + + The 64bit integer to assign this SteamID from. + + + + Converts this SteamID into it's 64bit integer form. + + A 64bit integer representing this SteamID. + + + + Returns a static account key used for grouping accounts with differing instances. + + A 64bit static account key. + + + + Gets a value indicating whether this instance is a blank anonymous account + + + true if this instance is a blank anon account; otherwise, false. + + + + + Gets a value indicating whether this instance is a game server account. + + + true if this instance is a game server account; otherwise, false. + + + + + Gets a value indicating whether this instance is a persistent game server account. + + + true if this instance is a persistent game server account; otherwise, false. + + + + + Gets a value indicating whether this instance is an anonymous game server account. + + + true if this instance is an anon game server account; otherwise, false. + + + + + Gets a value indicating whether this instance is a content server account. + + + true if this instance is a content server account; otherwise, false. + + + + + Gets a value indicating whether this instance is a clan account. + + + true if this instance is a clan account; otherwise, false. + + + + + Gets a value indicating whether this instance is a chat account. + + + true if this instance is a chat account; otherwise, false. + + + + + Gets a value indicating whether this instance is a lobby. + + + true if this instance is a lobby; otherwise, false. + + + + + Gets a value indicating whether this instance is an individual account. + + + true if this instance is an individual account; otherwise, false. + + + + + Gets a value indicating whether this instance is an anonymous account. + + + true if this instance is an anon account; otherwise, false. + + + + + Gets a value indicating whether this instance is an anonymous user account. + + + true if this instance is an anon user account; otherwise, false. + + + + + Gets a value indicating whether this instance is a console user account. + + + true if this instance is a console user account; otherwise, false. + + + + + Gets a value indicating whether this instance is valid. + + + true if this instance is valid; otherwise, false. + + + + + Gets or sets the account id. + + + The account id. + + + + + Gets or sets the account instance. + + + The account instance. + + + + + Gets or sets the account type. + + + The account type. + + + + + Gets or sets the account universe. + + + The account universe. + + + + + Renders this instance into it's Steam2 "STEAM_" or Steam3 representation. + + If set to true, the Steam3 rendering will be returned; otherwise, the Steam2 STEAM_ rendering. + + A string Steam2 "STEAM_" representation of this SteamID, or a Steam3 representation. + + + + + Converts this clan ID to a chat ID. + + The Chat ID for this clan's group chat. + This SteamID is not a clan ID. + + + + Converts this chat ID to a clan ID. + This can be used to get the group that a group chat is associated with. + + true if this chat ID represents a group chat, false otherwise.\ + If the method returned true, then this is the group that this chat is associated with. Otherwise, this is null. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Performs an implicit conversion from to . + + The SteamID. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + A 64bit integer representing the SteamID. + + The result of the conversion. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Implements the operator ==. + + The left side SteamID. + The right side SteamID. + + The result of the operator. + + + + + Implements the operator !=. + + The left side SteamID. + The right side SteamID. + + The result of the operator. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Handles encrypting and decrypting using the RSA public key encryption + algorithm. + + + + + Initializes a new instance of the class. + + The public key to encrypt with. + + + + Encrypt the specified input. + + The encrypted input. + The input to encrypt. + + + + Disposes of this class. + + + + + Provides Crypto functions used in Steam protocols + + + + + Performs an SHA1 hash of an input byte array + + + + + Encrypts using AES/CBC/PKCS7 an input byte array with a given key and IV + + + + + Decrypts an input byte array using AES/CBC/PKCS7 with a given key and IV + + + + + Performs an encryption using AES/CBC/PKCS7 with an input byte array and key, with a random IV prepended using AES/ECB/None + + + + + Performs an encryption using AES/CBC/PKCS7 with an input byte array and key, with a random IV prepended using AES/ECB/None + + + + + Performs an encryption using AES/CBC/PKCS7 with an input byte array and key, with a IV (comprised of random bytes and the HMAC-SHA1 of the random bytes and plaintext) prepended using AES/ECB/None + + + + + Decrypts using AES/CBC/PKCS7 with an input byte array and key, using the random IV prepended using AES/ECB/None + + + + + Decrypts using AES/CBC/PKCS7 with an input byte array and key, using the IV (comprised of random bytes and the HMAC-SHA1 of the random bytes and plaintext) prepended using AES/ECB/None + + + + + Decrypts using AES/CBC/PKCS7 with an input byte array and key, using the random IV prepended using AES/ECB/None + + + + + Verifies and performs a symmetricdecrypt on the input using the given password as a key + + + + + Decrypts using AES/ECB/PKCS7 + + + + + Performs CRC32 on an input byte array using the CrcStandard.Crc32Bit parameters + + + + + Performs an Adler32 on the given input + + + + + Generate an array of random bytes given the input length + + + + + Interface all debug log listeners must implement in order to register themselves. + + + + + Called when the DebugLog wishes to inform listeners of debug spew. + + The category of the message. + The message to log. + + + + Represents the root debug logging functionality. + + + + + Gets or sets a value indicating whether debug logging is enabled. + + + true if enabled; otherwise, false. + + + + + Initializes the class. + + + + + Adds a listener. + + The listener. + + + + Adds an action listener. + + The listener action. + + + + Removes a listener. + + The listener. + + + + Removes a listener. + + The previously registered listener action. + + + + Clears all registered listeners from the . + + + + + Writes a line to the debug log, informing all listeners. + + The category of the message. + A composite format string. + An System.Object array containing zero or more objects to format. + + + + Checks for a condition; if the condition is false, outputs a specified message and displays a message box that shows the call stack. + This method is equivalent to System.Diagnostics.Debug.Assert, however, it is tailored to spew failed assertions into the SteamKit debug log. + + The conditional expression to evaluate. If the condition is true, the specified message is not sent and the message box is not displayed. + The category of the message. + The message to display if the assertion fails. + + + + This is a debug utility, do not use it to implement your business logic. + + This interface is used for logging network messages sent to and received from the Steam server that the client is connected to. + + + + + Called when a packet is received from the Steam server. + + Network message type of this packet message. + Raw packet data that was received. + + + + Called when a packet is about to be sent to the Steam server. + + Network message type of this packet message. + Raw packet data that will be sent. + + + + Dump any network messages sent to and received from the Steam server that the client is connected to. + These messages are dumped to file, and can be analyzed further with NetHookAnalyzer, a hex editor, or your own purpose-built tools. + + Be careful with this, sensitive data may be written to the disk (such as your Steam password). + + + + + Will create a folder in path "%assembly%/nethook/%currenttime%/" + + + + + Log to your own folder. + + Path to folder. + + + + Called when a packet is received from the Steam server. + + Network message type of this packet message. + Raw packet data that was received. + + + + Called when a packet is about to be sent to the Steam server. + + Network message type of this packet message. + Raw packet data that will be sent. + + + + Contains the public keys that Steam uses for each of the + types. + + + + + Gets the public key for the given universe. + + The public key. + The universe. + + + + A debug listener that writes debug output to the system console. + + + + + Called when the DebugLog wishes to inform listeners of debug spew. + + The category of the message. + The message to log. + + + + Thrown when a HTTP request fails. + + + + + Represents the status code of the HTTP response. + + + + + Represents the collection of HTTP response headers. + + + + + Initializes a new instance of the class. + + The message that describes the error. + HTTP response message including the status code and data. + + + + Contains various utility functions for dealing with dates. + + + + + Converts a given unix timestamp to a DateTime + + A unix timestamp expressed as seconds since the unix epoch + DateTime representation + + + + Converts a given DateTime into a unix timestamp representing seconds since the unix epoch. + + DateTime to be expressed + 64-bit wide representation + + + + Contains various utility functions for handling EMsgs. + + + + + Strips off the protobuf message flag and returns an EMsg. + + The message number. + The underlying EMsg. + + + + Strips off the protobuf message flag and returns an EMsg. + + The message number. + The underlying EMsg. + + + + Strips off the protobuf message flag and returns an EMsg. + + The message number. + The underlying EMsg. + + + + Determines whether message is protobuf flagged. + + The message. + + true if this message is protobuf flagged; otherwise, false. + + + + + Determines whether message is protobuf flagged. + + The message. + + true if this message is protobuf flagged; otherwise, false. + + + + + Crafts an EMsg, flagging it if required. + + The EMsg to flag. + if set to true, the message is protobuf flagged. + A crafted EMsg, flagged if requested. + + + + Crafts an EMsg, flagging it if required. + + The EMsg to flag. + if set to true, the message is protobuf flagged. + A crafted EMsg, flagged if requested. + + + + The exception that is thrown when an error in input stream occurs during decoding. + + + + + The exception that is thrown when the value of an argument is outside the allowable range. + + + + + Callback progress. + + + input size. -1 if unknown. + + + output size. -1 if unknown. + + + + + Codes streams. + + + input Stream. + + + output Stream. + + + input Size. -1 if unknown. + + + output Size. -1 if unknown. + + + callback progress reference. + + + if input stream is not valid + + + + + Provides the fields that represent properties idenitifiers for compressing. + + + + + Specifies default property. + + + + + Specifies size of dictionary. + + + + + Specifies size of memory for PPM*. + + + + + Specifies order for PPM methods. + + + + + Specifies Block Size. + + + + + Specifies number of postion state bits for LZMA (0 <= x <= 4). + + + + + Specifies number of literal context bits for LZMA (0 <= x <= 8). + + + + + Specifies number of literal position bits for LZMA (0 <= x <= 4). + + + + + Specifies number of fast bytes for LZ*. + + + + + Specifies match finder. LZMA: "BT2", "BT4" or "BT4B". + + + + + Specifies the number of match finder cyckes. + + + + + Specifies number of passes. + + + + + Specifies number of algorithm. + + + + + Specifies the number of threads. + + + + + Specifies mode with end marker. + + + +