mirror of
https://github.com/JustArchiNET/ArchiSteamFarm
synced 2024-11-10 07:04:27 +00:00
Code cleanup
This commit is contained in:
parent
e522602535
commit
14f58d5aec
4 changed files with 75 additions and 75 deletions
|
@ -39,10 +39,6 @@ namespace ArchiSteamFarm.CustomPlugins.ExamplePlugin {
|
||||||
// This will keep your code compact, efficient and less dependent. You can always add additional interfaces when you'll need them, this example project will inherit quite a bit of them to show you potential usage
|
// This will keep your code compact, efficient and less dependent. You can always add additional interfaces when you'll need them, this example project will inherit quite a bit of them to show you potential usage
|
||||||
// ReSharper disable once UnusedType.Global - this is example plugin class that isn't used in our main code
|
// ReSharper disable once UnusedType.Global - this is example plugin class that isn't used in our main code
|
||||||
internal sealed class ExamplePlugin : IASF, IBot, IBotCommand, IBotConnection, IBotFriendRequest, IBotMessage, IBotModules, IBotTradeOffer {
|
internal sealed class ExamplePlugin : IASF, IBot, IBotCommand, IBotConnection, IBotFriendRequest, IBotMessage, IBotModules, IBotTradeOffer {
|
||||||
// Plugins can expose custom properties for our GET /Api/Plugins API call, simply annotate them with [JsonProperty] (or keep public)
|
|
||||||
[JsonProperty]
|
|
||||||
public bool CustomIsEnabledField { get; private set; } = true;
|
|
||||||
|
|
||||||
// This is used for identification purposes, typically you want to use a friendly name of your plugin here, such as the name of your main class
|
// This is used for identification purposes, typically you want to use a friendly name of your plugin here, such as the name of your main class
|
||||||
// Please note that this property can have direct dependencies only on structures that were initialized by the constructor, as it's possible to be called before OnLoaded() takes place
|
// Please note that this property can have direct dependencies only on structures that were initialized by the constructor, as it's possible to be called before OnLoaded() takes place
|
||||||
public string Name => nameof(ExamplePlugin);
|
public string Name => nameof(ExamplePlugin);
|
||||||
|
@ -51,6 +47,10 @@ namespace ArchiSteamFarm.CustomPlugins.ExamplePlugin {
|
||||||
// Please note that this property can have direct dependencies only on structures that were initialized by the constructor, as it's possible to be called before OnLoaded() takes place
|
// Please note that this property can have direct dependencies only on structures that were initialized by the constructor, as it's possible to be called before OnLoaded() takes place
|
||||||
public Version Version => typeof(ExamplePlugin).Assembly.GetName().Version ?? throw new InvalidOperationException(nameof(Version));
|
public Version Version => typeof(ExamplePlugin).Assembly.GetName().Version ?? throw new InvalidOperationException(nameof(Version));
|
||||||
|
|
||||||
|
// Plugins can expose custom properties for our GET /Api/Plugins API call, simply annotate them with [JsonProperty] (or keep public)
|
||||||
|
[JsonProperty]
|
||||||
|
public bool CustomIsEnabledField { get; private set; } = true;
|
||||||
|
|
||||||
// This method, apart from being called before any bot initialization takes place, allows you to read custom global config properties that are not recognized by ASF
|
// This method, apart from being called before any bot initialization takes place, allows you to read custom global config properties that are not recognized by ASF
|
||||||
// Thanks to that, you can extend default ASF config with your own stuff, then parse it here in order to customize your plugin during runtime
|
// Thanks to that, you can extend default ASF config with your own stuff, then parse it here in order to customize your plugin during runtime
|
||||||
// Keep in mind that, as noted in the interface, additionalConfigProperties can be null if no custom, unrecognized properties are found by ASF, you should handle that case appropriately
|
// Keep in mind that, as noted in the interface, additionalConfigProperties can be null if no custom, unrecognized properties are found by ASF, you should handle that case appropriately
|
||||||
|
|
|
@ -200,6 +200,9 @@ namespace ArchiSteamFarm {
|
||||||
[JsonProperty(Required = Required.DisallowNull)]
|
[JsonProperty(Required = Required.DisallowNull)]
|
||||||
public bool ShutdownOnFarmingFinished { get; private set; } = DefaultShutdownOnFarmingFinished;
|
public bool ShutdownOnFarmingFinished { get; private set; } = DefaultShutdownOnFarmingFinished;
|
||||||
|
|
||||||
|
[JsonProperty(Required = Required.DisallowNull)]
|
||||||
|
public ulong SteamMasterClanID { get; private set; } = DefaultSteamMasterClanID;
|
||||||
|
|
||||||
[JsonProperty]
|
[JsonProperty]
|
||||||
public string? SteamTradeToken { get; private set; } = DefaultSteamTradeToken;
|
public string? SteamTradeToken { get; private set; } = DefaultSteamTradeToken;
|
||||||
|
|
||||||
|
@ -215,9 +218,6 @@ namespace ArchiSteamFarm {
|
||||||
[JsonProperty(Required = Required.DisallowNull)]
|
[JsonProperty(Required = Required.DisallowNull)]
|
||||||
public bool UseLoginKeys { get; private set; } = DefaultUseLoginKeys;
|
public bool UseLoginKeys { get; private set; } = DefaultUseLoginKeys;
|
||||||
|
|
||||||
[JsonProperty(Required = Required.DisallowNull)]
|
|
||||||
public ulong SteamMasterClanID { get; private set; } = DefaultSteamMasterClanID;
|
|
||||||
|
|
||||||
[JsonExtensionData]
|
[JsonExtensionData]
|
||||||
internal Dictionary<string, JToken>? AdditionalProperties {
|
internal Dictionary<string, JToken>? AdditionalProperties {
|
||||||
get;
|
get;
|
||||||
|
|
|
@ -126,6 +126,56 @@ namespace ArchiSteamFarm {
|
||||||
|
|
||||||
private static readonly SemaphoreSlim WriteSemaphore = new(1, 1);
|
private static readonly SemaphoreSlim WriteSemaphore = new(1, 1);
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
[PublicAPI]
|
||||||
|
public WebProxy? WebProxy {
|
||||||
|
get {
|
||||||
|
if (BackingWebProxy != null) {
|
||||||
|
return BackingWebProxy;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(WebProxyText)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Uri uri;
|
||||||
|
|
||||||
|
try {
|
||||||
|
uri = new Uri(WebProxyText!);
|
||||||
|
} catch (UriFormatException e) {
|
||||||
|
ASF.ArchiLogger.LogGenericException(e);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
WebProxy proxy = new() {
|
||||||
|
Address = uri,
|
||||||
|
BypassProxyOnLocal = true
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(WebProxyUsername) || !string.IsNullOrEmpty(WebProxyPassword)) {
|
||||||
|
NetworkCredential credentials = new();
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(WebProxyUsername)) {
|
||||||
|
credentials.UserName = WebProxyUsername;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(WebProxyPassword)) {
|
||||||
|
credentials.Password = WebProxyPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
proxy.Credentials = credentials;
|
||||||
|
}
|
||||||
|
|
||||||
|
BackingWebProxy = proxy;
|
||||||
|
|
||||||
|
return proxy;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonProperty]
|
||||||
|
internal readonly string? IPCPassword = DefaultIPCPassword;
|
||||||
|
|
||||||
[JsonProperty(Required = Required.DisallowNull)]
|
[JsonProperty(Required = Required.DisallowNull)]
|
||||||
public bool AutoRestart { get; private set; } = DefaultAutoRestart;
|
public bool AutoRestart { get; private set; } = DefaultAutoRestart;
|
||||||
|
|
||||||
|
@ -186,6 +236,12 @@ namespace ArchiSteamFarm {
|
||||||
[JsonProperty]
|
[JsonProperty]
|
||||||
public string? SteamMessagePrefix { get; private set; } = DefaultSteamMessagePrefix;
|
public string? SteamMessagePrefix { get; private set; } = DefaultSteamMessagePrefix;
|
||||||
|
|
||||||
|
[JsonProperty(Required = Required.DisallowNull)]
|
||||||
|
public ulong SteamOwnerID { get; private set; } = DefaultSteamOwnerID;
|
||||||
|
|
||||||
|
[JsonProperty(Required = Required.DisallowNull)]
|
||||||
|
public ProtocolTypes SteamProtocols { get; private set; } = DefaultSteamProtocols;
|
||||||
|
|
||||||
[JsonProperty(Required = Required.DisallowNull)]
|
[JsonProperty(Required = Required.DisallowNull)]
|
||||||
public EUpdateChannel UpdateChannel { get; private set; } = DefaultUpdateChannel;
|
public EUpdateChannel UpdateChannel { get; private set; } = DefaultUpdateChannel;
|
||||||
|
|
||||||
|
@ -195,68 +251,12 @@ namespace ArchiSteamFarm {
|
||||||
[JsonProperty(Required = Required.DisallowNull)]
|
[JsonProperty(Required = Required.DisallowNull)]
|
||||||
public ushort WebLimiterDelay { get; private set; } = DefaultWebLimiterDelay;
|
public ushort WebLimiterDelay { get; private set; } = DefaultWebLimiterDelay;
|
||||||
|
|
||||||
[JsonIgnore]
|
|
||||||
[PublicAPI]
|
|
||||||
public WebProxy? WebProxy {
|
|
||||||
get {
|
|
||||||
if (BackingWebProxy != null) {
|
|
||||||
return BackingWebProxy;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(WebProxyText)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
Uri uri;
|
|
||||||
|
|
||||||
try {
|
|
||||||
uri = new Uri(WebProxyText!);
|
|
||||||
} catch (UriFormatException e) {
|
|
||||||
ASF.ArchiLogger.LogGenericException(e);
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
WebProxy proxy = new() {
|
|
||||||
Address = uri,
|
|
||||||
BypassProxyOnLocal = true
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(WebProxyUsername) || !string.IsNullOrEmpty(WebProxyPassword)) {
|
|
||||||
NetworkCredential credentials = new();
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(WebProxyUsername)) {
|
|
||||||
credentials.UserName = WebProxyUsername;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(WebProxyPassword)) {
|
|
||||||
credentials.Password = WebProxyPassword;
|
|
||||||
}
|
|
||||||
|
|
||||||
proxy.Credentials = credentials;
|
|
||||||
}
|
|
||||||
|
|
||||||
BackingWebProxy = proxy;
|
|
||||||
|
|
||||||
return proxy;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonProperty(PropertyName = nameof(WebProxy))]
|
[JsonProperty(PropertyName = nameof(WebProxy))]
|
||||||
public string? WebProxyText { get; private set; } = DefaultWebProxyText;
|
public string? WebProxyText { get; private set; } = DefaultWebProxyText;
|
||||||
|
|
||||||
[JsonProperty]
|
[JsonProperty]
|
||||||
public string? WebProxyUsername { get; private set; } = DefaultWebProxyUsername;
|
public string? WebProxyUsername { get; private set; } = DefaultWebProxyUsername;
|
||||||
|
|
||||||
[JsonProperty]
|
|
||||||
internal readonly string? IPCPassword = DefaultIPCPassword;
|
|
||||||
|
|
||||||
[JsonProperty(Required = Required.DisallowNull)]
|
|
||||||
public ulong SteamOwnerID { get; private set; } = DefaultSteamOwnerID;
|
|
||||||
|
|
||||||
[JsonProperty(Required = Required.DisallowNull)]
|
|
||||||
public ProtocolTypes SteamProtocols { get; private set; } = DefaultSteamProtocols;
|
|
||||||
|
|
||||||
[JsonExtensionData]
|
[JsonExtensionData]
|
||||||
internal Dictionary<string, JToken>? AdditionalProperties {
|
internal Dictionary<string, JToken>? AdditionalProperties {
|
||||||
get;
|
get;
|
||||||
|
|
|
@ -36,24 +36,18 @@ namespace ArchiSteamFarm.IPC.Requests {
|
||||||
[JsonProperty(Required = Required.Always)]
|
[JsonProperty(Required = Required.Always)]
|
||||||
public bool Accept { get; private set; }
|
public bool Accept { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Specifies the type of confirmations to handle. If not provided, all confirmation types are considered for an action.
|
|
||||||
/// </summary>
|
|
||||||
[JsonProperty(Required = Required.DisallowNull)]
|
|
||||||
public MobileAuthenticator.Confirmation.EType? AcceptedType { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Specifies whether we should wait for the confirmations to arrive, in case they're not available immediately. This option makes sense only if <see cref="AcceptedCreatorIDs" /> is specified as well, and in this case ASF will add a few more tries if needed to ensure that all specified IDs are handled. Useful if confirmations are generated with a delay on Steam network side, which happens fairly often.
|
|
||||||
/// </summary>
|
|
||||||
[JsonProperty(Required = Required.DisallowNull)]
|
|
||||||
public bool WaitIfNeeded { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Specifies IDs of the confirmations that we're supposed to handle. CreatorID of the confirmation is equal to ID of the object that triggered it - e.g. ID of the trade offer, or ID of the market listing. If not provided, or empty array, all confirmation IDs are considered for an action.
|
/// Specifies IDs of the confirmations that we're supposed to handle. CreatorID of the confirmation is equal to ID of the object that triggered it - e.g. ID of the trade offer, or ID of the market listing. If not provided, or empty array, all confirmation IDs are considered for an action.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonProperty(Required = Required.DisallowNull)]
|
[JsonProperty(Required = Required.DisallowNull)]
|
||||||
public ImmutableHashSet<ulong>? AcceptedCreatorIDs { get; private set; }
|
public ImmutableHashSet<ulong>? AcceptedCreatorIDs { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Specifies the type of confirmations to handle. If not provided, all confirmation types are considered for an action.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty(Required = Required.DisallowNull)]
|
||||||
|
public MobileAuthenticator.Confirmation.EType? AcceptedType { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A helper property which works the same as <see cref="AcceptedCreatorIDs" /> but with values written as strings - for javascript compatibility purposes. Use either this one, or <see cref="AcceptedCreatorIDs" />, not both.
|
/// A helper property which works the same as <see cref="AcceptedCreatorIDs" /> but with values written as strings - for javascript compatibility purposes. Use either this one, or <see cref="AcceptedCreatorIDs" />, not both.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -80,6 +74,12 @@ namespace ArchiSteamFarm.IPC.Requests {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Specifies whether we should wait for the confirmations to arrive, in case they're not available immediately. This option makes sense only if <see cref="AcceptedCreatorIDs" /> is specified as well, and in this case ASF will add a few more tries if needed to ensure that all specified IDs are handled. Useful if confirmations are generated with a delay on Steam network side, which happens fairly often.
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty(Required = Required.DisallowNull)]
|
||||||
|
public bool WaitIfNeeded { get; private set; }
|
||||||
|
|
||||||
[JsonConstructor]
|
[JsonConstructor]
|
||||||
private TwoFactorAuthenticationConfirmationsRequest() { }
|
private TwoFactorAuthenticationConfirmationsRequest() { }
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue