mirror of
https://github.com/JustArchiNET/ArchiSteamFarm.git
synced 2025-12-16 14:30:31 +00:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c27deb20a8 | ||
|
|
b231abf19f | ||
|
|
f17f2959b7 | ||
|
|
9f7886df3f | ||
|
|
ecc0dac4d9 | ||
|
|
e2f9ebc715 | ||
|
|
93716218a5 | ||
|
|
db149d16a7 | ||
|
|
6d22b19ef3 | ||
|
|
0f6cf10179 |
44
.travis.yml
44
.travis.yml
@@ -17,44 +17,44 @@ mono: none
|
|||||||
|
|
||||||
# ASF requires .NET Core 2.0+
|
# ASF requires .NET Core 2.0+
|
||||||
# TODO: We should target stable 2.0.0 once it's released
|
# TODO: We should target stable 2.0.0 once it's released
|
||||||
# TODO: Update at least to preview2 once https://github.com/travis-ci/travis-ci/issues/8037 is fixed
|
dotnet: 2.0.0-preview2-006497
|
||||||
# TODO: Add --no-restore to dotnet test when we get preview2+
|
|
||||||
dotnet: 2.0.0-preview1-005977
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
- DOTNET_CLI_TELEMETRY_OPTOUT: 1
|
- DOTNET_CLI_TELEMETRY_OPTOUT: 1
|
||||||
- DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
|
- DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
|
||||||
|
|
||||||
|
before_script: dotnet restore
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- set -e
|
- |
|
||||||
- dotnet restore
|
set -e
|
||||||
- dotnet build -c Release
|
|
||||||
- dotnet test -c Release --no-build ArchiSteamFarm.Tests
|
RUNTIMES="generic win-x64 linux-x64 linux-arm osx-x64"
|
||||||
- dotnet publish -c Release -o out/generic
|
|
||||||
- echo "generic" > "ArchiSteamFarm/out/generic/ArchiSteamFarm.version"
|
dotnet build -c Release
|
||||||
- dotnet publish -c Release -r win-x64 -o out/win-x64
|
dotnet test -c Release --no-build --no-restore ArchiSteamFarm.Tests
|
||||||
- echo "win-x64" > "ArchiSteamFarm/out/win-x64/ArchiSteamFarm.version"
|
|
||||||
- dotnet publish -c Release -r linux-x64 -o out/linux-x64
|
for RUNTIME in $RUNTIMES; do
|
||||||
- echo "linux-x64" > "ArchiSteamFarm/out/linux-x64/ArchiSteamFarm.version"
|
if [ "$RUNTIME" = "generic" ]; then
|
||||||
- dotnet publish -c Release -r linux-arm -o out/linux-arm
|
dotnet publish -c Release -o "out/${RUNTIME}"
|
||||||
- echo "linux-arm" > "ArchiSteamFarm/out/linux-arm/ArchiSteamFarm.version"
|
else
|
||||||
- dotnet publish -c Release -r osx-x64 -o out/osx-x64
|
dotnet publish -c Release -r "$RUNTIME" -o "out/${RUNTIME}"
|
||||||
- echo "osx-x64" > "ArchiSteamFarm/out/osx-x64/ArchiSteamFarm.version"
|
fi
|
||||||
|
|
||||||
|
echo "$RUNTIME" > "ArchiSteamFarm/out/${RUNTIME}/ArchiSteamFarm.version"
|
||||||
|
done
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
# We can use fast finish, as we don't need to wait for allow_failures builds to mark build as success
|
# We can use fast finish, as we don't need to wait for allow_failures builds to mark build as success
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
allow_failures:
|
|
||||||
# TODO: We allow OS X to fail until https://github.com/travis-ci/travis-ci/issues/7757 is fixed
|
|
||||||
- os: osx
|
|
||||||
include:
|
include:
|
||||||
# We're building ASF with dotnet on latest versions of Linux and OS X
|
# We're building ASF with dotnet on latest versions of Linux and OS X
|
||||||
# Ref: https://docs.travis-ci.com/user/ci-environment/#Virtualization-environments
|
# Ref: https://docs.travis-ci.com/user/ci-environment/#Virtualization-environments
|
||||||
# Ref: https://docs.travis-ci.com/user/trusty-ci-environment/
|
|
||||||
# Ref: https://docs.travis-ci.com/user/osx-ci-environment/
|
|
||||||
- os: linux
|
- os: linux
|
||||||
|
# Ref: https://docs.travis-ci.com/user/trusty-ci-environment/
|
||||||
dist: trusty
|
dist: trusty
|
||||||
sudo: false
|
sudo: false
|
||||||
- os: osx
|
- os: osx
|
||||||
|
# Ref: https://docs.travis-ci.com/user/osx-ci-environment/
|
||||||
osx_image: xcode9
|
osx_image: xcode9
|
||||||
|
|||||||
BIN
ArchiSteamFarm.Tests/ASF.ico
Normal file
BIN
ArchiSteamFarm.Tests/ASF.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 281 KiB |
@@ -5,7 +5,17 @@
|
|||||||
<TargetFramework>netcoreapp2.0</TargetFramework>
|
<TargetFramework>netcoreapp2.0</TargetFramework>
|
||||||
<LangVersion>latest</LangVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
<ErrorReport>none</ErrorReport>
|
<ErrorReport>none</ErrorReport>
|
||||||
|
<ApplicationIcon>ASF.ico</ApplicationIcon>
|
||||||
|
<Copyright>Copyright © ArchiSteamFarm 2015-2017</Copyright>
|
||||||
<RuntimeIdentifiers>win-x64;linux-x64;linux-arm;osx-x64</RuntimeIdentifiers>
|
<RuntimeIdentifiers>win-x64;linux-x64;linux-arm;osx-x64</RuntimeIdentifiers>
|
||||||
|
<Description>ASF is an application that allows you to farm steam cards using multiple steam accounts simultaneously.</Description>
|
||||||
|
<Authors>JustArchi</Authors>
|
||||||
|
<Company>JustArchi</Company>
|
||||||
|
<PackageLicenseUrl>http://www.apache.org/licenses/LICENSE-2.0</PackageLicenseUrl>
|
||||||
|
<PackageProjectUrl>https://github.com/JustArchi/ArchiSteamFarm</PackageProjectUrl>
|
||||||
|
<RepositoryUrl>https://github.com/JustArchi/ArchiSteamFarm.git</RepositoryUrl>
|
||||||
|
<PackageIconUrl>https://github.com/JustArchi/ArchiSteamFarm/raw/master/resources/ASF.ico</PackageIconUrl>
|
||||||
|
<RepositoryType>Git</RepositoryType>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ using ArchiSteamFarm.Localization;
|
|||||||
namespace ArchiSteamFarm {
|
namespace ArchiSteamFarm {
|
||||||
internal static class ASF {
|
internal static class ASF {
|
||||||
private const byte AutoUpdatePeriodInHours = 24;
|
private const byte AutoUpdatePeriodInHours = 24;
|
||||||
|
private const string DefaultVersion = "source"; // Default entry of ArchiSteamFarm.version
|
||||||
|
|
||||||
internal static readonly ArchiLogger ArchiLogger = new ArchiLogger(SharedInfo.ASF);
|
internal static readonly ArchiLogger ArchiLogger = new ArchiLogger(SharedInfo.ASF);
|
||||||
|
|
||||||
@@ -81,6 +82,10 @@ namespace ArchiSteamFarm {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (version.Equals(DefaultVersion)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ((AutoUpdatesTimer == null) && Program.GlobalConfig.AutoUpdates) {
|
if ((AutoUpdatesTimer == null) && Program.GlobalConfig.AutoUpdates) {
|
||||||
TimeSpan autoUpdatePeriod = TimeSpan.FromHours(AutoUpdatePeriodInHours);
|
TimeSpan autoUpdatePeriod = TimeSpan.FromHours(AutoUpdatePeriodInHours);
|
||||||
|
|
||||||
@@ -290,6 +295,7 @@ namespace ArchiSteamFarm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (version) {
|
switch (version) {
|
||||||
|
case DefaultVersion:
|
||||||
case "generic":
|
case "generic":
|
||||||
case "linux-arm":
|
case "linux-arm":
|
||||||
case "linux-x64":
|
case "linux-x64":
|
||||||
|
|||||||
@@ -3,14 +3,21 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFramework>netcoreapp2.0</TargetFramework>
|
<TargetFramework>netcoreapp2.0</TargetFramework>
|
||||||
<AssemblyVersion>3.0.0.4</AssemblyVersion>
|
<AssemblyVersion>3.0.0.5</AssemblyVersion>
|
||||||
<FileVersion>3.0.0.4</FileVersion>
|
<FileVersion>3.0.0.5</FileVersion>
|
||||||
<LangVersion>7</LangVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
<ErrorReport>none</ErrorReport>
|
<ErrorReport>none</ErrorReport>
|
||||||
<ApplicationIcon>ASF.ico</ApplicationIcon>
|
<ApplicationIcon>ASF.ico</ApplicationIcon>
|
||||||
<Copyright>Copyright © ArchiSteamFarm 2015-2017</Copyright>
|
<Copyright>Copyright © ArchiSteamFarm 2015-2017</Copyright>
|
||||||
<RuntimeIdentifiers>win-x64;linux-x64;linux-arm;osx-x64</RuntimeIdentifiers>
|
<RuntimeIdentifiers>win-x64;linux-x64;linux-arm;osx-x64</RuntimeIdentifiers>
|
||||||
<Description>ASF is an application that allows you to farm steam cards using multiple steam accounts simultaneously.</Description>
|
<Description>ASF is an application that allows you to farm steam cards using multiple steam accounts simultaneously.</Description>
|
||||||
|
<Authors>JustArchi</Authors>
|
||||||
|
<Company>JustArchi</Company>
|
||||||
|
<PackageLicenseUrl>http://www.apache.org/licenses/LICENSE-2.0</PackageLicenseUrl>
|
||||||
|
<PackageProjectUrl>https://github.com/JustArchi/ArchiSteamFarm</PackageProjectUrl>
|
||||||
|
<RepositoryUrl>https://github.com/JustArchi/ArchiSteamFarm.git</RepositoryUrl>
|
||||||
|
<PackageIconUrl>https://github.com/JustArchi/ArchiSteamFarm/raw/master/resources/ASF.ico</PackageIconUrl>
|
||||||
|
<RepositoryType>Git</RepositoryType>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||||
@@ -19,7 +26,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="HtmlAgilityPack" Version="1.5.2-beta1" />
|
<PackageReference Include="HtmlAgilityPack" Version="1.5.2-beta2" />
|
||||||
<PackageReference Include="Humanizer" Version="2.2.0" />
|
<PackageReference Include="Humanizer" Version="2.2.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
|
||||||
<PackageReference Include="Nito.AsyncEx.Coordination" Version="5.0.0-pre-02" />
|
<PackageReference Include="Nito.AsyncEx.Coordination" Version="5.0.0-pre-02" />
|
||||||
@@ -44,6 +51,9 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<None Update="ArchiSteamFarm.version">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
<None Update="config\ASF.json">
|
<None Update="config\ASF.json">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
|
|||||||
1
ArchiSteamFarm/ArchiSteamFarm.version
Normal file
1
ArchiSteamFarm/ArchiSteamFarm.version
Normal file
@@ -0,0 +1 @@
|
|||||||
|
source
|
||||||
@@ -82,7 +82,6 @@ namespace ArchiSteamFarm {
|
|||||||
private readonly SemaphoreSlim InitializationSemaphore = new SemaphoreSlim(1);
|
private readonly SemaphoreSlim InitializationSemaphore = new SemaphoreSlim(1);
|
||||||
private readonly SemaphoreSlim LootingSemaphore = new SemaphoreSlim(1);
|
private readonly SemaphoreSlim LootingSemaphore = new SemaphoreSlim(1);
|
||||||
private readonly ConcurrentHashSet<uint> OwnedPackageIDs = new ConcurrentHashSet<uint>();
|
private readonly ConcurrentHashSet<uint> OwnedPackageIDs = new ConcurrentHashSet<uint>();
|
||||||
|
|
||||||
private readonly Statistics Statistics;
|
private readonly Statistics Statistics;
|
||||||
private readonly SteamApps SteamApps;
|
private readonly SteamApps SteamApps;
|
||||||
private readonly SteamClient SteamClient;
|
private readonly SteamClient SteamClient;
|
||||||
|
|||||||
@@ -94,7 +94,6 @@ namespace ArchiSteamFarm {
|
|||||||
|
|
||||||
[JsonProperty(ObjectCreationHandling = ObjectCreationHandling.Replace, Required = Required.DisallowNull)]
|
[JsonProperty(ObjectCreationHandling = ObjectCreationHandling.Replace, Required = Required.DisallowNull)]
|
||||||
internal readonly HashSet<Steam.Item.EType> MatchableTypes = new HashSet<Steam.Item.EType> {
|
internal readonly HashSet<Steam.Item.EType> MatchableTypes = new HashSet<Steam.Item.EType> {
|
||||||
Steam.Item.EType.FoilTradingCard,
|
|
||||||
Steam.Item.EType.TradingCard
|
Steam.Item.EType.TradingCard
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -28,10 +28,8 @@ using ArchiSteamFarm.Localization;
|
|||||||
|
|
||||||
namespace ArchiSteamFarm {
|
namespace ArchiSteamFarm {
|
||||||
internal static class OS {
|
internal static class OS {
|
||||||
private static readonly PlatformID PlatformID = Environment.OSVersion.Platform;
|
|
||||||
|
|
||||||
internal static void Init(bool headless) {
|
internal static void Init(bool headless) {
|
||||||
switch (PlatformID) {
|
switch (Environment.OSVersion.Platform) {
|
||||||
case PlatformID.Win32NT:
|
case PlatformID.Win32NT:
|
||||||
case PlatformID.Win32S:
|
case PlatformID.Win32S:
|
||||||
case PlatformID.Win32Windows:
|
case PlatformID.Win32Windows:
|
||||||
@@ -76,7 +74,7 @@ namespace ArchiSteamFarm {
|
|||||||
|
|
||||||
private static class NativeMethods {
|
private static class NativeMethods {
|
||||||
internal const uint EnableQuickEditMode = 0x0040;
|
internal const uint EnableQuickEditMode = 0x0040;
|
||||||
internal const int StandardInputHandle = -10;
|
internal const sbyte StandardInputHandle = -10;
|
||||||
|
|
||||||
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
|
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
|
||||||
internal static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint lpMode);
|
internal static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint lpMode);
|
||||||
|
|||||||
@@ -184,9 +184,7 @@ namespace ArchiSteamFarm {
|
|||||||
ParsePostInitArgs(args);
|
ParsePostInitArgs(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Debugging.IsDebugBuild) {
|
await ASF.CheckForUpdate().ConfigureAwait(false);
|
||||||
await ASF.CheckForUpdate().ConfigureAwait(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
await ASF.InitBots().ConfigureAwait(false);
|
await ASF.InitBots().ConfigureAwait(false);
|
||||||
ASF.InitEvents();
|
ASF.InitEvents();
|
||||||
|
|||||||
@@ -28,19 +28,20 @@ using System.Linq;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using ArchiSteamFarm.JSON;
|
using ArchiSteamFarm.JSON;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using SteamKit2;
|
using SteamKit2;
|
||||||
|
|
||||||
namespace ArchiSteamFarm {
|
namespace ArchiSteamFarm {
|
||||||
internal sealed class Statistics : IDisposable {
|
internal sealed class Statistics : IDisposable {
|
||||||
private const byte MinAnnouncementCheckTTL = 6; // Minimum amount of hours we must wait before checking eligibility for Announcement, should be lower than MinPersonaStateTTL
|
private const byte MinAnnouncementCheckTTL = 6; // Minimum amount of hours we must wait before checking eligibility for Announcement, should be lower than MinPersonaStateTTL
|
||||||
private const byte MinCardsCount = 100; // Minimum amount of cards to be eligible for public listing
|
|
||||||
private const byte MinHeartBeatTTL = 10; // Minimum amount of minutes we must wait before sending next HeartBeat
|
private const byte MinHeartBeatTTL = 10; // Minimum amount of minutes we must wait before sending next HeartBeat
|
||||||
|
private const byte MinItemsCount = 100; // Minimum amount of items to be eligible for public listing
|
||||||
private const byte MinPersonaStateTTL = 8; // Minimum amount of hours we must wait before requesting persona state update
|
private const byte MinPersonaStateTTL = 8; // Minimum amount of hours we must wait before requesting persona state update
|
||||||
|
|
||||||
private const string URL = "https://" + SharedInfo.StatisticsServer;
|
private const string URL = "https://" + SharedInfo.StatisticsServer;
|
||||||
|
|
||||||
private readonly Bot Bot;
|
private readonly Bot Bot;
|
||||||
private readonly SemaphoreSlim Semaphore = new SemaphoreSlim(1);
|
private readonly SemaphoreSlim Semaphore = new SemaphoreSlim(1);
|
||||||
|
|
||||||
private DateTime LastAnnouncementCheck = DateTime.MinValue;
|
private DateTime LastAnnouncementCheck = DateTime.MinValue;
|
||||||
private DateTime LastHeartBeat = DateTime.MinValue;
|
private DateTime LastHeartBeat = DateTime.MinValue;
|
||||||
private DateTime LastPersonaStateRequest = DateTime.MinValue;
|
private DateTime LastPersonaStateRequest = DateTime.MinValue;
|
||||||
@@ -97,7 +98,7 @@ namespace ArchiSteamFarm {
|
|||||||
|
|
||||||
// Don't announce if we don't meet conditions
|
// Don't announce if we don't meet conditions
|
||||||
string tradeToken;
|
string tradeToken;
|
||||||
if (!Bot.HasMobileAuthenticator || !Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.SteamTradeMatcher) || !await Bot.ArchiWebHandler.HasValidApiKey().ConfigureAwait(false) || !await Bot.ArchiWebHandler.HasPublicInventory().ConfigureAwait(false) || string.IsNullOrEmpty(tradeToken = await Bot.ArchiWebHandler.GetTradeToken().ConfigureAwait(false))) {
|
if (!Bot.HasMobileAuthenticator || !Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.SteamTradeMatcher) || (Bot.BotConfig.MatchableTypes.Count == 0) || !await Bot.ArchiWebHandler.HasValidApiKey().ConfigureAwait(false) || !await Bot.ArchiWebHandler.HasPublicInventory().ConfigureAwait(false) || string.IsNullOrEmpty(tradeToken = await Bot.ArchiWebHandler.GetTradeToken().ConfigureAwait(false))) {
|
||||||
LastAnnouncementCheck = DateTime.UtcNow;
|
LastAnnouncementCheck = DateTime.UtcNow;
|
||||||
ShouldSendHeartBeats = false;
|
ShouldSendHeartBeats = false;
|
||||||
return;
|
return;
|
||||||
@@ -113,8 +114,6 @@ namespace ArchiSteamFarm {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool matchEverything = Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.MatchEverything);
|
|
||||||
|
|
||||||
await Semaphore.WaitAsync().ConfigureAwait(false);
|
await Semaphore.WaitAsync().ConfigureAwait(false);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -122,7 +121,7 @@ namespace ArchiSteamFarm {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
HashSet<Steam.Item> inventory = await Bot.ArchiWebHandler.GetMySteamInventory(true, new HashSet<Steam.Item.EType> { Steam.Item.EType.TradingCard }).ConfigureAwait(false);
|
HashSet<Steam.Item> inventory = await Bot.ArchiWebHandler.GetMySteamInventory(true, Bot.BotConfig.MatchableTypes).ConfigureAwait(false);
|
||||||
|
|
||||||
// This is actually inventory failure, so we'll stop sending heartbeats but not record it as valid check
|
// This is actually inventory failure, so we'll stop sending heartbeats but not record it as valid check
|
||||||
if (inventory == null) {
|
if (inventory == null) {
|
||||||
@@ -131,21 +130,22 @@ namespace ArchiSteamFarm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// This is actual inventory
|
// This is actual inventory
|
||||||
if (inventory.Count < MinCardsCount) {
|
if (inventory.Count < MinItemsCount) {
|
||||||
LastAnnouncementCheck = DateTime.UtcNow;
|
LastAnnouncementCheck = DateTime.UtcNow;
|
||||||
ShouldSendHeartBeats = false;
|
ShouldSendHeartBeats = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string request = URL + "/api/Announce";
|
const string request = URL + "/api/Announce";
|
||||||
Dictionary<string, string> data = new Dictionary<string, string>(7) {
|
Dictionary<string, string> data = new Dictionary<string, string>(8) {
|
||||||
{ "SteamID", Bot.SteamID.ToString() },
|
{ "SteamID", Bot.SteamID.ToString() },
|
||||||
{ "Guid", Program.GlobalDatabase.Guid.ToString("N") },
|
{ "Guid", Program.GlobalDatabase.Guid.ToString("N") },
|
||||||
{ "Nickname", nickname },
|
{ "Nickname", nickname },
|
||||||
{ "AvatarHash", avatarHash },
|
{ "AvatarHash", avatarHash },
|
||||||
{ "MatchEverything", matchEverything ? "1" : "0" },
|
{ "MatchableTypes", JsonConvert.SerializeObject(Bot.BotConfig.MatchableTypes) },
|
||||||
|
{ "MatchEverything", Bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.MatchEverything) ? "1" : "0" },
|
||||||
{ "TradeToken", tradeToken },
|
{ "TradeToken", tradeToken },
|
||||||
{ "CardsCount", inventory.Count.ToString() }
|
{ "ItemsCount", inventory.Count.ToString() }
|
||||||
};
|
};
|
||||||
|
|
||||||
// We don't need retry logic here
|
// We don't need retry logic here
|
||||||
|
|||||||
@@ -152,12 +152,12 @@ namespace ArchiSteamFarm {
|
|||||||
internal async Task<T> UrlGetToJsonResultRetry<T>(string request, string referer = null) {
|
internal async Task<T> UrlGetToJsonResultRetry<T>(string request, string referer = null) {
|
||||||
if (string.IsNullOrEmpty(request)) {
|
if (string.IsNullOrEmpty(request)) {
|
||||||
ArchiLogger.LogNullError(nameof(request));
|
ArchiLogger.LogNullError(nameof(request));
|
||||||
return default(T);
|
return default;
|
||||||
}
|
}
|
||||||
|
|
||||||
string json = await UrlGetToContentRetry(request, referer).ConfigureAwait(false);
|
string json = await UrlGetToContentRetry(request, referer).ConfigureAwait(false);
|
||||||
if (string.IsNullOrEmpty(json)) {
|
if (string.IsNullOrEmpty(json)) {
|
||||||
return default(T);
|
return default;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -169,7 +169,7 @@ namespace ArchiSteamFarm {
|
|||||||
ArchiLogger.LogGenericDebug(string.Format(Strings.Content, json));
|
ArchiLogger.LogGenericDebug(string.Format(Strings.Content, json));
|
||||||
}
|
}
|
||||||
|
|
||||||
return default(T);
|
return default;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -277,12 +277,12 @@ namespace ArchiSteamFarm {
|
|||||||
internal async Task<T> UrlPostToJsonResultRetry<T>(string request, ICollection<KeyValuePair<string, string>> data = null, string referer = null) {
|
internal async Task<T> UrlPostToJsonResultRetry<T>(string request, ICollection<KeyValuePair<string, string>> data = null, string referer = null) {
|
||||||
if (string.IsNullOrEmpty(request)) {
|
if (string.IsNullOrEmpty(request)) {
|
||||||
ArchiLogger.LogNullError(nameof(request));
|
ArchiLogger.LogNullError(nameof(request));
|
||||||
return default(T);
|
return default;
|
||||||
}
|
}
|
||||||
|
|
||||||
string json = await UrlPostToContentRetry(request, data, referer).ConfigureAwait(false);
|
string json = await UrlPostToContentRetry(request, data, referer).ConfigureAwait(false);
|
||||||
if (string.IsNullOrEmpty(json)) {
|
if (string.IsNullOrEmpty(json)) {
|
||||||
return default(T);
|
return default;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -294,7 +294,7 @@ namespace ArchiSteamFarm {
|
|||||||
ArchiLogger.LogGenericDebug(string.Format(Strings.Content, json));
|
ArchiLogger.LogGenericDebug(string.Format(Strings.Content, json));
|
||||||
}
|
}
|
||||||
|
|
||||||
return default(T);
|
return default;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
5
|
5
|
||||||
],
|
],
|
||||||
"MatchableTypes": [
|
"MatchableTypes": [
|
||||||
3,
|
|
||||||
5
|
5
|
||||||
],
|
],
|
||||||
"PasswordFormat": 0,
|
"PasswordFormat": 0,
|
||||||
|
|||||||
18
appveyor.yml
18
appveyor.yml
@@ -33,7 +33,7 @@ after_test:
|
|||||||
dotnet publish -c "$env:CONFIGURATION" -r "$RUNTIME" -o "out\$RUNTIME"
|
dotnet publish -c "$env:CONFIGURATION" -r "$RUNTIME" -o "out\$RUNTIME"
|
||||||
}
|
}
|
||||||
|
|
||||||
Add-Content "ArchiSteamFarm\out\$RUNTIME\ArchiSteamFarm.version" "$RUNTIME"
|
Set-Content -Path "ArchiSteamFarm\out\$RUNTIME\ArchiSteamFarm.version" -Value "$RUNTIME"
|
||||||
|
|
||||||
7z a -bd -tzip -mm=Deflate64 -mx=5 "ArchiSteamFarm\out\ASF-$RUNTIME.zip" "$env:APPVEYOR_BUILD_FOLDER\ArchiSteamFarm\out\$RUNTIME\*"
|
7z a -bd -tzip -mm=Deflate64 -mx=5 "ArchiSteamFarm\out\ASF-$RUNTIME.zip" "$env:APPVEYOR_BUILD_FOLDER\ArchiSteamFarm\out\$RUNTIME\*"
|
||||||
Push-AppveyorArtifact "ArchiSteamFarm\out\ASF-$RUNTIME.zip" -FileName "ASF-$RUNTIME.zip" -DeploymentName "ASF-$RUNTIME.zip"
|
Push-AppveyorArtifact "ArchiSteamFarm\out\ASF-$RUNTIME.zip" -FileName "ASF-$RUNTIME.zip" -DeploymentName "ASF-$RUNTIME.zip"
|
||||||
@@ -52,4 +52,18 @@ deploy:
|
|||||||
on:
|
on:
|
||||||
branch: master
|
branch: master
|
||||||
configuration: Release
|
configuration: Release
|
||||||
appveyor_repo_tag: true
|
appveyor_repo_tag: true
|
||||||
|
notifications:
|
||||||
|
- provider: Webhook
|
||||||
|
url:
|
||||||
|
secure: i/og7KzkpbcWcKoUubrLH+KB6bkfqA55FHUlGxLepLmgZNQeNMiMoAFICOFY795fFrFfUNUKqwk7ApXE6HUyWMoiijLj7G/JBLTPkBiTCu8fZMTMqwQm6FiHB3+/0h0C+ukcrBEqnXYSQUh6znpKqJSTrIfXUQ7ftNuC966kBAw=
|
||||||
|
method: POST
|
||||||
|
body: >-
|
||||||
|
{
|
||||||
|
"avatar_url": "https://www.appveyor.com/assets/img/appveyor-logo-256.png",
|
||||||
|
"username": "AppVeyor",
|
||||||
|
"content": "[{{projectName}}:{{branch}}] {{commitMessage}} - {{committerName}} ({{commitId}}) | **{{status}}** | {{buildUrl}}"
|
||||||
|
}
|
||||||
|
on_build_success: true
|
||||||
|
on_build_failure: true
|
||||||
|
on_build_status_changed: false
|
||||||
Reference in New Issue
Block a user