Compare commits

..

713 Commits

Author SHA1 Message Date
Łukasz Domeradzki
d21912dcd9 Add workaround for #3352 2024-12-05 20:20:30 +01:00
renovate[bot]
f74e6bff39 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.3.0 2024-12-05 04:51:28 +00:00
ArchiBot
9bad87c576 Automatic translations update 2024-12-05 02:23:35 +00:00
renovate[bot]
af6354c62a chore(deps): update asf-ui digest to c316254 2024-12-04 21:19:54 +00:00
renovate[bot]
9621339ac4 chore(deps): update actions/attest-build-provenance action to v2 (#3356)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-12-04 22:19:16 +01:00
renovate[bot]
ecf00aded6 chore(deps): update asf-ui digest to c7a10da 2024-12-04 13:14:37 +00:00
renovate[bot]
3b04524dbc chore(deps): update asf-ui digest to bfdb3fb 2024-12-04 04:22:58 +00:00
renovate[bot]
5f86d7fca0 chore(deps): update dependency mstest to 3.6.4 2024-12-03 23:05:13 +00:00
renovate[bot]
d85945e664 chore(deps): update asf-ui digest to 11c980c 2024-12-03 20:18:15 +00:00
renovate[bot]
82f1ded4a1 chore(deps): update github/codeql-action action to v3.27.6 2024-12-03 12:21:13 +00:00
renovate[bot]
00393279ed chore(deps): update asf-ui digest to dcdb4aa 2024-12-03 07:40:10 +00:00
ArchiBot
4fc72bf56e Automatic translations update 2024-12-03 02:23:29 +00:00
Łukasz Domeradzki
d373cfb9ae Bump 2024-12-02 14:20:40 +01:00
Łukasz Domeradzki
90ead36184 Merge branch 'stable' 2024-12-02 14:20:08 +01:00
Łukasz Domeradzki
a4e46d9451 Bump 2024-12-02 09:25:10 +01:00
Łukasz Domeradzki
ea53975acf Attempt to resolve #3348 2024-12-02 09:17:26 +01:00
ArchiBot
29709abc62 Automatic translations update 2024-12-02 02:23:18 +00:00
ArchiBot
26b09f3f8a Automatic translations update 2024-12-01 02:31:06 +00:00
renovate[bot]
c98a177909 chore(deps): update asf-ui digest to 5a3591d 2024-11-30 11:03:51 +00:00
ArchiBot
57ceba2134 Automatic translations update 2024-11-30 02:21:27 +00:00
ArchiBot
1801f8d62a Automatic translations update 2024-11-29 02:23:43 +00:00
renovate[bot]
840cf03441 chore(deps): update wiki digest to 2c27b3d 2024-11-28 18:57:08 +00:00
renovate[bot]
8de27db858 chore(deps): update dependency opentelemetry.instrumentation.http to 1.10.0 2024-11-27 21:29:51 +00:00
renovate[bot]
ba3b49cfbd chore(deps): update docker/build-push-action action to v6.10.0 2024-11-26 15:23:49 +00:00
renovate[bot]
df94dee4cd chore(deps): update asf-ui digest to d361815 2024-11-26 05:28:28 +00:00
renovate[bot]
9dbd835600 chore(deps): update swashbuckle-aspnetcore monorepo to 7.1.0 2024-11-25 15:51:49 +00:00
renovate[bot]
c714dcdd69 chore(deps): update asf-ui digest to c0c518c 2024-11-25 13:39:45 +00:00
renovate[bot]
d291b9479d chore(deps): update crowdin/github-action action to v2.4.0 2024-11-25 09:32:54 +00:00
ArchiBot
ddf6bb29bf Automatic translations update 2024-11-25 02:22:41 +00:00
ArchiBot
4f38b8174d Automatic translations update 2024-11-24 02:24:21 +00:00
renovate[bot]
4abb2cf526 chore(deps): update wiki digest to 0dcdb24 2024-11-23 21:38:16 +00:00
Citrinate
837ca6a805 Fix typo (#3344) 2024-11-23 17:30:58 +01:00
renovate[bot]
08eebdf24f chore(deps): update dependency nlog.web.aspnetcore to 5.3.15 2024-11-21 21:33:59 +00:00
Łukasz Domeradzki
2d4ee1c9f8 Improve COPY in our dockerfiles
https://docs.docker.com/reference/dockerfile/#copy---link

> If you don't rely on the behavior of following symlinks in the destination path, using --link is always recommended. The performance of --link is equivalent or better than the default behavior and, it creates much better conditions for cache reuse.

Also recommended in aspnet samples: https://github.com/dotnet/dotnet-docker/blob/main/samples/aspnetapp/Dockerfile
2024-11-21 22:33:32 +01:00
renovate[bot]
448cdda23d chore(deps): update asf-ui digest to 28133ae 2024-11-20 21:46:06 +00:00
renovate[bot]
ccbb830538 chore(deps): update github/codeql-action action to v3.27.5 2024-11-20 16:35:42 +00:00
ArchiBot
bdb94b8f0b Automatic translations update 2024-11-20 02:22:06 +00:00
renovate[bot]
0f4626557e chore(deps): update asf-ui digest to 6cfb52e 2024-11-19 15:57:11 +00:00
renovate[bot]
0c091ea5a5 chore(deps): update asf-ui digest to b10ccf2 2024-11-19 04:31:36 +00:00
ArchiBot
cdaa1a6374 Automatic translations update 2024-11-19 02:22:10 +00:00
renovate[bot]
857c81e0bc chore(deps): update wiki digest to dc8e632 2024-11-18 15:09:05 +00:00
Łukasz Domeradzki
6ab1e40826 Bump 2024-11-18 11:10:07 +01:00
Łukasz Domeradzki
8aa017050e Fix trimmed HttpContext in ASF API 2024-11-18 11:08:31 +01:00
ArchiBot
b1b04b3ebe Automatic translations update 2024-11-18 02:23:09 +00:00
renovate[bot]
4fc277221e chore(deps): update wiki digest to 59de868 2024-11-17 23:00:15 +00:00
Łukasz Domeradzki
082beb5763 Bump 2024-11-17 20:16:01 +01:00
Łukasz Domeradzki
607b380ddd Bump 2024-11-17 20:15:42 +01:00
Łukasz Domeradzki
1ec9118af2 Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2024-11-15 23:54:42 +01:00
renovate[bot]
c911ad45bf chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.2.1 2024-11-15 19:50:58 +00:00
renovate[bot]
0dee3e311a chore(deps): update asf-ui digest to 1f0b191 2024-11-15 08:05:11 +00:00
ArchiBot
17ef5e3aee Automatic translations update 2024-11-15 02:22:07 +00:00
renovate[bot]
1505e2dbd4 chore(deps): update github/codeql-action action to v3.27.4 2024-11-14 16:57:46 +00:00
Łukasz Domeradzki
1ea5913f3d Misc 2024-11-14 12:02:18 +01:00
renovate[bot]
7f548a1982 chore(deps): update asf-ui digest to e83c58e 2024-11-14 05:07:08 +00:00
ArchiBot
d1b7133db3 Automatic translations update 2024-11-14 02:19:56 +00:00
renovate[bot]
c5bee672d1 chore(deps): update dependency opentelemetry.extensions.hosting to 1.10.0 2024-11-13 03:04:04 +00:00
renovate[bot]
50b054890a chore(deps): update asf-ui digest to 33319ed 2024-11-13 01:34:12 +00:00
renovate[bot]
ef9d269660 chore(deps): update github/codeql-action action to v3.27.3 2024-11-12 23:30:37 +00:00
renovate[bot]
f01b0d6641 chore(deps): update swashbuckle-aspnetcore monorepo to v7 (#3338)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 00:30:07 +01:00
renovate[bot]
f9519141b1 chore(deps): update dotnet monorepo to v9 (#3337)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 00:29:18 +01:00
Łukasz Domeradzki
1b626caa53 .NET ⑨ (strongest version) (#3244)
* Initial .NET 9 bump

* Resolve selected .NET 9 analyzer warnings

* Fill TODO

* Fix build errors

* Misc

* Use new methods

* .NET 9 changes

* Dockerfiles no longer preview

* Misc

* Trimming works again

* Trimming works in docker too

* Test fix

* Update Directory.Build.props
2024-11-13 00:28:52 +01:00
renovate[bot]
4167b6be54 chore(deps): update dependency microsoft.codeanalysis.resxsourcegenerator to 3.11.0-beta1.24508.2 2024-11-12 20:39:22 +00:00
renovate[bot]
8305ba92c3 chore(deps): update dependency mstest to 3.6.3 2024-11-12 17:30:32 +00:00
renovate[bot]
8efe6d7f70 chore(deps): update github/codeql-action action to v3.27.2 2024-11-12 14:46:50 +00:00
renovate[bot]
8cd9587ab7 chore(deps): update asf-ui digest to 406694f 2024-11-12 04:44:09 +00:00
ArchiBot
ed0da062df Automatic translations update 2024-11-12 02:18:36 +00:00
ArchiBot
83daa09c80 Automatic translations update 2024-11-11 02:20:07 +00:00
renovate[bot]
5599bf179b chore(deps): update wiki digest to 5d6bb1d 2024-11-10 18:15:44 +00:00
Łukasz Domeradzki
44cf96ce70 Bump 2024-11-10 15:42:19 +01:00
Łukasz Domeradzki
540408a3d0 Fix kestrel deadlock in update procedure when using update command 2024-11-10 15:36:41 +01:00
ArchiBot
9058898f3b Automatic translations update 2024-11-10 02:20:43 +00:00
ArchiBot
4643529e7f Automatic translations update 2024-11-09 02:17:54 +00:00
renovate[bot]
b0f9268996 chore(deps): update github/codeql-action action to v3.27.1 2024-11-08 18:34:33 +00:00
ArchiBot
b863a7e523 Automatic translations update 2024-11-08 02:19:25 +00:00
renovate[bot]
4a77c987ed chore(deps): update dependency steamkit2 to 3.0.0 2024-11-07 13:32:41 +00:00
ArchiBot
7d7c4ba3a5 Automatic translations update 2024-11-07 02:19:45 +00:00
renovate[bot]
f2e8fd0ec4 chore(deps): update wiki digest to 50688c7 2024-11-06 19:33:17 +00:00
Łukasz Domeradzki
a8f1cef5b8 Remove obsolete functionalities, bump 2024-11-06 18:47:39 +01:00
Łukasz Domeradzki
7c481de811 Closes #3327 2024-11-06 17:40:05 +01:00
ArchiBot
b66d883c1c Automatic translations update 2024-11-06 02:18:56 +00:00
renovate[bot]
48a742add5 chore(deps): update actions/attest-build-provenance action to v1.4.4 2024-11-05 21:02:39 +00:00
renovate[bot]
adddc1b5ba chore(deps): update asf-ui digest to 3cc6e93 2024-11-03 05:10:14 +00:00
ArchiBot
d63ef5e58c Automatic translations update 2024-11-03 02:22:03 +00:00
renovate[bot]
765651d94d chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.2.0 2024-11-02 22:07:14 +00:00
renovate[bot]
8c9462d387 chore(deps): update asf-ui digest to aed20b6 2024-11-02 07:27:55 +00:00
renovate[bot]
04bfe96e16 chore(deps): update asf-ui digest to bc7d0a9 2024-11-01 00:35:11 +00:00
renovate[bot]
2f8ef39ead chore(deps): update dependency mstest to 3.6.2 2024-10-31 16:15:08 +00:00
Łukasz Domeradzki
35cdfbf169 Misc 2024-10-31 11:58:18 +01:00
ArchiBot
fd69303a0e Automatic translations update 2024-10-31 02:20:54 +00:00
renovate[bot]
271311eeaf chore(deps): update asf-ui digest to a047b72 2024-10-30 04:28:28 +00:00
ArchiBot
00b2b24e54 Automatic translations update 2024-10-29 02:21:03 +00:00
renovate[bot]
c8e6b9efa5 chore(deps): update asf-ui digest to 7ffa683 2024-10-28 23:00:38 +00:00
renovate[bot]
b22f2f6420 chore(deps): update asf-ui digest to 3a33033 2024-10-28 16:16:27 +00:00
renovate[bot]
fa5c65f927 chore(deps): update crowdin/github-action action to v2.3.0 2024-10-28 14:34:25 +00:00
renovate[bot]
98f29b485b chore(deps): update jetbrains/qodana-action action to v2024.2.6 2024-10-28 11:29:07 +00:00
ArchiBot
712a38c70f Automatic translations update 2024-10-28 02:21:46 +00:00
Łukasz Domeradzki
c4dc037b3b Bump 2024-10-27 19:08:23 +01:00
Łukasz Domeradzki
6dddaa5992 Fix kestrel deadlock in update procedure
This time for good
2024-10-27 18:48:26 +01:00
renovate[bot]
8879ed71c5 chore(deps): update asf-ui digest to 7c5eb33 2024-10-27 03:40:36 +00:00
renovate[bot]
b4c4f73e5e chore(deps): update crazy-max/ghaction-import-gpg action to v6.2.0 2024-10-26 22:39:09 +00:00
renovate[bot]
17e64803c6 chore(deps): update dependency markdig.signed to 0.38.0 2024-10-25 22:22:01 +00:00
renovate[bot]
9c3b354fa2 chore(deps): update asf-ui digest to a45b124 2024-10-25 18:22:10 +00:00
renovate[bot]
040caa1f40 chore(deps): update dependency jetbrains.annotations to 2024.3.0 2024-10-25 03:01:44 +00:00
renovate[bot]
4cd8a7cb46 chore(deps): update actions/setup-node action to v4.1.0 2024-10-25 02:10:00 +00:00
renovate[bot]
782b54ac33 chore(deps): update actions/setup-dotnet action to v4.1.0 2024-10-24 21:50:51 +00:00
renovate[bot]
6437575763 chore(deps): update jetbrains/qodana-action action to v2024.2.5 2024-10-24 19:22:31 +00:00
renovate[bot]
df8856454a chore(deps): update asf-ui digest to 515711c 2024-10-24 16:55:33 +00:00
renovate[bot]
132f47d86f chore(deps): update asf-ui digest to 1cdd235 2024-10-24 05:14:34 +00:00
renovate[bot]
07f8dc543f chore(deps): update asf-ui digest to 7b3c90f 2024-10-23 23:17:51 +00:00
renovate[bot]
9a2fd8c91d chore(deps): update actions/checkout action to v4.2.2 2024-10-23 16:33:07 +00:00
renovate[bot]
6867f69909 chore(deps): update asf-ui digest to 61541c9 2024-10-23 10:29:16 +00:00
renovate[bot]
2c80f35388 chore(deps): update github/codeql-action action to v3.27.0 2024-10-22 21:42:13 +00:00
renovate[bot]
4e855011bc chore(deps): update asf-ui digest to 238c527 2024-10-22 18:46:50 +00:00
ArchiBot
a46dd753ba Automatic translations update 2024-10-22 02:20:44 +00:00
Łukasz Domeradzki
d7f3a0bf7e Bump 2024-10-21 13:08:52 +02:00
Łukasz Domeradzki
411c49addd Add proper support for server list provider cache 2024-10-21 12:56:17 +02:00
Łukasz Domeradzki
6bc29e8c3f Squashed commit of the following:
commit 7501fd264b7248633c6853a6f232dfbf894b944a
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Mon Oct 21 12:18:54 2024 +0200

    Remove CI artifact

commit d6ad6e78e386d08b2b7aeb53992b4b987b08d729
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Mon Oct 21 10:23:04 2024 +0200

    Bump experiments

commit d5553a52f3bc656c5dd1c280b9189bc48e4d417e
Merge: 6e34cdc2 4b3224a7
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Mon Oct 21 10:19:16 2024 +0200

    Merge branch 'main' into unified-experiments

commit 6e34cdc26c0804852c2b0cbadedcafbe45afb787
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Thu Oct 17 17:28:08 2024 +0200

    Update experiments

commit 70b1c6e367c697ee669b16bf4d18b17aef4c2bb0
Merge: c22eb587 def6b675
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Thu Oct 17 17:18:34 2024 +0200

    Merge branch 'main' into unified-experiments

commit c22eb5872ebcd1a284e354b645d4dc634412513b
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Mon Oct 14 20:07:23 2024 +0200

    Make it work

commit 9907d375040ca5a0750b70df541597be29abc21f
Merge: de4b33c2 d166e198
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Mon Oct 14 19:31:06 2024 +0200

    Merge branch 'main' into unified-experiments

commit de4b33c2c458d516b1945dd7ea24db321f15f7f9
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Sun Oct 13 20:22:32 2024 +0200

    Fix docker build again

commit 60f3be0bd89375d19333f017389c0ba223ea721a
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Sun Oct 13 20:18:27 2024 +0200

    Fix docker build

commit 07502180c4eb32549533917efca661e13ccf1a2f
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Sun Oct 13 20:15:18 2024 +0200

    Commit missing part

commit 75fd1b867511419fa11d224042f5bc761571ac8d
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Sun Oct 13 20:12:12 2024 +0200

    Craft some experiments
2024-10-21 12:19:23 +02:00
ArchiBot
4b3224a748 Automatic translations update 2024-10-21 02:21:09 +00:00
renovate[bot]
1b95433cb6 chore(deps): update asf-ui digest to 7aba78d 2024-10-20 21:59:26 +00:00
Łukasz Domeradzki
64db3f4c09 Misc
https://docs.docker.com/reference/build-checks/redundant-target-platform/
2024-10-20 23:59:02 +02:00
renovate[bot]
22509fed14 chore(deps): update asf-ui digest to 2485e01 2024-10-20 04:25:22 +00:00
ArchiBot
819b5f3dbf Automatic translations update 2024-10-20 02:22:33 +00:00
renovate[bot]
2c1975d203 chore(deps): update asf-ui digest to 2e68b90 2024-10-19 04:59:45 +00:00
ArchiBot
46d6aa44d1 Automatic translations update 2024-10-19 02:19:31 +00:00
renovate[bot]
17130b7215 chore(deps): update wiki digest to bc10b9e 2024-10-18 23:23:50 +00:00
renovate[bot]
3b0d0e033f chore(deps): update asf-ui digest to 499e1c4 2024-10-18 02:27:53 +00:00
renovate[bot]
def6b6751b chore(deps): update asf-ui digest to c289dc1 2024-10-17 09:56:10 +00:00
ArchiBot
90756bde27 Automatic translations update 2024-10-17 02:20:15 +00:00
renovate[bot]
a28c431dcd chore(deps): update swashbuckle-aspnetcore monorepo to 6.9.0 2024-10-15 13:32:00 +00:00
renovate[bot]
50fc619d92 chore(deps): update github/codeql-action action to v3.26.13 2024-10-15 00:19:55 +00:00
renovate[bot]
2475c040b9 chore(deps): update asf-ui digest to 867bd21 2024-10-14 21:12:28 +00:00
ArchiBot
d166e198de Automatic translations update 2024-10-14 12:36:26 +00:00
Łukasz Domeradzki
5a9750a4b6 Workaround stale cache of CM servers 2024-10-14 13:42:29 +02:00
ArchiBot
fc64511268 Automatic translations update 2024-10-14 02:21:05 +00:00
Łukasz Domeradzki
f2b8897ed1 Misc 2024-10-13 18:36:50 +02:00
Łukasz Domeradzki
dae03afc2d Bump 2024-10-13 18:27:20 +02:00
renovate[bot]
5d383dcae6 chore(deps): update dependency steamkit2 to 3.0.0-beta.4 2024-10-13 09:54:17 +00:00
ArchiBot
3e4c7ac9f8 Automatic translations update 2024-10-13 02:21:36 +00:00
Łukasz Domeradzki
f48caa08e9 Misc 2024-10-12 21:05:00 +02:00
Łukasz Domeradzki
f32fafdf15 Resolve eternal TODO with ASF API update routine 2024-10-12 21:03:11 +02:00
Łukasz Domeradzki
f427b89617 Bump 2024-10-12 18:55:44 +02:00
Łukasz Domeradzki
b0e36948c5 Misc
Don't force reconnect if we're somehow already connected during Start()
2024-10-12 16:11:10 +02:00
Łukasz Domeradzki
b0254aea2d Implement extra bullet-proofing and synchronization over connect/disconnect logic
Address @ezhevita findings in regards to race conditions:

- NRE in this lambda function: 1a9f2a23c4/ArchiSteamFarm/Steam/Bot.cs (L1962)
- NRE in the ArchiSteamFarm.Steam.Bot.StopHandlingCallbacks (probably race condition?)

In general, both are caused by race conditions which can happen if user attempts to start/stop bot while critical section of handling callbacks loop is going. The code is overly complex unfortunately, so debugging it/guarantee of safety is problematic.

This commit therefore attempts to fix the underlying issue by synchronizing the code that starts/stops the underlying callbacks handling loop. While the loop itself is already thread-safe, the code that starts/stops it was not before. Now Start() as well as Stop() can not occur concurrently. On top of that, the only other place which has potential to stop the loop - final disconnect, is also guarded with additional condition that it can fire only if we're NOT set to KeepRunning at the time of calling, which should fix the situation where late disconnected callback could potentially stop already triggered new loop.

As usual in such complex situations, time will tell if this fixes all the issues we have.
2024-10-12 16:06:11 +02:00
renovate[bot]
a84b9ca395 chore(deps): update asf-ui digest to 3c6cb34 2024-10-11 15:38:43 +00:00
ArchiBot
1a9f2a23c4 Automatic translations update 2024-10-11 02:19:45 +00:00
renovate[bot]
e6cb7ceb7b chore(deps): update asf-ui digest to 0e3c497 2024-10-10 19:21:22 +00:00
renovate[bot]
ec28ae562b chore(deps): update asf-ui digest to 30aa298 2024-10-10 00:20:42 +00:00
renovate[bot]
74b832ea4e chore(deps): update actions/upload-artifact action to v4.4.3 2024-10-09 18:16:55 +00:00
renovate[bot]
32c107ae53 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.1.2 2024-10-09 06:24:49 +00:00
renovate[bot]
87d28aea81 chore(deps): update actions/upload-artifact action to v4.4.2 2024-10-09 03:37:16 +00:00
ArchiBot
79b81ac5d1 Automatic translations update 2024-10-09 02:24:33 +00:00
renovate[bot]
57489bc9cb chore(deps): update asf-ui digest to 1d4a3f6 2024-10-08 21:43:48 +00:00
renovate[bot]
e45b09b675 chore(deps): update dependency microsoft.codeanalysis.resxsourcegenerator to 3.11.0-beta1.24454.1 2024-10-08 15:31:53 +00:00
renovate[bot]
c3d579a835 chore(deps): update asf-ui digest to 178501e 2024-10-08 03:58:21 +00:00
ArchiBot
9d2f4fd795 Automatic translations update 2024-10-08 02:21:10 +00:00
renovate[bot]
a173c84ffb chore(deps): update github/codeql-action action to v3.26.12 2024-10-07 22:00:26 +00:00
renovate[bot]
94ed85914a chore(deps): update actions/checkout action to v4.2.1 2024-10-07 19:05:34 +00:00
renovate[bot]
90c2986277 chore(deps): update actions/upload-artifact action to v4.4.1 2024-10-07 16:08:28 +00:00
ArchiBot
3cff63193d Automatic translations update 2024-10-07 02:21:23 +00:00
renovate[bot]
53066b1f14 chore(deps): update wiki digest to 9bef679 2024-10-06 16:49:08 +00:00
Łukasz Domeradzki
c7524af07a Misc 2024-10-06 15:58:38 +02:00
Łukasz Domeradzki
500a148632 Bump 2024-10-06 15:24:57 +02:00
Łukasz Domeradzki
33c9aeda21 Closes #3304 2024-10-06 15:14:48 +02:00
ArchiBot
9b40ab3b52 Automatic translations update 2024-10-06 02:21:58 +00:00
Łukasz Domeradzki
5a115f1822 Bump 2024-10-05 13:50:42 +02:00
Sebastian Göls
de9900ad14 Revert JSON serialization to how it was with Newtonsoft (#3302) 2024-10-05 13:49:48 +02:00
renovate[bot]
731fbca87c chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.1.1 2024-10-05 03:44:52 +00:00
ArchiBot
8ed27013a4 Automatic translations update 2024-10-05 02:19:08 +00:00
renovate[bot]
9590afa752 chore(deps): update docker/setup-buildx-action action to v3.7.1 2024-10-04 16:27:37 +00:00
Łukasz Domeradzki
f534997e0e Close log endpoints upon graceful shutdown request
Previously we've kept websocket connection open for as long as caller requested it. During graceful shutdown, ASP.NET normally waits for all pending requests to finish, while no longer accepting new ones - this is a very good approach. In our case however, since we didn't do anything with that event before, the graceful shutdown was timing out after 30 seconds before eventually forcefully killing any still-ongoing requests, websocket connection in our case.

Hook into application lifetime in order to be notified when the graceful shutdown happens. This way we can create linked cancellation token for request abort and graceful shutdown and close the websocket connection when any of those two happens.
2024-10-04 17:58:56 +02:00
Łukasz Domeradzki
d609a68dc4 Bump 2024-10-04 14:34:58 +02:00
Łukasz Domeradzki
92456aa838 Avoid terminating the process if not mandatory 2024-10-04 14:32:42 +02:00
Łukasz Domeradzki
d074f47659 Ignore unobserved HttpIOException 2024-10-04 14:27:02 +02:00
renovate[bot]
4cc16897cf chore(deps): update github/codeql-action action to v3.26.11 2024-10-04 04:29:31 +00:00
ArchiBot
8cabec1aff Automatic translations update 2024-10-04 02:20:05 +00:00
renovate[bot]
e7650ab10e chore(deps): update dependency mstest to 3.6.1 2024-10-03 21:23:55 +00:00
renovate[bot]
97ecba07bb chore(deps): update asf-ui digest to 6a1e814 2024-10-03 18:44:34 +00:00
renovate[bot]
061413303a chore(deps): update docker/setup-buildx-action action to v3.7.0 2024-10-03 09:41:06 +00:00
ArchiBot
6bb3d4b48a Automatic translations update 2024-10-03 02:20:14 +00:00
renovate[bot]
90a27b2a4d chore(deps): update asf-ui digest to 615cc1a 2024-10-02 19:24:54 +00:00
renovate[bot]
61aa656611 chore(deps): update wiki digest to 36a8184 2024-10-02 07:23:08 +00:00
renovate[bot]
c6ae45f6ab chore(deps): update asf-ui digest to ef73b2a 2024-10-02 03:33:55 +00:00
ArchiBot
d72eb0b06d Automatic translations update 2024-10-02 02:20:03 +00:00
renovate[bot]
5c728127f1 chore(deps): update wiki digest to 545a92c 2024-10-01 10:09:58 +00:00
ArchiBot
a64472188c Automatic translations update 2024-10-01 02:23:36 +00:00
renovate[bot]
39f7f0a1c6 chore(deps): update docker/build-push-action action to v6.9.0 2024-09-30 21:30:10 +00:00
Łukasz Domeradzki
1e3461918e Misc 2024-09-30 22:49:03 +02:00
Łukasz Domeradzki
ae0704e2bb Remove obsolete alias 2024-09-30 22:46:48 +02:00
Łukasz Domeradzki
42e07c2445 Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2024-09-30 22:45:57 +02:00
Łukasz Domeradzki
641cf5a350 Rewrite points balance from AWH to AH 2024-09-30 22:45:02 +02:00
renovate[bot]
f984a9122e chore(deps): update wiki digest to 66d2709 (#3295)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-30 22:25:50 +02:00
Łukasz Domeradzki
889795a326 Bump 2024-09-30 22:24:40 +02:00
Łukasz Domeradzki
d5df9e0af9 Bump 2024-09-30 22:24:04 +02:00
Łukasz Domeradzki
b7a6cc5158 Activate multiple definitions in parallel 2024-09-30 22:15:38 +02:00
Łukasz Domeradzki
55d49f87ff Closes #3299 2024-09-30 22:02:09 +02:00
Łukasz Domeradzki
c2abbf0fc0 Misc optimization 2024-09-30 19:19:26 +02:00
Łukasz Domeradzki
ba11952945 Handle exceptions in ArchiCacheable
While our code does not throw them, this is public helper and we don't need to enforce from other callers exceptions-less flow. We can use it for a failure.
2024-09-30 19:16:52 +02:00
renovate[bot]
a7f2556b48 chore(deps): update github/codeql-action action to v3.26.10 2024-09-30 13:49:28 +00:00
renovate[bot]
b66dd2c01b chore(deps): update swashbuckle-aspnetcore monorepo to 6.8.1 2024-09-30 10:22:56 +00:00
ArchiBot
c6261af03c Automatic translations update 2024-09-30 02:21:42 +00:00
ArchiBot
e44d1ac62e Automatic translations update 2024-09-29 02:21:59 +00:00
renovate[bot]
37afe1959a chore(deps): update asf-ui digest to fa46e12 2024-09-28 10:46:57 +00:00
ArchiBot
da04f6b100 Automatic translations update 2024-09-28 02:19:20 +00:00
renovate[bot]
168dc5cb35 chore(deps): update asf-ui digest to faa5f79 2024-09-27 22:19:00 +00:00
Łukasz Domeradzki
9f4d5df8d2 Bump 2024-09-28 00:18:33 +02:00
Łukasz Domeradzki
0c21c223be Closes #3294 2024-09-28 00:03:15 +02:00
Łukasz Domeradzki
1fc4ac8e07 Update GlobalConfig.cs 2024-09-27 23:31:01 +02:00
Łukasz Domeradzki
088161e9ba Experimental update channel rebrand 2024-09-27 23:23:55 +02:00
renovate[bot]
246429f7a1 chore(deps): update docker/build-push-action action to v6.8.0 2024-09-27 12:36:42 +00:00
ArchiBot
2478dd6c10 Automatic translations update 2024-09-27 02:20:15 +00:00
ArchiBot
ee234001f1 Automatic translations update 2024-09-26 02:19:53 +00:00
renovate[bot]
9325959358 chore(deps): update asf-ui digest to 9f5672d 2024-09-25 22:49:39 +00:00
renovate[bot]
aed6784f55 chore(deps): update actions/checkout action to v4.2.0 2024-09-25 19:41:36 +00:00
Łukasz Domeradzki
b5f916dbac Add support for desktop.ini on Windows 2024-09-25 11:59:41 +02:00
renovate[bot]
2555623064 chore(deps): update github/codeql-action action to v3.26.9 2024-09-24 18:08:58 +00:00
renovate[bot]
83aa57a764 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to 8.1.0 2024-09-24 16:36:14 +00:00
ArchiBot
44ed1b1547 Automatic translations update 2024-09-24 02:20:24 +00:00
renovate[bot]
1b91674f9b chore(deps): update dependency nlog.web.aspnetcore to 5.3.14 2024-09-23 22:05:05 +00:00
renovate[bot]
cc363c2f51 chore(deps): update asf-ui digest to 975f624 2024-09-23 17:01:59 +00:00
renovate[bot]
0982943799 chore(deps): update crowdin/github-action action to v2.2.0 2024-09-23 14:24:50 +00:00
renovate[bot]
c79faf6c0e chore(deps): update swashbuckle-aspnetcore monorepo to 6.8.0 2024-09-23 11:11:54 +00:00
ArchiBot
ea110d5da9 Automatic translations update 2024-09-23 02:19:31 +00:00
Łukasz Domeradzki
40dc70e8c7 Misc 2024-09-22 20:42:44 +02:00
Łukasz Domeradzki
5cc684f4b6 .NET 9 improvements 2024-09-22 20:11:50 +02:00
Łukasz Domeradzki
3f605d59d4 Misc 2024-09-22 19:49:22 +02:00
renovate[bot]
d79af97dfc chore(deps): update asf-ui digest to c79c3a1 2024-09-21 03:25:56 +00:00
Łukasz Domeradzki
a701e14a62 Bump 2024-09-20 21:50:46 +02:00
renovate[bot]
8e30183d7c chore(deps): update dependency steamkit2 to 3.0.0-beta.3 2024-09-20 10:54:53 +00:00
renovate[bot]
7d21795c2f chore(deps): update asf-ui digest to 54a84d6 2024-09-20 06:07:16 +00:00
renovate[bot]
26765f31f7 chore(deps): update jetbrains/qodana-action action to v2024.2.3 2024-09-20 02:00:58 +00:00
renovate[bot]
708c523b57 chore(deps): update github/codeql-action action to v3.26.8 2024-09-19 21:58:05 +00:00
renovate[bot]
d05c6b996c chore(deps): update actions/setup-node action to v4.0.4 2024-09-19 18:22:17 +00:00
renovate[bot]
f2f83b0a60 chore(deps): update asf-ui digest to 338bd57 2024-09-19 17:13:20 +00:00
Łukasz Domeradzki
2c0e14fb55 Force github plugins re-update due to compatibility reasons 2024-09-19 16:43:26 +02:00
Łukasz Domeradzki
dca2e6f060 Bump 2024-09-19 14:09:10 +02:00
Łukasz Domeradzki
440e43935a Misc 2024-09-19 14:08:45 +02:00
Łukasz Domeradzki
1dff9a48a8 Closes #3291
As presented in the issue, we might end up in situation when parallel-processing and accepting two neutral+ trade offers will result in unwanted inventory state, because while they're both neutral+ and therefore OK to accept standalone, the combination of them both causes active badge progress degradation.

Considering the requirements we have, e.g. still processing trades in parallel, being performant, low on resources and with limited Steam servers overhead, the solution that I came up with in regards to this issue is quite simple:

- After we determine the trade to be neutral+, but before we tell the parse trade routine to accept it, we check if shared with other parallel processes set of handled sets contains any sets that we're currently processing.
- If no, we update that set to include everything we're dealing with, and tell the caller to accept this trade.
- If yes, we tell the caller to retry this trade after (other) accepted trades are confirmed and handled as usual.

This solves some issues and creates some optimistic assumptions:
- First of all, it solves the original issue, since if trade A and B both touch set S, then only one of them will be accepted. It's not deterministic which one (the one that gets to the check first), and not important anyway.
- We do not "lock" the sets before we determine that trade is neutral+, because otherwise unrelated users could spam us with non-neutral+ trades in order to lock the bot in infinite retry. This way they can't, as if the trade is determined to not be neutral+ then it never checks for concurrent processing.
- We are optimistic about resources usage. This routine could be made much more complicated to be more synchronous in order to avoid unnecessary calls to inventory and matching, however, that'd slow down the whole process only because the next call MAYBE will be determined as unneeded. Due to that, ASF is optimistic that trades will (usually) be unrelated, and can be processed in parallel, and if the conflict happens then simply we end up in a situation where we did some extra work for no reason, which is better than waiting with the work till all previous trades are processed.
- As soon as the conditions are met, the conflicting trades are retried to check if the conditions allow to accept them. If yes, they'll be accepted almost immediately after previous ones, if not, they'll be rejected as non-neutral+ anymore.

This way the additional code does not hurt the performance, parallel processing or anything else in usually expected optimistic scenarios, while adding some additional overhead in pessimistic ones, which is justified considering we don't want to degrade the badge progress.
2024-09-19 13:53:11 +02:00
renovate[bot]
85e90bb8d5 chore(deps): update asf-ui digest to 122393d 2024-09-19 00:13:45 +00:00
renovate[bot]
b62b2382fd chore(deps): update crowdin/github-action action to v2.1.3 2024-09-18 13:51:51 +00:00
renovate[bot]
07f64a0107 chore(deps): update asf-ui digest to 7ae118c 2024-09-18 11:33:46 +00:00
ArchiBot
dcdb2cb175 Automatic translations update 2024-09-18 08:49:16 +00:00
Łukasz Domeradzki
33e7ae83dc Fix wiki push 2024-09-18 10:48:24 +02:00
renovate[bot]
ac0a1da140 chore(deps): update jetbrains/qodana-action action to v2024.2.2 2024-09-17 16:55:13 +00:00
ArchiBot
1ad03ac61c Automatic translations update 2024-09-17 02:06:16 +00:00
renovate[bot]
b28736cb84 chore(deps): update asf-ui digest to 39127c2 2024-09-16 21:53:31 +00:00
Łukasz Domeradzki
602c01e2d9 Misc localization improvement 2024-09-16 20:51:32 +02:00
Łukasz Domeradzki
7b65c1aeb7 Add support for telling plugins if runtime is trimmed 2024-09-16 17:58:35 +02:00
Łukasz Domeradzki
a27973800c Provide extra info when failing to initialize plugins with TypeLoadException 2024-09-16 16:45:52 +02:00
Łukasz Domeradzki
cb4580c0d9 Remove github-push-action 2024-09-16 16:18:01 +02:00
renovate[bot]
1a74d83eae chore(deps): update github/codeql-action action to v3.26.7 2024-09-13 15:16:25 +00:00
Łukasz Domeradzki
319ee49c67 Bump 2024-09-13 14:47:07 +02:00
Łukasz Domeradzki
cefa3e1e1e Fix reconnection with connection being lost
After changes regarding to callbacks handling, we accidentally broke the reconnection logic. In particular, forced connection implicitly did disconnect with disconnect callback, but disconnect callback killed our callbacks handling loop for future connection since it was instructed to not reconnect... Pretty convulated logic.

Let's attempt to fix and simplify it. There is no forced connection concept anymore, but rather a new reconnect function which either, triggers reconnection through usual disconnection logic, or connects in edge case if we attempted to reconnect with already disconnnected client.

This way the status transition is more predictable, as we Connect() only in 3 cases:
- Initial start, including !start command, when we actually spawn the callbacks handling loop
- Upon disconnection, if we're configured to reconnect
- Reconnection, in case we're already disconnected and can't use above

And we use reconnect when:
- Failure in heartbeats to detect disconnections sooner
- Failure in refreshing access tokens, since if we lose our refresh token then the only way to get a new one is to reconnect

And finally disconnect is triggered when:
- Stopping the bot, especially !stop
- Bulletproofing against trying to connect when !KeepRunning and likewise
- Usual Steam maintenance and other network issues (which usually trigger reconnection)

The codebase is too huge to analyze every possible edge case, but with this logic I can no longer reproduce the previous issue
2024-09-13 14:41:11 +02:00
Łukasz Domeradzki
061e61b740 Closes #3289 2024-09-13 13:42:20 +02:00
Łukasz Domeradzki
73d756f211 Bump 2024-09-13 12:50:21 +02:00
Łukasz Domeradzki
3bb83610b8 Misc refactor after #3287 2024-09-13 10:04:56 +02:00
dm1tz
8e85b87764 Add loot& and transfer& commands (#3287)
* Add `loot&` and `transfer&` commands

* Remove trailing comment
2024-09-13 09:20:35 +02:00
renovate[bot]
4d0f5a56ed chore(deps): update dependency nlog.web.aspnetcore to 5.3.13 2024-09-12 22:51:20 +00:00
ArchiBot
a8359e3e00 Automatic translations update 2024-09-12 02:17:57 +00:00
renovate[bot]
3812331901 chore(deps): update dependency mstest to 3.6.0 2024-09-11 10:21:01 +00:00
ArchiBot
1714bd26f9 Automatic translations update 2024-09-11 02:18:09 +00:00
renovate[bot]
d8ad42f760 chore(deps): update dependency microsoft.codeanalysis.resxsourcegenerator to 3.11.0-beta1.24415.1 2024-09-10 20:03:11 +00:00
renovate[bot]
c477bd2bae chore(deps): update wiki digest to c7cb49b 2024-09-10 11:38:24 +00:00
ArchiBot
aa1cd98646 Automatic translations update 2024-09-10 02:18:00 +00:00
ArchiBot
5f545a9bbc Automatic translations update 2024-09-09 02:18:15 +00:00
ArchiBot
0d3bc2cf47 Automatic translations update 2024-09-07 02:16:32 +00:00
renovate[bot]
8e65142d4c chore(deps): update asf-ui digest to e6ac58d 2024-09-06 14:15:24 +00:00
renovate[bot]
c26a758825 chore(deps): update crowdin/github-action action to v2.1.2 2024-09-06 07:28:01 +00:00
ArchiBot
a02d8cee86 Automatic translations update 2024-09-06 02:17:32 +00:00
renovate[bot]
2c4d2981cd chore(deps): update actions/attest-build-provenance action to v1.4.3 2024-09-05 18:44:30 +00:00
ArchiBot
6c5e0a20f1 Automatic translations update 2024-09-05 02:17:28 +00:00
renovate[bot]
db920da4b8 chore(deps): update wiki digest to 70757b8 2024-09-04 22:58:17 +00:00
Łukasz Domeradzki
efdc3eb7bb Misc 2024-09-04 22:24:31 +02:00
renovate[bot]
c0da86e4ca chore(deps): update asf-ui digest to 65b5c0c (#3281)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-04 14:46:51 +02:00
ArchiBot
720a24e9ad Automatic translations update 2024-09-04 02:17:13 +00:00
renovate[bot]
7dc6096e07 chore(deps): update asf-ui digest to 2997f0d 2024-09-03 22:00:17 +00:00
renovate[bot]
7910205674 chore(deps): update asf-ui digest to 8d4b148 2024-09-03 17:03:59 +00:00
Łukasz Domeradzki
1fbc51d02b Update ArchiSteamFarm.sln.DotSettings 2024-09-03 17:46:17 +02:00
renovate[bot]
a3d968c6af chore(deps): update asf-ui digest to 486401d (#3279)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-02 08:57:43 +02:00
Łukasz Domeradzki
63c61f8e47 Misc 2024-09-01 23:56:25 +02:00
Łukasz Domeradzki
1ae59f4229 Bump 2024-09-01 14:07:27 +02:00
Łukasz Domeradzki
4a95a6928b Bump 2024-09-01 14:05:18 +02:00
Łukasz Domeradzki
54a092a822 Take into account extended_onlyallowrunincountries when deciding upon region locks 2024-09-01 14:05:08 +02:00
renovate[bot]
9898d47db4 chore(deps): update asf-ui digest to ef232d5 (#3277)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-01 13:43:21 +02:00
renovate[bot]
b46e55c57b chore(deps): update asf-ui digest to f16eae1 2024-08-30 22:07:03 +00:00
renovate[bot]
cb6f9f3e00 chore(deps): update actions/upload-artifact action to v4.4.0 2024-08-30 19:47:10 +00:00
renovate[bot]
d750ba5f99 chore(deps): update github/codeql-action action to v3.26.6 2024-08-29 14:23:00 +00:00
ArchiBot
c84db87532 Automatic translations update 2024-08-27 02:15:43 +00:00
renovate[bot]
3da662ef61 chore(deps): update swashbuckle-aspnetcore monorepo to v6.7.3 2024-08-26 09:26:01 +00:00
Łukasz Domeradzki
2f42c75df7 Update Directory.Build.props 2024-08-26 11:25:11 +02:00
Łukasz Domeradzki
14388487fd Fix build 2024-08-26 10:07:31 +02:00
Łukasz Domeradzki
a155748f88 Misc 2024-08-26 10:04:54 +02:00
renovate[bot]
c7fa69a25b chore(deps): update dependency steamkit2 to v3.0.0-beta.2 2024-08-26 08:00:56 +00:00
renovate[bot]
5194cb103a chore(deps): update swashbuckle-aspnetcore monorepo to v6.7.2 2024-08-24 14:13:46 +00:00
renovate[bot]
77ec0d1c78 chore(deps): update github/codeql-action action to v3.26.5 2024-08-24 02:34:08 +00:00
renovate[bot]
d85c9a3c0a chore(deps): update asf-ui digest to 1641151 2024-08-23 18:03:25 +00:00
renovate[bot]
97a8e6f5c2 chore(deps): update actions/attest-build-provenance action to v1.4.2 2024-08-22 23:37:30 +00:00
renovate[bot]
3d73b42c15 chore(deps): update asf-ui digest to 2b37add 2024-08-22 20:06:49 +00:00
renovate[bot]
4156dfcd4e chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to v8.0.2 2024-08-22 06:39:35 +00:00
renovate[bot]
9fb19bffc1 chore(deps): update github/codeql-action action to v3.26.4 2024-08-21 20:32:34 +00:00
ArchiBot
fe1cdce59d Automatic translations update 2024-08-21 02:13:51 +00:00
ArchiBot
c07caf6be8 Automatic translations update 2024-08-20 02:13:43 +00:00
renovate[bot]
cab8c60fcb chore(deps): update github/codeql-action action to v3.26.3 2024-08-19 19:59:22 +00:00
renovate[bot]
023c7da52b chore(deps): update wiki digest to e7c71c7 2024-08-19 12:37:17 +00:00
Łukasz Domeradzki
6b2bcbee6e Drop VS public signing workaround
They had enough of time to fix their stupidity
2024-08-19 14:36:19 +02:00
ArchiBot
ebac577ede Automatic translations update 2024-08-19 02:15:10 +00:00
renovate[bot]
0846291779 chore(deps): update swashbuckle-aspnetcore monorepo to v6.7.1 2024-08-18 07:55:58 +00:00
Łukasz Domeradzki
fab9d95096 Allow nullable T for concurrent list
Even if we don't use it, no reason to not support it, since it is in underlying collection
2024-08-18 03:21:03 +02:00
Łukasz Domeradzki
2dc853ebfc Misc 2024-08-18 03:17:30 +02:00
Łukasz Domeradzki
5867a351a8 Misc 2024-08-18 03:14:11 +02:00
Łukasz Domeradzki
5605e9a666 Misc 2024-08-18 01:59:25 +02:00
Łukasz Domeradzki
337b720d31 Misc deduplication 2024-08-18 01:53:13 +02:00
Łukasz Domeradzki
06185d5f7d Misc 2024-08-17 22:19:17 +02:00
Łukasz Domeradzki
90cfdd140b Bump 2024-08-17 21:45:40 +02:00
Łukasz Domeradzki
5a41d559a3 Misc
No point in making this available for all IEnumerables, only ICollections are affected
2024-08-16 03:35:09 +02:00
Łukasz Domeradzki
b6805a94a3 Add workaround for LINQ race condition with concurrent collections
This is some next-level race condition, so for those interested:
- Concurrent collections are thread-safe in a way that each operation is atomic
- Naturally if you call two atomic operations in a row, the result is no longer atomic, since there could be some changes between the first and the last
- Certain LINQ operations such as OrderBy(), Reverse(), ToArray(), among more, use internal buffer for operation with certain optimization that checks if input is ICollection, if yes, it calls Count and CopyTo(), for OrderBy in this example
- In result, such LINQ call is not guaranteed to be thread-safe, since it assumes those two calls to be atomic, while they're not in reality.

This issue is quite hard to spot in real applications, since it's not that easy to trigger it (you need to call the operation on ICollection and then have another thread modifying it while enumerating). This is probably why we've never had any real problem until I've discovered this madness with @Aareksio in entirely different project.

As a workaround, we'll explicitly convert some ICollection inputs to IEnumerable, in particular around OrderBy(), so the optimization is skipped and the result is not corrupted.

I've added unit tests which ensure this workaround works properly, and you can easily reproduce the problem by removing AsLinqThreadSafeEnumerable() in them.

See https://github.com/dotnet/runtime/discussions/50687 for more insight

I have no clue who thought that ignoring this issue is a good idea, at the very least concurrent collections should have opt-out mechanism from those optimizations, there is no reason for them to not do that.
2024-08-16 03:25:58 +02:00
renovate[bot]
6a678cd5a9 chore(deps): update github/codeql-action action to v3.26.2 2024-08-14 16:30:56 +00:00
renovate[bot]
ecaf61252a chore(deps): update asf-ui digest to 6900304 2024-08-14 08:46:01 +00:00
ArchiBot
85c4e4ac37 Automatic translations update 2024-08-14 02:14:19 +00:00
renovate[bot]
16394182b2 chore(deps): update github/codeql-action action to v3.26.1 2024-08-13 23:09:58 +00:00
renovate[bot]
a0cc53cbb7 chore(deps): update docker/build-push-action action to v6.7.0 2024-08-13 19:17:41 +00:00
renovate[bot]
f331ee2c24 chore(deps): update dependency mstest to v3.5.2 2024-08-13 17:39:50 +00:00
renovate[bot]
cb0767f28e chore(deps): update dependency microsoft.codeanalysis.resxsourcegenerator to v3.11.0-beta1.24324.1 2024-08-13 13:40:40 +00:00
renovate[bot]
91aaf3be19 chore(deps): update dependency nlog.web.aspnetcore to v5.3.12 2024-08-13 04:29:59 +00:00
ArchiBot
9540e564fc Automatic translations update 2024-08-13 02:15:24 +00:00
renovate[bot]
2100d6287c chore(deps): update asf-ui digest to 184c664 2024-08-12 01:06:04 +00:00
ArchiBot
8ad8183d4f Automatic translations update 2024-08-11 02:16:59 +00:00
Łukasz Domeradzki
90f2d93768 Optimize mobile authenticator, add unit tests 2024-08-11 02:21:00 +02:00
renovate[bot]
bae8dc330c chore(deps): update asf-ui digest to 1136a49 2024-08-10 04:23:27 +00:00
ArchiBot
599ca4d2c9 Automatic translations update 2024-08-10 02:13:43 +00:00
Łukasz Domeradzki
ff7a1e7c0e Misc optimization 2024-08-09 23:03:56 +02:00
renovate[bot]
216cd51c4a chore(deps): update actions/attest-build-provenance action to v1.4.1 2024-08-09 17:47:24 +00:00
Łukasz Domeradzki
568e9935ac Bump 2024-08-08 14:19:46 +02:00
renovate[bot]
28e9247c9a chore(deps): update docker/build-push-action action to v6.6.1 2024-08-07 21:16:33 +00:00
renovate[bot]
df3f16d424 chore(deps): update jetbrains/qodana-action action to v2024.1.9 2024-08-07 15:40:18 +00:00
renovate[bot]
41d03a15ac chore(deps): update docker/build-push-action action to v6.6.0 2024-08-07 12:26:35 +00:00
renovate[bot]
3f0e67075f chore(deps): update asf-ui digest to eb4cb97 2024-08-07 03:57:07 +00:00
ArchiBot
67329ec668 Automatic translations update 2024-08-07 02:14:49 +00:00
Łukasz Domeradzki
f28d783272 Misc 2024-08-07 03:15:22 +02:00
Łukasz Domeradzki
2c9d015f38 Fix @xPaw breaking changes
How could you!
2024-08-07 03:02:04 +02:00
renovate[bot]
5ad8a93d48 chore(deps): update dependency steamkit2 to v3.0.0-beta.1 2024-08-06 22:11:53 +00:00
renovate[bot]
ac9c1504e9 chore(deps): update github/codeql-action action to v3.26.0 2024-08-06 18:12:59 +00:00
renovate[bot]
4cde913453 chore(deps): update actions/upload-artifact action to v4.3.6 2024-08-06 15:22:49 +00:00
Łukasz Domeradzki
f05d041e6d Bump 2024-08-06 12:31:56 +02:00
Łukasz Domeradzki
ce4b41ee73 Misc 2024-08-06 12:04:52 +02:00
Łukasz Domeradzki
0c3c4c08ea Rewrite callbacks handling loop to new mechanism 2024-08-06 12:02:38 +02:00
renovate[bot]
67d9486495 chore(deps): update asf-ui digest to bd3816f 2024-08-06 04:11:38 +00:00
ArchiBot
bd00911f85 Automatic translations update 2024-08-06 02:12:59 +00:00
Łukasz Domeradzki
4cb3123ff6 Update BotConfig.cs 2024-08-06 03:12:06 +02:00
Łukasz Domeradzki
4ff1411c38 Closes #3261 2024-08-06 03:07:41 +02:00
Łukasz Domeradzki
f983a2eab2 Refactor UserInterfaceMode, kill SetCurrentMode() 2024-08-06 03:00:14 +02:00
renovate[bot]
fd7c86c2da chore(deps): update dependency mstest to v3.5.1 2024-08-05 22:17:22 +00:00
renovate[bot]
d90aa1798b chore(deps): update dependency steamkit2 to v3.0.0-alpha.3 2024-08-05 11:59:40 +00:00
Łukasz Domeradzki
afa602f940 Resolve remainings of CA1863 2024-08-05 02:45:53 +02:00
Łukasz Domeradzki
773698a0d4 Closes #3264
THANKS @ezhevita
2024-08-05 02:37:50 +02:00
Łukasz Domeradzki
08907e8953 Emit format methods for ItemsMatcher, #3264 2024-08-05 02:15:58 +02:00
Łukasz Domeradzki
332e9a53d7 Misc 2024-08-05 01:44:34 +02:00
Łukasz Domeradzki
7a8e2091a6 Use Microsoft.CodeAnalysis.ResxSourceGenerator for localization 2024-08-05 01:42:09 +02:00
Łukasz Domeradzki
3ed05b8e26 Bump 2024-08-03 15:55:53 +02:00
Łukasz Domeradzki
d3dbfc5e9e Closes #3262 2024-08-03 15:36:45 +02:00
renovate[bot]
30c84efb57 chore(deps): update asf-ui digest to 2985427 2024-08-03 01:40:41 +00:00
renovate[bot]
3ba8602156 chore(deps): update actions/upload-artifact action to v4.3.5 2024-08-02 19:48:01 +00:00
renovate[bot]
9d2aacab58 chore(deps): update swashbuckle-aspnetcore monorepo to v6.7.0 2024-08-01 19:50:26 +00:00
Łukasz Domeradzki
c7b9751e0e Bump, remove obsolete prop 2024-08-01 19:18:35 +02:00
renovate[bot]
9cfbc35ac4 chore(deps): update asf-ui digest to 540ac67 2024-07-31 22:58:09 +00:00
ArchiBot
ba618dc2b6 Automatic translations update 2024-07-31 02:01:32 +00:00
renovate[bot]
f3c870b8c7 chore(deps): update actions/attest-build-provenance action to v1.4.0 2024-07-30 22:15:50 +00:00
renovate[bot]
46ec3e51b0 chore(deps): update asf-ui digest to 745b067 2024-07-30 06:48:35 +00:00
ArchiBot
4ca93c3c45 Automatic translations update 2024-07-30 02:12:35 +00:00
renovate[bot]
7ab499e2c0 chore(deps): update docker/setup-buildx-action action to v3.6.1 2024-07-29 18:19:14 +00:00
renovate[bot]
102f3de120 chore(deps): update wiki digest to d8213b7 2024-07-29 15:49:53 +00:00
renovate[bot]
01fd6f3ad6 chore(deps): update asf-ui digest to 07ceace 2024-07-29 03:52:32 +00:00
ArchiBot
cca465d30d Automatic translations update 2024-07-29 02:14:46 +00:00
renovate[bot]
dc7f2acc50 chore(deps): update wiki digest to d2c0479 2024-07-28 17:25:29 +00:00
renovate[bot]
79a15ad781 chore(deps): update asf-ui digest to a138b8c 2024-07-27 14:45:36 +00:00
Łukasz Domeradzki
4e6905d562 Bump 2024-07-27 16:44:55 +02:00
renovate[bot]
03a5853a91 chore(deps): update github/codeql-action action to v3.25.15 2024-07-26 19:15:33 +00:00
renovate[bot]
f3fae74bde chore(deps): update crowdin/github-action action to v2.1.1 2024-07-26 15:05:06 +00:00
Łukasz Domeradzki
8bbff388d2 Misc fix against case-sensitivity for 2fafinalized 2024-07-26 16:20:31 +02:00
renovate[bot]
40d5fe75e7 chore(deps): update asf-ui digest to 74f0f71 2024-07-26 10:44:35 +00:00
ArchiBot
cdbabc0a0b Automatic translations update 2024-07-26 02:12:12 +00:00
renovate[bot]
97ecfc03c8 chore(deps): update github/codeql-action action to v3.25.14 2024-07-25 10:46:48 +00:00
ArchiBot
70d35bfeb8 Automatic translations update 2024-07-25 02:12:20 +00:00
renovate[bot]
a11866c544 chore(deps): update asf-ui digest to 62a5689 2024-07-24 04:31:10 +00:00
ArchiBot
5aaf5476e0 Automatic translations update 2024-07-24 02:11:50 +00:00
renovate[bot]
7e78922056 chore(deps): update crowdin/github-action action to v2.1.0 2024-07-23 12:47:54 +00:00
renovate[bot]
e7dad02c63 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to v8.0.1 2024-07-23 01:16:03 +00:00
renovate[bot]
da5fb391a4 chore(deps): update docker/setup-buildx-action action to v3.5.0 2024-07-22 17:54:28 +00:00
renovate[bot]
3b48b79997 chore(deps): update docker/login-action action to v3.3.0 2024-07-22 14:38:23 +00:00
renovate[bot]
30e887a85b chore(deps): update docker/build-push-action action to v6.5.0 2024-07-22 11:18:24 +00:00
Łukasz Domeradzki
c737c792f6 Misc SK2 improvements 2024-07-21 18:09:47 +02:00
renovate[bot]
64f4853b13 chore(deps): update dependency steamkit2 to v3.0.0-alpha.2 2024-07-21 11:22:10 +00:00
Łukasz Domeradzki
0c890e590c Misc 2024-07-20 01:21:06 +02:00
Łukasz Domeradzki
b664b85495 Remove ConfigureAwaitChecker.Analyzer
Appropriate detecion is now available in Roslyn
2024-07-20 01:01:45 +02:00
renovate[bot]
3894a6a2d1 chore(deps): update github/codeql-action action to v3.25.13 2024-07-19 16:11:56 +00:00
renovate[bot]
ae8224b734 chore(deps): update docker/build-push-action action to v6.4.1 2024-07-17 11:06:17 +00:00
renovate[bot]
bd5739d7a0 chore(deps): update asf-ui digest to a1d6bea 2024-07-17 01:52:28 +00:00
renovate[bot]
3a8a8efbd1 chore(deps): update dependency mstest to v3.5.0 2024-07-16 20:39:31 +00:00
renovate[bot]
4fc1f4c60e chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to v8 (#3252)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-16 12:58:46 +02:00
renovate[bot]
079bbc8e78 chore(deps): update asf-ui digest to bd5cdf0 2024-07-16 04:30:34 +00:00
ArchiBot
70bfbd7d8e Automatic translations update 2024-07-16 02:12:58 +00:00
renovate[bot]
f0c7222055 chore(deps): update docker/build-push-action action to v6.4.0 2024-07-15 14:33:35 +00:00
Łukasz Domeradzki
7b1b3d4d8e Misc 2024-07-14 21:19:08 +02:00
Łukasz Domeradzki
7d6b4b7a23 Bump 2024-07-14 21:14:11 +02:00
Łukasz Domeradzki
a4d0b7d1cb Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2024-07-14 21:13:28 +02:00
Łukasz Domeradzki
62e786b9b8 Bring back deprecated function 2024-07-14 21:13:26 +02:00
Sebastian Göls
38ae309285 Monitoring (#3251)
* Add more plugin metrics

* Update dashboard to account for changed labels in upstream library and new plugin metrics
2024-07-14 21:11:07 +02:00
Łukasz Domeradzki
f87b63d6ee Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2024-07-14 17:25:05 +02:00
Łukasz Domeradzki
3b3f1caf84 Misc 2024-07-14 17:25:03 +02:00
ArchiBot
724be4c1cf Automatic translations update 2024-07-14 02:11:19 +00:00
ArchiBot
b4ab287994 Automatic translations update 2024-07-13 02:11:00 +00:00
renovate[bot]
19d17940c0 chore(deps): update wiki digest to 0b5412c 2024-07-12 21:22:38 +00:00
renovate[bot]
aa46079ed4 chore(deps): update github/codeql-action action to v3.25.12 2024-07-12 09:07:51 +00:00
renovate[bot]
5e81e3a6a6 chore(deps): update asf-ui digest to 6df84ff 2024-07-12 03:14:56 +00:00
ArchiBot
e2f2b6aa5d Automatic translations update 2024-07-12 02:10:43 +00:00
renovate[bot]
a7c67b04ca chore(deps): update asf-ui digest to 3aab5a4 2024-07-11 23:03:27 +00:00
Łukasz Domeradzki
465207034d Misc 2024-07-11 22:45:58 +02:00
ArchiBot
93b9cf4b76 Automatic translations update 2024-07-11 02:13:17 +00:00
Łukasz Domeradzki
dc57860f0d Misc optimization 2024-07-11 01:34:49 +02:00
renovate[bot]
f71b0bc945 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to v7.6.3 2024-07-10 12:24:48 +00:00
renovate[bot]
1c9132627b chore(deps): update actions/setup-node action to v4.0.3 2024-07-10 11:08:35 +00:00
Vita Chumakova
b14d5de641 Fix struct reordering (#3247) 2024-07-10 13:08:06 +02:00
renovate[bot]
530743cf97 chore(deps): update actions/attest-build-provenance action to v1.3.3 2024-07-10 06:56:06 +00:00
renovate[bot]
d1ab859621 chore(deps): update asf-ui digest to 329c79b 2024-07-10 03:26:55 +00:00
ArchiBot
fe76ada8d0 Automatic translations update 2024-07-10 02:11:36 +00:00
renovate[bot]
e096f4f081 chore(deps): update asf-ui digest to 29f16e8 2024-07-09 22:59:45 +00:00
Łukasz Domeradzki
0d8f7b854d Misc 2024-07-10 00:21:56 +02:00
Łukasz Domeradzki
b9beb6ec16 Fix ASF trying to create www folder if it doesn't exist yet
It seems that ASP.NET is trying to create initialized WebRootPath if it doesn't exist yet. This might be unwanted, as user might want to explicitly disable www directory while still having interest in IPC. On top of that, ASF will outright crash if creating such directory will be impossible, e.g. because of insufficient permission.

It makes sense for us to check first if the directory exists - if not, we can omit it entirely, so ASP.NET will default to NullFileProvider and simply respond 404 to everything unhandled from the code perspective.

@SuperSandro2000 will resolve https://github.com/NixOS/nixpkgs/issues/312242 without a need of disabling IPC. In other words, you can use IPC with no www folder attached in order to still have ASF API and /swagger available. ASF will no longer crash in this scenario, it also won't try to create a directory on read-only filesystem.
2024-07-10 00:18:44 +02:00
Łukasz Domeradzki
7afcf82c32 Update config.yml 2024-07-09 23:32:26 +02:00
Łukasz Domeradzki
b27dd345af Misc 2024-07-09 23:02:29 +02:00
renovate[bot]
9fdf8c6a75 chore(deps): update actions/setup-dotnet action to v4.0.1 2024-07-09 16:12:12 +00:00
ArchiBot
1010f270a0 Automatic translations update 2024-07-09 02:12:18 +00:00
Łukasz Domeradzki
0db051a251 Misc 2024-07-09 01:36:55 +02:00
Łukasz Domeradzki
890a431e24 Cleanup main csproj file 2024-07-08 17:28:44 +02:00
ArchiBot
173e0ea157 Automatic translations update 2024-07-08 02:12:23 +00:00
renovate[bot]
4c99ce4ab2 chore(deps): update wiki digest to 7539ff8 2024-07-07 20:14:46 +00:00
renovate[bot]
6f98228c41 chore(deps): update wiki digest to 469c6c7 2024-07-07 02:56:47 +00:00
Łukasz Domeradzki
95d15aa107 Bump 2024-07-07 04:56:15 +02:00
Łukasz Domeradzki
2f09e74f1a Update prometheus exporter to fixed version
Apparently all of our issues should be resolved by now
2024-07-07 04:52:10 +02:00
ArchiBot
f30fcb3941 Automatic translations update 2024-07-07 02:14:46 +00:00
renovate[bot]
06254a9afc chore(deps): update dependency jetbrains.annotations to v2024 (#3243)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-07-06 23:29:44 +02:00
renovate[bot]
fd95c6cac7 chore(deps): update asf-ui digest to cd60876 2024-07-06 03:38:32 +00:00
ArchiBot
2196bccda5 Automatic translations update 2024-07-06 02:08:42 +00:00
renovate[bot]
b0ac2b4147 chore(deps): update actions/upload-artifact action to v4.3.4 2024-07-05 18:17:25 +00:00
renovate[bot]
5322321944 chore(deps): update actions/download-artifact action to v4.1.8 2024-07-05 16:24:38 +00:00
renovate[bot]
2f951e0ef6 chore(deps): update wiki digest to 743294a 2024-07-05 14:26:37 +00:00
renovate[bot]
1e6dcc88d2 chore(deps): update docker/setup-buildx-action action to v3.4.0 2024-07-04 11:47:22 +00:00
ArchiBot
8bbcfc40dc Automatic translations update 2024-07-04 02:10:45 +00:00
Łukasz Domeradzki
811ea46523 Remove deprecated functionality, bump 2024-07-04 01:33:45 +02:00
renovate[bot]
c37e54cf9b chore(deps): update jetbrains/qodana-action action to v2024.1.8 2024-07-03 16:30:15 +00:00
renovate[bot]
4c095e8eb5 chore(deps): update docker/build-push-action action to v6.3.0 2024-07-03 09:04:29 +00:00
ArchiBot
c580ec7b92 Automatic translations update 2024-07-03 02:09:58 +00:00
renovate[bot]
0c45d3c5ba chore(deps): update asf-ui digest to 6a4b92a 2024-07-02 21:48:17 +00:00
ArchiBot
2bc8a4cefd Automatic translations update 2024-07-02 02:10:59 +00:00
ArchiBot
92d28adb07 Automatic translations update 2024-06-30 02:14:26 +00:00
renovate[bot]
cc2b1dbbaa chore(deps): update asf-ui digest to 91c39f3 2024-06-29 03:30:07 +00:00
ArchiBot
bd98cadab3 Automatic translations update 2024-06-29 02:08:57 +00:00
renovate[bot]
c417f88e3b chore(deps): update github/codeql-action action to v3.25.11 2024-06-28 19:30:05 +00:00
renovate[bot]
b26a9af49b chore(deps): update docker/build-push-action action to v6.2.0 2024-06-26 15:51:30 +00:00
Łukasz Domeradzki
e4b00b35f2 Bump 2024-06-26 17:50:58 +02:00
Łukasz Domeradzki
11bab46b8b Add deprecation helper 2024-06-26 13:53:48 +02:00
ArchiBot
7eb24d7bd6 Automatic translations update 2024-06-25 02:10:23 +00:00
Łukasz Domeradzki
9a26366ff8 Misc 2024-06-25 00:34:13 +02:00
Łukasz Domeradzki
0058bc6fa5 Move dockerfiles from legacy KV format
https://docs.docker.com/reference/build-checks/legacy-key-value-format/
2024-06-25 00:32:15 +02:00
Łukasz Domeradzki
ca3f3e0cab Resolve selected .NET 9 analyzer warnings 2024-06-25 00:18:38 +02:00
ArchiBot
cf51ca454d Automatic translations update 2024-06-24 02:11:32 +00:00
ArchiBot
35c3c2a2b3 Automatic translations update 2024-06-23 02:12:06 +00:00
renovate[bot]
12bb61c23d chore(deps): update docker/build-push-action action to v6.1.0 2024-06-21 09:36:21 +00:00
ArchiBot
2e5a2a1393 Automatic translations update 2024-06-21 02:09:19 +00:00
Łukasz Domeradzki
4259bb088e Bump 2024-06-21 02:36:20 +02:00
Jack Nolddor
0768765f21 chore: blacklist summer sale 2024 appid (#3226)
refers to https://steamcommunity.com/my/gamecards/2861690
2024-06-21 00:22:06 +02:00
renovate[bot]
dc7ee7fadc Update docker/build-push-action action to v6.0.2 2024-06-20 15:04:34 +00:00
Łukasz Domeradzki
7665a1c339 Bump 2024-06-20 12:44:15 +02:00
renovate[bot]
6015cd5cb7 Update dependency Microsoft.IdentityModel.JsonWebTokens to v7.6.2 2024-06-20 08:03:03 +00:00
renovate[bot]
08aa8f2136 Update ASF-ui digest to 3ae4df4 2024-06-20 04:09:34 +00:00
ArchiBot
c27e447f57 Automatic translations update 2024-06-20 02:08:54 +00:00
Łukasz Domeradzki
9f1a3a0304 Add support for selected bot groups 2024-06-19 23:46:03 +02:00
renovate[bot]
7714478fdc Update docker/build-push-action action to v6.0.1 2024-06-18 16:00:11 +00:00
renovate[bot]
91bca33a54 Update dependency OpenTelemetry.Instrumentation.Runtime to v1.9.0 2024-06-18 11:13:05 +00:00
renovate[bot]
c67b967817 Update ASF-ui digest to 1c49bcf 2024-06-18 07:00:45 +00:00
renovate[bot]
150ed2c733 Update dependency Microsoft.IdentityModel.JsonWebTokens to v7.6.1 2024-06-18 04:30:51 +00:00
renovate[bot]
1c23e4b5b3 Update opentelemetry-dotnet-contrib monorepo to v1.9.0 2024-06-18 01:47:02 +00:00
renovate[bot]
77c4dee6a8 Update actions/attest-build-provenance action to v1.3.2 2024-06-17 18:19:05 +00:00
renovate[bot]
d6fe8eec38 Update docker/build-push-action action to v6 (#3222)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-17 12:18:15 +02:00
Łukasz Domeradzki
c12d83bbf0 Bump 2024-06-17 09:22:34 +02:00
Łukasz Domeradzki
0e6b75aa5c Update IBotTradeOffer2.cs 2024-06-17 09:19:54 +02:00
Łukasz Domeradzki
dd1dfdcf34 Closes #3221 2024-06-17 09:17:14 +02:00
ArchiBot
792d8dab34 Automatic translations update 2024-06-16 02:13:31 +00:00
Łukasz Domeradzki
4f23434f81 Update renovate.json5 2024-06-15 21:54:23 +02:00
renovate[bot]
7797c4e0b0 Update dependency OpenTelemetry.Extensions.Hosting to v1.9.0 2024-06-14 21:20:44 +00:00
renovate[bot]
6463a2be2d Update actions/attest-build-provenance action to v1.3.1 2024-06-13 22:55:17 +00:00
renovate[bot]
972a46ac2e Update github/codeql-action action to v3.25.10 2024-06-13 16:58:07 +00:00
renovate[bot]
db3091b21b Update ASF-ui digest to 51952a3 2024-06-13 01:16:01 +00:00
renovate[bot]
476733ca19 Update github/codeql-action action to v3.25.9 2024-06-12 22:57:22 +00:00
renovate[bot]
d0c302c1f1 Update actions/checkout action to v4.1.7 2024-06-12 20:57:14 +00:00
renovate[bot]
164deb1096 Update ASF-ui digest to 7efd77d 2024-06-12 06:22:34 +00:00
ArchiBot
b39ea679e7 Automatic translations update 2024-06-12 02:09:52 +00:00
renovate[bot]
062a5f470c Update ASF-ui digest to 185cc47 2024-06-11 22:28:20 +00:00
Łukasz Domeradzki
48fb388da2 Make PICS changes happen a bit more often 2024-06-11 10:11:15 +02:00
ArchiBot
a23cdc9605 Automatic translations update 2024-06-11 02:09:42 +00:00
renovate[bot]
1c7eb0f5a1 Update docker/build-push-action action to v5.4.0 2024-06-10 11:56:11 +00:00
Łukasz Domeradzki
58050c9ec3 CI: Fix failure when in PR mode 2024-06-10 13:55:47 +02:00
ArchiBot
5908cc40a8 Automatic translations update 2024-06-09 02:13:14 +00:00
Łukasz Domeradzki
bffb5e53bf Bump 2024-06-08 00:08:14 +02:00
Łukasz Domeradzki
4a0b79f1a1 Misc
Paused could be flipped in the meantime between starting the background check and finishing it, we can check it again after having games to farm.
2024-06-08 00:07:11 +02:00
renovate[bot]
3ddb77e9f8 Update ASF-ui digest to c5a2ac4 2024-06-07 11:09:07 +00:00
renovate[bot]
16f7bccb11 Update dependency Humanizer to v3.0.0-beta.54 2024-06-06 19:53:34 +00:00
ArchiBot
ecec5cdde2 Automatic translations update 2024-06-06 02:08:48 +00:00
renovate[bot]
cf4fca9836 Update ASF-ui digest to 1e68294 2024-06-05 16:44:47 +00:00
ArchiBot
e5d61b2796 Automatic translations update 2024-06-05 02:08:55 +00:00
renovate[bot]
fc493ea510 Update github/codeql-action action to v3.25.8 2024-06-04 17:07:49 +00:00
ArchiBot
7983dc01f1 Automatic translations update 2024-06-04 02:09:03 +00:00
renovate[bot]
09f914cecd Update actions/attest-build-provenance action to v1.2.0 2024-06-03 18:21:05 +00:00
renovate[bot]
9968b0ac36 Update wiki digest to f05654b 2024-06-03 10:46:12 +00:00
ArchiBot
969a5f711c Automatic translations update 2024-06-03 02:09:44 +00:00
Łukasz Domeradzki
ccb4601c85 Bump 2024-06-03 00:19:16 +02:00
Łukasz Domeradzki
25aabe7553 Use native Rfc2898DeriveBytes for Pbkdf2 instead of CryptSharp implementation
I've verified it generates the same results
2024-06-02 21:54:45 +02:00
Łukasz Domeradzki
13755d4d06 Make ASF compatible with global invariant mode
Requires Humanizer update
2024-06-02 21:33:44 +02:00
Łukasz Domeradzki
1d6e87d103 Bump 2024-05-31 23:22:59 +02:00
Łukasz Domeradzki
8673ef8420 Closes #3210 2024-05-31 23:21:33 +02:00
renovate[bot]
ab1fb70f4c Update github/codeql-action action to v3.25.7 2024-05-31 11:07:58 +00:00
renovate[bot]
31fe6923ff Update ASF-ui digest to 7818887 2024-05-31 03:38:49 +00:00
renovate[bot]
0b07b7c4a7 Update ASF-ui digest to 605cbf7 2024-05-30 19:23:31 +00:00
renovate[bot]
0abe05b7bd Update dependency MSTest to v3.4.3 2024-05-30 15:29:53 +00:00
renovate[bot]
45ff19f9ae Update dependency MSTest to v3.4.2 2024-05-30 11:07:17 +00:00
renovate[bot]
d25883ff1b Update ASF-ui digest to a72c668 2024-05-29 12:29:08 +00:00
Łukasz Domeradzki
d2f43e4e50 CI: Misc 2024-05-29 14:28:18 +02:00
Łukasz Domeradzki
792167a71c CI: Misc 2024-05-29 11:21:39 +02:00
renovate[bot]
f2586d7cb0 Update crowdin/github-action action to v2 (#3209)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-29 11:21:17 +02:00
Łukasz Domeradzki
c37846b4cd Bump 2024-05-28 22:50:04 +02:00
Łukasz Domeradzki
17c4ec6790 Fix observable counters 2024-05-28 21:38:56 +02:00
Łukasz Domeradzki
7023040882 Add initial support for build attestations 2024-05-28 19:34:47 +02:00
Łukasz Domeradzki
8c38de1b26 Downgrade prometheus exporter again 2024-05-28 19:10:34 +02:00
Łukasz Domeradzki
1917c9da95 Misc 2024-05-28 19:07:48 +02:00
Sebastian Göls
668bf5009b Monitor incoming trades (#3201)
* Monitor incoming trades

* Apply feedback

* Misc.
2024-05-28 19:03:52 +02:00
renovate[bot]
e9ca1e3537 Update docker/login-action action to v3.2.0 2024-05-28 09:56:27 +00:00
renovate[bot]
ebdb412adf Update dependency Microsoft.IdentityModel.JsonWebTokens to v7.6.0 2024-05-28 02:07:48 +00:00
renovate[bot]
e73c72d148 Update dependency MSTest to v3.4.1 2024-05-27 17:05:17 +00:00
ArchiBot
d1d843c583 Automatic translations update 2024-05-27 02:08:42 +00:00
renovate[bot]
464e375529 Update ASF-ui digest to 8e361ae 2024-05-26 01:02:04 +00:00
Łukasz Domeradzki
2b12f8a294 Update donation options 2024-05-26 01:19:53 +02:00
renovate[bot]
b305e98519 Update ASF-ui digest to 491227c 2024-05-24 16:36:11 +00:00
renovate[bot]
5431e49c2a Update ASF-ui digest to b1521b7 2024-05-23 22:01:31 +00:00
Łukasz Domeradzki
6098cdc31d Bump 2024-05-23 20:10:29 +02:00
Łukasz Domeradzki
308d7c2c1c Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2024-05-23 20:06:11 +02:00
Łukasz Domeradzki
454f40ffb9 CI: Divide environments further 2024-05-23 20:06:09 +02:00
renovate[bot]
dd3b3dec33 Update ASF-ui digest to 63254c3 2024-05-23 13:49:00 +00:00
renovate[bot]
bc2831c066 Update dependency MSTest to v3.4.0 2024-05-23 10:20:09 +00:00
renovate[bot]
905d2acdbd Update swashbuckle-aspnetcore monorepo to v6.6.2 2024-05-22 12:27:49 +00:00
renovate[bot]
54c2b6b6d5 Update github/codeql-action action to v3.25.6 2024-05-22 05:05:58 +00:00
ArchiBot
b6a4ccac7f Automatic translations update 2024-05-22 02:08:08 +00:00
Łukasz Domeradzki
3fce1cc934 Monitoring: Bump OpenTelemetry dependencies, since the upstream issue is fixed 2024-05-21 22:57:13 +02:00
Łukasz Domeradzki
375a888a37 CI: Run first part of publish in test environment 2024-05-21 22:25:29 +02:00
Łukasz Domeradzki
0d62034f32 CI: Run qodana in different environment 2024-05-21 22:21:47 +02:00
Łukasz Domeradzki
f7d722aaf0 CI: Switch to using environment variables 2024-05-21 22:18:55 +02:00
Łukasz Domeradzki
56759bc710 Make some inventory description properties public 2024-05-21 12:12:31 +02:00
renovate[bot]
d27b5c28ef chore(deps): update asf-ui digest to fe1f167 2024-05-20 19:33:05 +00:00
renovate[bot]
a0d1cada54 chore(deps): update asf-ui digest to 2b02ee9 2024-05-20 00:29:51 +00:00
Łukasz Domeradzki
ca7e1da585 CI: Misc 2024-05-20 02:29:23 +02:00
Łukasz Domeradzki
5f097c4002 CI: Split crowdin to standalone action 2024-05-20 02:25:35 +02:00
Łukasz Domeradzki
203dc6daf6 Misc 2024-05-19 21:36:37 +02:00
Łukasz Domeradzki
e895850f17 Misc 2024-05-19 21:35:20 +02:00
Łukasz Domeradzki
f776e7947c Misc corrections of ASF API structures 2024-05-19 20:07:52 +02:00
Łukasz Domeradzki
416ec920cb Add AddLicense to ASF API 2024-05-19 20:07:41 +02:00
renovate[bot]
b5da72eb40 chore(deps): update asf-ui digest to a885733 2024-05-18 05:56:09 +00:00
ArchiBot
3dde77608e Automatic translations update 2024-05-18 02:07:36 +00:00
renovate[bot]
a0407553ec chore(deps): update jetbrains/qodana-action action to v2024.1.5 (#3207)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-18 03:37:15 +02:00
renovate[bot]
8d594fe0b6 chore(deps): update crowdin/github-action action to v1.20.4 2024-05-17 09:18:01 +00:00
renovate[bot]
e68e87d388 chore(deps): update actions/checkout action to v4.1.6 2024-05-17 02:23:30 +00:00
ArchiBot
4cabd42c0b Automatic translations update 2024-05-17 02:07:31 +00:00
ArchiBot
df33f7d0fc Automatic translations update 2024-05-16 02:07:07 +00:00
Łukasz Domeradzki
d6b5e3981c Misc swagger UI enhancements 2024-05-15 15:59:09 +02:00
ArchiBot
6aa0300c85 Automatic translations update 2024-05-15 02:09:46 +00:00
renovate[bot]
264ca84513 chore(deps): update swashbuckle-aspnetcore monorepo to v6.6.1 2024-05-14 12:02:17 +00:00
Łukasz Domeradzki
816306872d Misc 2024-05-14 13:14:14 +02:00
renovate[bot]
13aced705a chore(deps): update github/codeql-action action to v3.25.5 2024-05-14 05:03:02 +00:00
ArchiBot
95d0f879ca Automatic translations update 2024-05-14 02:07:17 +00:00
renovate[bot]
f37d2297bb chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to v7.5.2 2024-05-13 22:47:12 +00:00
renovate[bot]
0d90a53b8e chore(deps): update wiki digest to fa6284b 2024-05-13 16:10:04 +00:00
Łukasz Domeradzki
f91dfe7efa Misc optimization 2024-05-13 17:01:33 +02:00
Łukasz Domeradzki
ec757e3ef8 Bump 2024-05-13 09:53:14 +02:00
Łukasz Domeradzki
3b2ca10b05 Closes #3203
When excessive amount of "missing amounts", so items in the set was missing on our side, there was a possibility for our logic to classify a good trade as bad one, because we didn't fill in enough holes, as the subtraction in the condition was calculated on each loop rather than once initially.

Since this could only worsen the neutrality score, but never improve it (as the amounts were sorted ascending), there was no abusive possibility due to that, only ignoring otherwise valid trades classifying them as worse than they were in reality.
2024-05-13 09:29:30 +02:00
ArchiBot
b438e38268 Automatic translations update 2024-05-12 02:08:51 +00:00
renovate[bot]
bb405f2824 chore(deps): update asf-ui digest to eae2d67 2024-05-11 08:24:00 +00:00
ArchiBot
1d640fbec0 Automatic translations update 2024-05-11 02:06:27 +00:00
renovate[bot]
ecc820333e chore(deps): update asf-ui digest to f09861b 2024-05-10 18:35:22 +00:00
Łukasz Domeradzki
9cc227aa61 Misc 2024-05-10 19:40:46 +02:00
Łukasz Domeradzki
93420eebc0 Misc 2024-05-10 19:40:02 +02:00
Łukasz Domeradzki
6014b3bdc6 Add missing LicenseID inheritance from current 2024-05-10 13:27:49 +02:00
Sebastian Göls
81789c717f Misc. security improvements (#3200)
* Add x-security-critical to swagger schema and do not serialize LicenseID on IPC

* Apply feedback

* Misc.
2024-05-10 13:22:26 +02:00
renovate[bot]
dfa6330821 chore(deps): update crowdin/github-action action to v1.20.3 2024-05-10 07:54:33 +00:00
renovate[bot]
1d5d9c12a7 chore(deps): update actions/checkout action to v4.1.5 2024-05-08 23:34:56 +00:00
renovate[bot]
2cbbbe7359 chore(deps): update github/codeql-action action to v3.25.4 2024-05-08 14:36:22 +00:00
renovate[bot]
4706cedbf9 chore(deps): update jetbrains/qodana-action action to v2024.1.4 2024-05-07 21:52:16 +00:00
renovate[bot]
a11b955a9d chore(deps): update dependency nlog.web.aspnetcore to v5.3.11 2024-05-07 20:25:51 +00:00
renovate[bot]
e1366f6267 chore(deps): update asf-ui digest to 34bbcc9 2024-05-07 11:50:49 +00:00
ArchiBot
6bff839821 Automatic translations update 2024-05-07 02:08:46 +00:00
renovate[bot]
0b37acf16e chore(deps): update asf-ui digest to 073867b 2024-05-05 03:11:22 +00:00
ArchiBot
70c39eef0a Automatic translations update 2024-05-05 02:07:59 +00:00
ArchiBot
1988b18053 Automatic translations update 2024-05-04 02:06:04 +00:00
renovate[bot]
67f87396e8 chore(deps): update wiki digest to 4029f5f 2024-05-03 16:17:08 +00:00
Łukasz Domeradzki
3734721c58 Bump 2024-05-03 15:52:00 +02:00
Łukasz Domeradzki
0f6a3f2ec8 Misc 2024-05-03 15:18:17 +02:00
Łukasz Domeradzki
ab9ca4b9c3 Bump 2024-05-03 13:52:55 +02:00
ArchiBot
c05cffbd88 Automatic translations update 2024-05-03 02:07:39 +00:00
renovate[bot]
0e3f3d1143 chore(deps): update jetbrains/qodana-action action to v2024.1.3 2024-05-02 19:55:25 +00:00
Łukasz Domeradzki
ff02a4a8d4 Remove zxcvbn dependency
Pushing external lib purely to save user's from eventual stupidity is just simply not worth the bytes in the final zip archive.
2024-05-02 21:54:54 +02:00
renovate[bot]
c8c35b5bf7 chore(deps): update asf-ui digest to f537840 2024-05-01 09:33:49 +00:00
renovate[bot]
18daa6a8c7 chore(deps): update dependency nlog.web.aspnetcore to v5.3.10 2024-04-30 23:00:34 +00:00
renovate[bot]
c95b58852c chore(deps): update asf-ui digest to d857ce5 2024-04-30 02:25:57 +00:00
ArchiBot
80ccceb9b0 Automatic translations update 2024-04-29 02:06:57 +00:00
renovate[bot]
eaa308d3ce chore(deps): update asf-ui digest to 491c89d 2024-04-28 03:10:41 +00:00
ArchiBot
d05ac7e10d Automatic translations update 2024-04-28 02:08:21 +00:00
renovate[bot]
a80aef16a0 chore(deps): update dependency nlog.web.aspnetcore to v5.3.9 2024-04-27 19:55:05 +00:00
ArchiBot
338560fedb Automatic translations update 2024-04-27 02:06:20 +00:00
Łukasz Domeradzki
632830278f Misc 2024-04-26 20:57:57 +02:00
Łukasz Domeradzki
8b614bd3c4 Misc 2024-04-26 20:56:17 +02:00
renovate[bot]
657354c2e8 chore(deps): update jetbrains/qodana-action action to v2024.1.2 2024-04-26 04:07:53 +00:00
renovate[bot]
7a0d9f2325 chore(deps): update github/codeql-action action to v3.25.3 2024-04-26 02:14:43 +00:00
ArchiBot
ae45c0c7ae Automatic translations update 2024-04-26 02:06:28 +00:00
renovate[bot]
c3b0e31a0a chore(deps): update asf-ui digest to 6dd170c 2024-04-25 20:28:00 +00:00
renovate[bot]
f7207c1326 chore(deps): update actions/checkout action to v4.1.4 2024-04-25 14:19:37 +00:00
ArchiBot
9a9817c6b3 Automatic translations update 2024-04-25 02:06:39 +00:00
Łukasz Domeradzki
1b4ac9da8b Squashed commit of the following:
commit 2f206cd822f615ad215c6e09f83ceb653c0dbd75
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Wed Apr 24 20:16:24 2024 +0200

    Further improvements

commit 66b60c028c652db1644c3efd400dd00f6559ba40
Author: Łukasz Domeradzki <JustArchi@JustArchi.net>
Date:   Wed Apr 24 20:00:13 2024 +0200

    Try new heredoc syntax
2024-04-24 20:27:22 +02:00
renovate[bot]
d98310fc0e chore(deps): update actions/download-artifact action to v4.1.7 2024-04-24 15:25:40 +00:00
Łukasz Domeradzki
3240fca63e Misc qodana improvements 2024-04-24 15:22:38 +02:00
renovate[bot]
f1631b7f06 chore(deps): update jetbrains/qodana-action action to v2024 (#3195)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-24 15:14:48 +02:00
ArchiBot
30e5c5f91b Automatic translations update 2024-04-24 02:06:35 +00:00
Łukasz Domeradzki
257026144d Misc 2024-04-23 21:15:40 +02:00
Łukasz Domeradzki
9f786dce97 Misc 2024-04-23 21:11:32 +02:00
Łukasz Domeradzki
c2f582164c Misc 2024-04-23 20:54:07 +02:00
Łukasz Domeradzki
464ed3b614 Misc 2024-04-23 19:27:39 +02:00
renovate[bot]
5bb9494ecc chore(deps): update github/codeql-action action to v3.25.2 2024-04-23 08:22:38 +00:00
renovate[bot]
0fb583a094 chore(deps): update actions/upload-artifact action to v4.3.3 2024-04-23 04:51:37 +00:00
ArchiBot
358b1a7dbe Automatic translations update 2024-04-23 02:06:47 +00:00
renovate[bot]
bd91f439c8 chore(deps): update asf-ui digest to d7e3ef5 2024-04-22 23:04:12 +00:00
renovate[bot]
4181ada887 chore(deps): update actions/download-artifact action to v4.1.6 2024-04-22 19:50:54 +00:00
renovate[bot]
32d116d106 chore(deps): update actions/checkout action to v4.1.3 2024-04-22 16:27:01 +00:00
Łukasz Domeradzki
30c27f9faf Misc, documentation day! 2024-04-22 16:29:02 +02:00
Łukasz Domeradzki
b332d576ab Misc 2024-04-22 15:20:01 +02:00
Łukasz Domeradzki
9def43cef0 Update README.md 2024-04-22 15:03:29 +02:00
ArchiBot
0820b39a35 Automatic translations update 2024-04-22 02:06:52 +00:00
Łukasz Domeradzki
2a0be85d14 Bump 2024-04-21 21:35:22 +02:00
Łukasz Domeradzki
efb7262113 Prevent official plugins from updating to unmatched versions 2024-04-21 21:31:37 +02:00
renovate[bot]
1a732bbb93 chore(deps): update wiki digest to 74ee175 2024-04-21 16:10:17 +00:00
Łukasz Domeradzki
b8fe380b61 Bump 2024-04-21 18:09:47 +02:00
Łukasz Domeradzki
8670cea7a3 Misc 2024-04-21 18:09:21 +02:00
Sebastian Göls
e2a5ec3616 Fix monitoring plugin (#3191)
* Misc.

* Fix ASF crash

* Remove warning about automatic update of custom plugins if there is only official plugins enabled

* Fix previous mistake

* Revert "Fix ASF crash"

This reverts commit 42209e93ce.
2024-04-21 16:21:33 +02:00
renovate[bot]
d013366c9a chore(deps): update asf-ui digest to d64880d 2024-04-21 03:05:41 +00:00
ArchiBot
e9093cda6d Automatic translations update 2024-04-21 02:07:18 +00:00
Łukasz Domeradzki
0f30a0ef3d Fix IWebInterface with root WebPath 2024-04-20 23:37:57 +02:00
ArchiBot
b1a64e346c Automatic translations update 2024-04-20 02:05:36 +00:00
ArchiBot
c524a89c5e Automatic translations update 2024-04-19 02:06:39 +00:00
renovate[bot]
e73d90e697 chore(deps): update asf-ui digest to 0714df0 2024-04-18 21:40:19 +00:00
renovate[bot]
ee470d9ce9 chore(deps): update actions/upload-artifact action to v4.3.2 2024-04-18 20:16:48 +00:00
renovate[bot]
aab5b3aaab chore(deps): update actions/download-artifact action to v4.1.5 2024-04-18 17:09:08 +00:00
renovate[bot]
86281b5fdb chore(deps): update dependency opentelemetry.extensions.hosting to v1.8.1 2024-04-18 04:45:31 +00:00
ArchiBot
ddabf7db49 Automatic translations update 2024-04-18 02:06:09 +00:00
Łukasz Domeradzki
1c7523e98e Modernize docker builds, add attestations 2024-04-18 01:46:49 +02:00
Łukasz Domeradzki
120d084b12 Misc CI 2024-04-18 01:04:54 +02:00
renovate[bot]
1e69ec4634 chore(deps): update github/codeql-action action to v3.25.1 2024-04-17 15:33:32 +00:00
renovate[bot]
31a680ce1c chore(deps): update wiki digest to 7ec0ec5 2024-04-17 14:36:06 +00:00
Łukasz Domeradzki
3bad19530e Bump 2024-04-17 12:14:38 +02:00
Łukasz Domeradzki
10986289e6 Make --process-required default, add ShutdownIfPossible instead 2024-04-17 12:02:26 +02:00
ArchiBot
656c1b8d5d Automatic translations update 2024-04-17 02:06:21 +00:00
renovate[bot]
ef0037aa25 chore(deps): update asf-ui digest to 46a15c5 2024-04-16 22:20:35 +00:00
renovate[bot]
af02ccbd6f chore(deps): update wiki digest to dc78a43 2024-04-16 14:20:48 +00:00
Łukasz Domeradzki
978f3f63bd Bump 2024-04-16 11:39:51 +02:00
Łukasz Domeradzki
e550cc0f43 Misc 2024-04-16 10:39:03 +02:00
Łukasz Domeradzki
5894226e93 Add optional health checks to ASF API 2024-04-16 10:37:32 +02:00
ArchiBot
d50fa8eeb7 Automatic translations update 2024-04-16 02:05:41 +00:00
renovate[bot]
6efd333684 chore(deps): update github/codeql-action action to v3.25.0 2024-04-15 16:57:49 +00:00
renovate[bot]
05701b60c1 chore(deps): update wiki digest to 60a1965 2024-04-15 12:55:35 +00:00
ArchiBot
f8e7e55a00 Automatic translations update 2024-04-15 02:52:50 +00:00
renovate[bot]
20663f0226 chore(deps): update wiki digest to 05e8868 2024-04-14 22:52:10 +00:00
renovate[bot]
ad175ba2ac chore(deps): update asf-ui digest to 58779f5 2024-04-14 16:09:13 +00:00
Łukasz Domeradzki
bdf90a5e51 Enable ArchiSteamFarm.OfficialPlugins.Monitoring for publishing 2024-04-14 16:58:05 +02:00
Łukasz Domeradzki
49618534ce Ship grafana dashboard together with the plugin 2024-04-14 16:54:57 +02:00
Łukasz Domeradzki
f2bb2a6bee Create grafana_dashboard.json 2024-04-14 16:46:48 +02:00
ArchiBot
ba4f3aea7b Automatic translations update 2024-04-14 02:27:34 +00:00
Łukasz Domeradzki
b30068103b Bump 2024-04-13 23:54:05 +02:00
renovate[bot]
7062928c32 chore(deps): update opentelemetry-dotnet monorepo to v1.8.1 2024-04-13 03:38:50 +00:00
ArchiBot
7f0764b7b1 Automatic translations update 2024-04-13 01:56:55 +00:00
Łukasz Domeradzki
8b21f4f869 Misc 2024-04-12 11:58:46 +02:00
renovate[bot]
8d634b9b1b chore(deps): update asf-ui digest to d3082d3 2024-04-12 04:53:14 +00:00
ArchiBot
698e567c63 Automatic translations update 2024-04-12 02:06:30 +00:00
Łukasz Domeradzki
6d697c3dda Misc bulletproofing 2024-04-12 01:29:32 +02:00
Łukasz Domeradzki
746e28c3a2 Misc 2024-04-12 01:00:05 +02:00
Łukasz Domeradzki
df0f087505 Misc code style 2024-04-12 00:21:49 +02:00
Łukasz Domeradzki
0ccec4c8c1 Address latest Rider code inspections 2024-04-11 23:24:01 +02:00
renovate[bot]
e18e1533e3 chore(deps): update asf-ui digest to 386bfeb 2024-04-11 02:15:55 +00:00
ArchiBot
c077381e45 Automatic translations update 2024-04-11 02:06:12 +00:00
Łukasz Domeradzki
a0ecb78086 Misc 2024-04-10 15:42:00 +02:00
Łukasz Domeradzki
e47bd9faa4 Revert "Closes #3180"
This reverts commit 5d83807357.
2024-04-10 01:57:35 +02:00
Łukasz Domeradzki
e2bf6117dd Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2024-04-10 01:52:17 +02:00
Łukasz Domeradzki
14b0b332c5 Fix 2024-04-10 01:52:11 +02:00
renovate[bot]
76f74dabbe chore(deps): update dependency markdig.signed to v0.37.0 2024-04-09 19:54:33 +00:00
Łukasz Domeradzki
42dec2de39 Misc
Thanks @xPaw
2024-04-09 16:33:54 +02:00
renovate[bot]
b965971c79 chore(deps): update asf-ui digest to 1c055dc 2024-04-09 02:36:57 +00:00
ArchiBot
3a7ab02f88 Automatic translations update 2024-04-09 02:05:31 +00:00
Łukasz Domeradzki
b931e935b5 Misc MonitoringPlugin enhancements 2024-04-09 03:45:06 +02:00
renovate[bot]
521a1b7d34 chore(deps): update docker/setup-buildx-action action to v3.3.0 2024-04-08 10:20:58 +00:00
Łukasz Domeradzki
fffcef2d30 Misc 2024-04-08 09:33:27 +02:00
ArchiBot
cf1216a667 Automatic translations update 2024-04-08 02:06:13 +00:00
Łukasz Domeradzki
68ee647ed2 Misc 2024-04-08 03:08:37 +02:00
Łukasz Domeradzki
2eda952cd0 Misc 2024-04-08 03:03:35 +02:00
Łukasz Domeradzki
7fac4ac298 Misc 2024-04-08 00:32:18 +02:00
Sebastian Göls
9016a5109d Fix monitoring integration with actual prometheus (#3183)
* Downgrade OpenTelemetry.Exporter.Prometheus.AspNetCore due to issues with latest version

* Add unit to asf_bot_farming_minutes_remaining

* Upgrade some packages released last night (already tested to work)

* Don't forget about unit suffix

* Add build and runtime information metrics

It is not recommended to include this information as labels in all
metrics. Instead, we add two special metrics with a constant value of
"1" and restrict those static pieces of information to them

* Remove module version from metrics as it does not work

* Apply feedback

* Deduplicate code

* Reference related issue in upstream repo
2024-04-07 23:56:44 +02:00
Łukasz Domeradzki
8e055fe587 Kill unused packageRules 2024-04-07 16:46:50 +02:00
renovate[bot]
3b2bb0590f chore(deps): update opentelemetry-dotnet monorepo to v1.8.0 2024-04-06 13:14:22 +00:00
renovate[bot]
134d3e2d0d chore(deps): update dependency opentelemetry.instrumentation.runtime to v1.8.0 2024-04-06 11:22:56 +00:00
renovate[bot]
b735f8e567 chore(deps): update github/codeql-action action to v3.24.10 2024-04-06 07:03:44 +00:00
renovate[bot]
3992ea6656 chore(deps): update dependency microsoft.identitymodel.jsonwebtokens to v7.5.1 2024-04-06 03:04:47 +00:00
Łukasz Domeradzki
03840990be Bump 2024-04-06 05:04:18 +02:00
324 changed files with 11511 additions and 5577 deletions

View File

@@ -122,9 +122,8 @@ dotnet_code_quality.ca3012.excluded_symbol_names = BotController|CommandControll
dotnet_code_quality_unused_parameters = all:warning
dotnet_diagnostic.ca1028.severity = silent
dotnet_diagnostic.ca1031.severity = silent
dotnet_diagnostic.ca1863.severity = silent
dotnet_diagnostic.CA1028.severity = silent
dotnet_diagnostic.CA1031.severity = silent
# Rule - almost everything
dotnet_naming_rule.almost_everything_must_be_pascal_case.severity = warning
@@ -226,6 +225,10 @@ dotnet_style_qualification_for_property = false:warning
dotnet_style_readonly_field = true:warning
dotnet_style_require_accessibility_modifiers = always:warning
[ArchiSteamFarm/**.cs]
# ASF project includes plugin system, therefore CA1515 typically doesn't make sense there
dotnet_diagnostic.CA1515.severity = silent
###############################
# JetBrains, IntelliJ/Rider #
###############################

6
.gitattributes vendored
View File

@@ -1,7 +1,11 @@
# Auto detect text files and perform LF normalization
* text=auto
# Unix files that are always LF
*.sh text eol=lf
# Custom for Visual Studio
# Windows files that are always CRLF
[Dd]esktop.ini text eol=crlf
# Diff settings
*.cs diff=csharp

4
.github/FUNDING.yml vendored
View File

@@ -1,4 +1,2 @@
# These are supported funding model platforms
github: JustArchi
custom: ["https://paypal.me/JustArchi", "https://pay.revolut.com/justarchi", "https://commerce.coinbase.com/checkout/0c23b844-c51b-45f4-9135-8db7c6fcf98e", "https://steamcommunity.com/tradeoffer/new/?partner=46697991&token=0ix2Ruv_"]
custom: ["https://paypal.me/JustArchi", "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=HD2P2P3WGS5Y4", "https://pay.revolut.com/justarchi", "https://steamcommunity.com/tradeoffer/new/?partner=46697991&token=0ix2Ruv_"]

View File

@@ -7,8 +7,8 @@ contact_links:
url: https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Localization
about: Please use our crowdin platform
- name: ❓ Support question or technical issue
url: https://github.com/JustArchiNET/ArchiSteamFarm/blob/main/.github/SUPPORT.md
about: Please review our support guidelines
url: https://github.com/JustArchiNET/ArchiSteamFarm/discussions/categories/support-english
about: Please use GitHub discussions or other support channels
- name: 🗯️ Negative feedback, complaints and demands
url: https://www.youtube.com/watch?v=dQw4w9WgXcQ
about: We're taking those very seriously

View File

@@ -1,6 +1,6 @@
### Notice
**Pre-releases are experimental versions that often contain unpatched bugs, work-in-progress features and rewritten implementations. If you don't consider yourself advanced user, please download **[latest stable release](https://github.com/JustArchiNET/ArchiSteamFarm/releases/latest)** instead. Pre-release versions are dedicated to users who know how to report bugs, deal with issues and give feedback - no technical support will be given. Check out ASF **[release cycle](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Release-cycle)** if you'd like to learn more.**
**Pre-releases are test versions that often contain unpatched bugs, work-in-progress features and rewritten implementations. If you don't consider yourself advanced user, please download **[latest stable release](https://github.com/JustArchiNET/ArchiSteamFarm/releases/latest)** instead. Pre-release versions are dedicated to users who know how to report bugs, deal with issues and give feedback - no technical support will be given. Check out ASF **[release cycle](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Release-cycle)** if you'd like to learn more.**
---
@@ -14,4 +14,6 @@ This is automated GitHub deployment, human-readable changelog should be availabl
ASF is available for free, this release was made possible thanks to the people that decided to support the project. If you're grateful for what we're doing, please consider a donation. Developing ASF requires massive amount of time and knowledge, especially when it comes to Steam (and its problems). Even $1 is highly appreciated and shows that you care. Thank you!
[![GitHub sponsor](https://img.shields.io/badge/GitHub-sponsor-ea4aaa.svg?logo=github-sponsors)](https://github.com/sponsors/JustArchi) [![Crypto donate](https://img.shields.io/badge/Crypto-donate-f7931a.svg?logo=bitcoin)](https://commerce.coinbase.com/checkout/0c23b844-c51b-45f4-9135-8db7c6fcf98e) [![PayPal.me donate](https://img.shields.io/badge/PayPal.me-donate-00457c.svg?logo=paypal)](https://paypal.me/JustArchi) [![PayPal donate](https://img.shields.io/badge/PayPal-donate-00457c.svg?logo=paypal)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=HD2P2P3WGS5Y4) [![Revolut donate](https://img.shields.io/badge/Revolut-donate-0075eb.svg?logo=revolut)](https://pay.revolut.com/justarchi) [![Steam donate](https://img.shields.io/badge/Steam-donate-000000.svg?logo=steam)](https://steamcommunity.com/tradeoffer/new/?partner=46697991&token=0ix2Ruv_)
[![GitHub sponsor](https://img.shields.io/badge/GitHub-sponsor-ea4aaa.svg?logo=github-sponsors)](https://github.com/sponsors/JustArchi) [![PayPal.me donate](https://img.shields.io/badge/PayPal.me-donate-00457c.svg?logo=paypal)](https://paypal.me/JustArchi) [![PayPal donate](https://img.shields.io/badge/PayPal-donate-00457c.svg?logo=paypal)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=HD2P2P3WGS5Y4) [![Revolut donate](https://img.shields.io/badge/Revolut-donate-0075eb.svg?logo=revolut)](https://pay.revolut.com/justarchi) [![Steam donate](https://img.shields.io/badge/Steam-donate-000000.svg?logo=steam)](https://steamcommunity.com/tradeoffer/new/?partner=46697991&token=0ix2Ruv_)
[![BTC donate](https://img.shields.io/badge/BTC-donate-f7931a.svg?logo=bitcoin)](https://www.blockchain.com/explorer/addresses/btc/3HwcgZbtoF5vSxJkNUvThVSJipKi7r5EqU) [![ETH donate](https://img.shields.io/badge/ETH-donate-3c3c3d.svg?logo=ethereum)](https://www.blockchain.com/explorer/addresses/eth/0xA1F7Ba62C5a3A8b93Fe6656936192432F328a366) [![LTC donate](https://img.shields.io/badge/LTC-donate-a6a9aa.svg?logo=litecoin)](https://live.blockcypher.com/ltc/address/MJCeBEZUsNgDhRhqbLFfPiDcf7CSrdvmZ3) [![USDC donate](https://img.shields.io/badge/USDC-donate-2775ca.svg?logo=cashapp)](https://etherscan.io/address/0xCf42D9F53F974CBd7c304eF0243CAe8e029885A8) [![USDT donate](https://img.shields.io/badge/USDT-donate-50af95.svg?logo=tether)](https://etherscan.io/address/0x985FDdD3AD00838A2049B07A33b783104d60f776)

View File

View File

@@ -12,13 +12,5 @@
],
"git-submodules": {
"enabled": true
},
"packageRules": [
{
// TODO: <= 3.1 for Mono support, last failed version 6.12, https://steamcommunity.com/groups/archiasf/discussions/1/2997673517556002529
"allowedVersions": "<= 3.1",
"matchManagers": [ "nuget" ],
"matchPackageNames": [ "Microsoft.Extensions.Configuration.Json", "Microsoft.Extensions.Logging.Configuration" ]
}
]
}
}

View File

@@ -5,7 +5,7 @@ on: [push, pull_request]
env:
DOTNET_CLI_TELEMETRY_OPTOUT: true
DOTNET_NOLOGO: true
DOTNET_SDK_VERSION: 8.0
DOTNET_SDK_VERSION: 9.0
permissions: {}
@@ -21,13 +21,13 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@v4.2.2
with:
show-progress: false
submodules: recursive
- name: Setup .NET Core
uses: actions/setup-dotnet@v4.0.0
uses: actions/setup-dotnet@v4.1.0
with:
dotnet-version: ${{ env.DOTNET_SDK_VERSION }}
@@ -39,12 +39,3 @@ jobs:
- name: Run ${{ matrix.configuration }} ArchiSteamFarm.Tests
run: dotnet test ArchiSteamFarm.Tests -c "${{ matrix.configuration }}" -p:ContinuousIntegrationBuild=true -p:UseAppHost=false --nologo
- name: Upload latest strings for translation on Crowdin
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && matrix.configuration == 'Release' && startsWith(matrix.os, 'ubuntu-') }}
uses: crowdin/github-action@v1.20.2
with:
crowdin_branch_name: main
config: '.github/crowdin.yml'
project_id: ${{ secrets.ASF_CROWDIN_PROJECT_ID }}
token: ${{ secrets.ASF_CROWDIN_API_TOKEN }}

View File

@@ -1,6 +1,7 @@
name: ASF-code-quality
on: [push, pull_request]
on:
- push
env:
DOTNET_CLI_TELEMETRY_OPTOUT: true
@@ -14,32 +15,25 @@ permissions:
jobs:
main:
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
environment: qa-qodana
runs-on: ubuntu-latest
steps:
- name: Checkout code
if: github.event_name != 'pull_request'
uses: actions/checkout@v4.1.1
uses: actions/checkout@v4.2.2
with:
show-progress: false
- name: Checkout code (for PR)
if: github.event_name == 'pull_request'
uses: actions/checkout@v4.1.1
with:
fetch-depth: 100 # History is required for pull request analysis
ref: ${{ github.event.pull_request.head.sha }} # To check out the actual pull request commit, not the merge commit
show-progress: false
- name: Run Qodana scan
uses: JetBrains/qodana-action@v2023.3.2
uses: JetBrains/qodana-action@v2024.2.6
with:
args: --property=idea.headless.enable.statistics=false
args: --config,.github/qodana.yaml,--property=idea.headless.enable.statistics=false
pr-mode: false
upload-result: true
env:
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
- name: Report Qodana results to GitHub
uses: github/codeql-action/upload-sarif@v3.24.9
uses: github/codeql-action/upload-sarif@v3.27.6
with:
sarif_file: ${{ runner.temp }}/qodana/results/qodana.sarif.json

28
.github/workflows/crowdin-ci.yml vendored Normal file
View File

@@ -0,0 +1,28 @@
name: ASF-crowdin-ci
on:
push:
branches:
- main
permissions: {}
jobs:
upload:
environment: dev-crowdin
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4.2.2
with:
show-progress: false
submodules: recursive
- name: Upload latest strings for translation on Crowdin
uses: crowdin/github-action@v2.4.0
with:
crowdin_branch_name: main
config: '.github/crowdin.yml'
project_id: ${{ secrets.ASF_CROWDIN_PROJECT_ID }}
token: ${{ secrets.ASF_CROWDIN_API_TOKEN }}

View File

@@ -19,20 +19,20 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@v4.2.2
with:
show-progress: false
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.2.0
uses: docker/setup-buildx-action@v3.7.1
- name: Build ${{ matrix.configuration }} Docker image from ${{ matrix.file }}
uses: docker/build-push-action@v5.3.0
uses: docker/build-push-action@v6.10.0
with:
build-args: CONFIGURATION=${{ matrix.configuration }}
context: .
file: ${{ matrix.file }}
platforms: ${{ env.PLATFORMS }}
build-args: |
CONFIGURATION=${{ matrix.configuration }}
STEAM_TOKEN_DUMPER_TOKEN=${{ secrets.STEAM_TOKEN_DUMPER_TOKEN }}
provenance: true
sbom: true

View File

@@ -5,7 +5,6 @@ on:
types: [released]
env:
ASF_PRIVATE_SNK: ${{ secrets.ASF_PRIVATE_SNK }}
PLATFORMS: linux/amd64,linux/arm,linux/arm64
TAG: latest
@@ -14,40 +13,32 @@ permissions:
jobs:
main:
environment: release-docker
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@v4.2.2
with:
show-progress: false
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.2.0
uses: docker/setup-buildx-action@v3.7.1
- name: Login to ghcr.io
uses: docker/login-action@v3.1.0
uses: docker/login-action@v3.3.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v3.1.0
uses: docker/login-action@v3.3.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Prepare private key for signing
shell: sh
run: |
set -eu
if [ -n "${ASF_PRIVATE_SNK-}" ]; then
echo "$ASF_PRIVATE_SNK" | base64 -d > "resources/ArchiSteamFarm.snk"
fi
- name: Prepare environment outputs
shell: sh
run: |
@@ -59,12 +50,16 @@ jobs:
echo "DH_REPOSITORY=$(echo ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_ENV"
- name: Build and publish Docker image from Dockerfile.Service
uses: docker/build-push-action@v5.3.0
uses: docker/build-push-action@v6.10.0
with:
context: .
file: Dockerfile.Service
platforms: ${{ env.PLATFORMS }}
build-args: STEAM_TOKEN_DUMPER_TOKEN=${{ secrets.STEAM_TOKEN_DUMPER_TOKEN }}
provenance: true
sbom: true
secrets: |
ASF_PRIVATE_SNK=${{ secrets.ASF_PRIVATE_SNK }}
STEAM_TOKEN_DUMPER_TOKEN=${{ secrets.STEAM_TOKEN_DUMPER_TOKEN }}
labels: |
org.opencontainers.image.created=${{ env.DATE_ISO8601 }}
org.opencontainers.image.version=${{ env.FIXED_TAG }}

View File

@@ -6,7 +6,6 @@ on:
- main
env:
ASF_PRIVATE_SNK: ${{ secrets.ASF_PRIVATE_SNK }}
PLATFORMS: linux/amd64,linux/arm,linux/arm64
TAG: main
@@ -15,40 +14,32 @@ permissions:
jobs:
main:
environment: release-docker
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@v4.2.2
with:
show-progress: false
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.2.0
uses: docker/setup-buildx-action@v3.7.1
- name: Login to ghcr.io
uses: docker/login-action@v3.1.0
uses: docker/login-action@v3.3.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v3.1.0
uses: docker/login-action@v3.3.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Prepare private key for signing
shell: sh
run: |
set -eu
if [ -n "${ASF_PRIVATE_SNK-}" ]; then
echo "$ASF_PRIVATE_SNK" | base64 -d > "resources/ArchiSteamFarm.snk"
fi
- name: Prepare environment outputs
shell: sh
run: |
@@ -59,11 +50,15 @@ jobs:
echo "DH_REPOSITORY=$(echo ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_ENV"
- name: Build and publish Docker image from Dockerfile
uses: docker/build-push-action@v5.3.0
uses: docker/build-push-action@v6.10.0
with:
context: .
platforms: ${{ env.PLATFORMS }}
build-args: STEAM_TOKEN_DUMPER_TOKEN=${{ secrets.STEAM_TOKEN_DUMPER_TOKEN }}
provenance: true
sbom: true
secrets: |
ASF_PRIVATE_SNK=${{ secrets.ASF_PRIVATE_SNK }}
STEAM_TOKEN_DUMPER_TOKEN=${{ secrets.STEAM_TOKEN_DUMPER_TOKEN }}
labels: |
org.opencontainers.image.created=${{ env.DATE_ISO8601 }}
org.opencontainers.image.version=${{ github.sha }}
@@ -77,6 +72,6 @@ jobs:
uses: peter-evans/dockerhub-description@v4.0.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
repository: ${{ env.DH_REPOSITORY }}
short-description: ${{ github.event.repository.description }}

View File

@@ -6,7 +6,6 @@ on:
- '*'
env:
ASF_PRIVATE_SNK: ${{ secrets.ASF_PRIVATE_SNK }}
PLATFORMS: linux/amd64,linux/arm,linux/arm64
TAG: released
@@ -15,40 +14,32 @@ permissions:
jobs:
main:
environment: release-docker
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@v4.2.2
with:
show-progress: false
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.2.0
uses: docker/setup-buildx-action@v3.7.1
- name: Login to ghcr.io
uses: docker/login-action@v3.1.0
uses: docker/login-action@v3.3.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v3.1.0
uses: docker/login-action@v3.3.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Prepare private key for signing
shell: sh
run: |
set -eu
if [ -n "${ASF_PRIVATE_SNK-}" ]; then
echo "$ASF_PRIVATE_SNK" | base64 -d > "resources/ArchiSteamFarm.snk"
fi
- name: Prepare environment outputs
shell: sh
run: |
@@ -60,11 +51,15 @@ jobs:
echo "DH_REPOSITORY=$(echo ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_ENV"
- name: Build and publish Docker image from Dockerfile
uses: docker/build-push-action@v5.3.0
uses: docker/build-push-action@v6.10.0
with:
context: .
platforms: ${{ env.PLATFORMS }}
build-args: STEAM_TOKEN_DUMPER_TOKEN=${{ secrets.STEAM_TOKEN_DUMPER_TOKEN }}
provenance: true
sbom: true
secrets: |
ASF_PRIVATE_SNK=${{ secrets.ASF_PRIVATE_SNK }}
STEAM_TOKEN_DUMPER_TOKEN=${{ secrets.STEAM_TOKEN_DUMPER_TOKEN }}
labels: |
org.opencontainers.image.created=${{ env.DATE_ISO8601 }}
org.opencontainers.image.version=${{ env.FIXED_TAG }}

View File

@@ -6,7 +6,7 @@ env:
CONFIGURATION: Release
DOTNET_CLI_TELEMETRY_OPTOUT: true
DOTNET_NOLOGO: true
DOTNET_SDK_VERSION: 8.0
DOTNET_SDK_VERSION: 9.0
NODE_JS_VERSION: 'lts/*'
PLUGINS_BUNDLED: ArchiSteamFarm.OfficialPlugins.ItemsMatcher ArchiSteamFarm.OfficialPlugins.MobileAuthenticator ArchiSteamFarm.OfficialPlugins.SteamTokenDumper
PLUGINS_INCLUDED: ArchiSteamFarm.OfficialPlugins.Monitoring # Apart from declaring them here, there is certain amount of hardcoding needed below for uploading
@@ -19,13 +19,13 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@v4.2.2
with:
show-progress: false
submodules: recursive
- name: Setup Node.js with npm
uses: actions/setup-node@v4.0.2
uses: actions/setup-node@v4.1.0
with:
check-latest: true
node-version: ${{ env.NODE_JS_VERSION }}
@@ -43,7 +43,7 @@ jobs:
run: npm run-script deploy --no-progress --prefix ASF-ui
- name: Upload ASF-ui
uses: actions/upload-artifact@v4.3.1
uses: actions/upload-artifact@v4.4.3
with:
if-no-files-found: error
name: ASF-ui
@@ -73,16 +73,21 @@ jobs:
- os: windows-latest
variant: win-x64
environment: build
runs-on: ${{ matrix.os }}
permissions:
attestations: write
id-token: write
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@v4.2.2
with:
show-progress: false
- name: Setup .NET Core
uses: actions/setup-dotnet@v4.0.0
uses: actions/setup-dotnet@v4.1.0
with:
dotnet-version: ${{ env.DOTNET_SDK_VERSION }}
@@ -90,7 +95,7 @@ jobs:
run: dotnet --info
- name: Download previously built ASF-ui
uses: actions/download-artifact@v4.1.4
uses: actions/download-artifact@v4.1.8
with:
name: ASF-ui
path: ASF-ui/dist
@@ -355,8 +360,14 @@ jobs:
}
}
- name: Generate artifact attestation for ASF-${{ matrix.variant }}.zip
if: ${{ github.event_name == 'push' }}
uses: actions/attest-build-provenance@v2.0.0
with:
subject-path: out/ASF-${{ matrix.variant }}.zip
- name: Upload ASF-${{ matrix.variant }}
uses: actions/upload-artifact@v4.3.1
uses: actions/upload-artifact@v4.4.3
with:
if-no-files-found: error
name: ${{ matrix.os }}_ASF-${{ matrix.variant }}
@@ -396,9 +407,15 @@ jobs:
fi
done
- name: Generate artifact attestation for ArchiSteamFarm.OfficialPlugins.Monitoring
if: ${{ github.event_name == 'push' && matrix.os == 'ubuntu-latest' && matrix.variant == 'generic' }}
uses: actions/attest-build-provenance@v2.0.0
with:
subject-path: out/ArchiSteamFarm.OfficialPlugins.Monitoring.zip
- name: Upload ArchiSteamFarm.OfficialPlugins.Monitoring
if: ${{ matrix.os == 'ubuntu-latest' && matrix.variant == 'generic' }}
uses: actions/upload-artifact@v4.3.1
uses: actions/upload-artifact@v4.4.3
with:
if-no-files-found: error
name: ArchiSteamFarm.OfficialPlugins.Monitoring
@@ -407,98 +424,107 @@ jobs:
release:
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') }}
needs: publish-asf
environment: release-github
runs-on: ubuntu-latest
permissions:
attestations: write
contents: write
id-token: write
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@v4.2.2
with:
show-progress: false
- name: Download ASF-generic artifact from ubuntu-latest
uses: actions/download-artifact@v4.1.4
uses: actions/download-artifact@v4.1.8
with:
name: ubuntu-latest_ASF-generic
path: out
- name: Download ASF-linux-arm artifact from ubuntu-latest
uses: actions/download-artifact@v4.1.4
uses: actions/download-artifact@v4.1.8
with:
name: ubuntu-latest_ASF-linux-arm
path: out
- name: Download ASF-linux-arm64 artifact from ubuntu-latest
uses: actions/download-artifact@v4.1.4
uses: actions/download-artifact@v4.1.8
with:
name: ubuntu-latest_ASF-linux-arm64
path: out
- name: Download ASF-linux-x64 artifact from ubuntu-latest
uses: actions/download-artifact@v4.1.4
uses: actions/download-artifact@v4.1.8
with:
name: ubuntu-latest_ASF-linux-x64
path: out
- name: Download ASF-osx-arm64 artifact from macos-latest
uses: actions/download-artifact@v4.1.4
uses: actions/download-artifact@v4.1.8
with:
name: macos-latest_ASF-osx-arm64
path: out
- name: Download ASF-osx-x64 artifact from macos-latest
uses: actions/download-artifact@v4.1.4
uses: actions/download-artifact@v4.1.8
with:
name: macos-latest_ASF-osx-x64
path: out
- name: Download ASF-win-arm64 artifact from windows-latest
uses: actions/download-artifact@v4.1.4
uses: actions/download-artifact@v4.1.8
with:
name: windows-latest_ASF-win-arm64
path: out
- name: Download ASF-win-x64 artifact from windows-latest
uses: actions/download-artifact@v4.1.4
uses: actions/download-artifact@v4.1.8
with:
name: windows-latest_ASF-win-x64
path: out
# TODO: Enable me when documentation is ready and plugin is stable for usage
# - name: Download ArchiSteamFarm.OfficialPlugins.Monitoring artifact
# uses: actions/download-artifact@v4.1.4
# with:
# name: ArchiSteamFarm.OfficialPlugins.Monitoring
# path: out
- name: Download ArchiSteamFarm.OfficialPlugins.Monitoring artifact
uses: actions/download-artifact@v4.1.8
with:
name: ArchiSteamFarm.OfficialPlugins.Monitoring
path: out
- name: Import GPG key for signing
uses: crazy-max/ghaction-import-gpg@v6.1.0
uses: crazy-max/ghaction-import-gpg@v6.2.0
with:
gpg_private_key: ${{ secrets.ARCHIBOT_GPG_PRIVATE_KEY }}
- name: Generate SHA-512 checksums and signature
shell: sh
working-directory: out
run: |
set -eu
(
cd "out"
sha512sum *.zip > SHA512SUMS
gpg -a -b -o SHA512SUMS.sign SHA512SUMS
sha512sum *.zip > SHA512SUMS
gpg -a -b -o SHA512SUMS.sign SHA512SUMS
)
- name: Generate artifact attestation for SHA512SUMS
uses: actions/attest-build-provenance@v2.0.0
with:
subject-path: out/SHA512SUMS
- name: Upload SHA512SUMS
uses: actions/upload-artifact@v4.3.1
uses: actions/upload-artifact@v4.4.3
with:
if-no-files-found: error
name: SHA512SUMS
path: out/SHA512SUMS
- name: Generate artifact attestation for SHA512SUMS.sign
uses: actions/attest-build-provenance@v2.0.0
with:
subject-path: out/SHA512SUMS.sign
- name: Upload SHA512SUMS.sign
uses: actions/upload-artifact@v4.3.1
uses: actions/upload-artifact@v4.4.3
with:
if-no-files-found: error
name: SHA512SUMS.sign

View File

@@ -10,11 +10,12 @@ permissions:
jobs:
update:
environment: dev-crowdin
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
uses: actions/checkout@v4.2.2
with:
show-progress: false
submodules: recursive
@@ -22,16 +23,15 @@ jobs:
- name: Reset wiki to follow origin
shell: sh
working-directory: wiki
run: |
set -eu
cd wiki
git fetch --depth=1 origin master
git reset --hard origin/master
- name: Download latest translations from Crowdin
uses: crowdin/github-action@v1.20.2
uses: crowdin/github-action@v2.4.0
with:
upload_sources: false
download_translations: true
@@ -43,35 +43,28 @@ jobs:
token: ${{ secrets.ASF_CROWDIN_API_TOKEN }}
- name: Import GPG key for signing
uses: crazy-max/ghaction-import-gpg@v6.1.0
uses: crazy-max/ghaction-import-gpg@v6.2.0
with:
gpg_private_key: ${{ secrets.ARCHIBOT_GPG_PRIVATE_KEY }}
git_config_global: true
git_user_signingkey: true
git_commit_gpgsign: true
- name: Commit the changes to wiki
- name: Commit and push the changes to wiki
shell: sh
working-directory: wiki
run: |
set -eu
cd wiki
git add -A "locale"
if ! git diff --cached --quiet; then
git commit -m "Automatic translations update"
git push origin HEAD:master
fi
- name: Push changes to wiki
uses: ad-m/github-push-action@v0.8.0
with:
github_token: ${{ secrets.ARCHIBOT_GITHUB_TOKEN }}
branch: master
directory: wiki
repository: ${{ github.repository }}.wiki
- name: Commit the changes to ASF
- name: Commit and push the changes to ASF
shell: sh
run: |
set -eu
@@ -80,10 +73,6 @@ jobs:
if ! git diff --cached --quiet; then
git commit -m "Automatic translations update"
fi
- name: Push changes to ASF
uses: ad-m/github-push-action@v0.8.0
with:
github_token: ${{ secrets.ARCHIBOT_GITHUB_TOKEN }}
branch: ${{ github.ref }}
git push
fi

9
.gitignore vendored
View File

@@ -543,3 +543,12 @@ $RECYCLE.BIN/
# Windows shortcuts
*.lnk
# _ ____ _____
# / \ / ___| | ___|
# / _ \ \___ \ | |_
# / ___ \ ___) || _|
# /_/ \_\|____/ |_|
# Files that could be ignored by above rules, that we want to ship
!ArchiSteamFarm/overlay/**

2
ASF-ui

Submodule ASF-ui updated: c74b93b78d...c316254dda

View File

@@ -4,7 +4,6 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ConfigureAwaitChecker.Analyzer" PrivateAssets="all" />
<PackageReference Include="JetBrains.Annotations" PrivateAssets="all" />
<PackageReference Include="SteamKit2" IncludeAssets="compile" />
<PackageReference Include="System.Composition.AttributedModel" IncludeAssets="compile" />

View File

@@ -34,6 +34,7 @@ using ArchiSteamFarm.Core;
using ArchiSteamFarm.Plugins.Interfaces;
using ArchiSteamFarm.Steam;
using ArchiSteamFarm.Steam.Data;
using ArchiSteamFarm.Steam.Exchange;
using SteamKit2;
namespace ArchiSteamFarm.CustomPlugins.ExamplePlugin;
@@ -45,7 +46,7 @@ namespace ArchiSteamFarm.CustomPlugins.ExamplePlugin;
// If you do not want to handle a particular action (e.g. OnBotMessage that is offered in IBotMessage), it's the best idea to not inherit it at all
// 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
[SuppressMessage("ReSharper", "MemberCanBeFileLocal")]
internal sealed class ExamplePlugin : IASF, IBot, IBotCommand2, IBotConnection, IBotFriendRequest, IBotMessage, IBotModules, IBotTradeOffer {
internal sealed class ExamplePlugin : IASF, IBot, IBotCommand2, IBotConnection, IBotFriendRequest, IBotMessage, IBotModules, IBotTradeOffer2 {
// 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
[JsonInclude]
@@ -173,14 +174,14 @@ internal sealed class ExamplePlugin : IASF, IBot, IBotCommand2, IBotConnection,
// If this message doesn't come from one of our bots, we can reply to the user in some pre-defined way
bot.ArchiLogger.LogGenericTrace("Hey boss, we got some unknown message here!");
return Task.FromResult((string?) "I didn't get that, did you mean to use a command?");
return Task.FromResult<string?>("I didn't get that, did you mean to use a command?");
}
// This method is called when bot receives a trade offer that ASF isn't willing to accept (ignored and rejected trades)
// It allows you not only to analyze such trades, but generate a response whether ASF should accept it (true), or proceed like usual (false)
// Thanks to that, you can implement custom rules for all trades that aren't handled by ASF, for example cross-set trading on your own custom rules
// You'd implement your own logic here, as an example we'll allow all trades to be accepted if the bot's name starts from "TrashBot"
public Task<bool> OnBotTradeOffer(Bot bot, TradeOffer tradeOffer) => Task.FromResult(bot.BotName.StartsWith("TrashBot", StringComparison.OrdinalIgnoreCase));
public Task<bool> OnBotTradeOffer(Bot bot, TradeOffer tradeOffer, ParseTradeResult.EResult asfResult) => Task.FromResult(bot.BotName.StartsWith("TrashBot", StringComparison.OrdinalIgnoreCase));
// This is the earliest method that will be called, right after loading the plugin, long before any bot initialization takes place
// It's a good place to initialize all potential (non-bot-specific) structures that you will need across lifetime of your plugin, such as global timers, concurrent dictionaries and alike

View File

@@ -4,7 +4,6 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ConfigureAwaitChecker.Analyzer" PrivateAssets="all" />
<PackageReference Include="JetBrains.Annotations" PrivateAssets="all" />
<PackageReference Include="System.Composition.AttributedModel" IncludeAssets="compile" />
</ItemGroup>

View File

@@ -5,7 +5,6 @@
<ItemGroup>
<PackageReference Include="AngleSharp.XPath" IncludeAssets="compile" />
<PackageReference Include="ConfigureAwaitChecker.Analyzer" PrivateAssets="all" />
<PackageReference Include="JetBrains.Annotations" PrivateAssets="all" />
<PackageReference Include="System.Composition.AttributedModel" IncludeAssets="compile" />
</ItemGroup>

View File

@@ -22,7 +22,6 @@
// limitations under the License.
using System;
using System.Globalization;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
@@ -53,7 +52,7 @@ public sealed class SignInWithSteamController : ArchiController {
Bot? bot = Bot.GetBot(botName);
if (bot == null) {
return BadRequest(new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.BotNotFound, botName)));
return BadRequest(new GenericResponse(false, Strings.FormatBotNotFound(botName)));
}
if (!bot.IsConnectedAndLoggedOn) {
@@ -64,7 +63,7 @@ public sealed class SignInWithSteamController : ArchiController {
using HtmlDocumentResponse? challengeResponse = await bot.ArchiWebHandler.UrlGetToHtmlDocumentWithSession(request.RedirectURL).ConfigureAwait(false);
if (challengeResponse?.Content == null) {
return StatusCode((int) HttpStatusCode.ServiceUnavailable, new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.ErrorRequestFailedTooManyTimes, WebBrowser.MaxTries)));
return StatusCode((int) HttpStatusCode.ServiceUnavailable, new GenericResponse(false, Strings.FormatErrorRequestFailedTooManyTimes(WebBrowser.MaxTries)));
}
IAttr? paramsNode = challengeResponse.Content.SelectSingleNode<IAttr>("//input[@name='openidparams']/@value");
@@ -72,7 +71,7 @@ public sealed class SignInWithSteamController : ArchiController {
if (paramsNode == null) {
ASF.ArchiLogger.LogNullError(paramsNode);
return StatusCode((int) HttpStatusCode.InternalServerError, new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.ErrorObjectIsNull, nameof(paramsNode))));
return StatusCode((int) HttpStatusCode.InternalServerError, new GenericResponse(false, Strings.FormatErrorObjectIsNull(nameof(paramsNode))));
}
string paramsValue = paramsNode.Value;
@@ -80,7 +79,7 @@ public sealed class SignInWithSteamController : ArchiController {
if (string.IsNullOrEmpty(paramsValue)) {
ASF.ArchiLogger.LogNullError(paramsValue);
return StatusCode((int) HttpStatusCode.InternalServerError, new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.ErrorObjectIsNull, nameof(paramsValue))));
return StatusCode((int) HttpStatusCode.InternalServerError, new GenericResponse(false, Strings.FormatErrorObjectIsNull(nameof(paramsValue))));
}
IAttr? nonceNode = challengeResponse.Content.SelectSingleNode<IAttr>("//input[@name='nonce']/@value");
@@ -88,7 +87,7 @@ public sealed class SignInWithSteamController : ArchiController {
if (nonceNode == null) {
ASF.ArchiLogger.LogNullError(nonceNode);
return StatusCode((int) HttpStatusCode.InternalServerError, new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.ErrorObjectIsNull, nameof(nonceNode))));
return StatusCode((int) HttpStatusCode.InternalServerError, new GenericResponse(false, Strings.FormatErrorObjectIsNull(nameof(nonceNode))));
}
string nonceValue = nonceNode.Value;
@@ -96,7 +95,7 @@ public sealed class SignInWithSteamController : ArchiController {
if (string.IsNullOrEmpty(nonceValue)) {
ASF.ArchiLogger.LogNullError(nonceValue);
return StatusCode((int) HttpStatusCode.InternalServerError, new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.ErrorObjectIsNull, nameof(nonceValue))));
return StatusCode((int) HttpStatusCode.InternalServerError, new GenericResponse(false, Strings.FormatErrorObjectIsNull(nameof(nonceValue))));
}
Uri loginRequest = new(ArchiWebHandler.SteamCommunityURL, "/openid/login");
@@ -116,6 +115,6 @@ public sealed class SignInWithSteamController : ArchiController {
// Accept OpenID request presented and follow redirection back to the data we initially expected
BasicResponse? loginResponse = await bot.ArchiWebHandler.WebBrowser.UrlPost(loginRequest, data: data, requestOptions: WebBrowser.ERequestOptions.ReturnRedirections).ConfigureAwait(false);
return loginResponse != null ? Ok(new GenericResponse<SignInWithSteamResponse>(new SignInWithSteamResponse(loginResponse.FinalUri))) : StatusCode((int) HttpStatusCode.ServiceUnavailable, new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.ErrorRequestFailedTooManyTimes, WebBrowser.MaxTries)));
return loginResponse != null ? Ok(new GenericResponse<SignInWithSteamResponse>(new SignInWithSteamResponse(loginResponse.FinalUri))) : StatusCode((int) HttpStatusCode.ServiceUnavailable, new GenericResponse(false, Strings.FormatErrorRequestFailedTooManyTimes(WebBrowser.MaxTries)));
}
}

View File

@@ -4,8 +4,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ConfigureAwaitChecker.Analyzer" PrivateAssets="all" />
<PackageReference Include="JetBrains.Annotations" PrivateAssets="all" />
<PackageReference Include="Microsoft.CodeAnalysis.ResxSourceGenerator" PrivateAssets="all" />
<PackageReference Include="SteamKit2" IncludeAssets="compile" />
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" IncludeAssets="compile" />
<PackageReference Include="System.Composition.AttributedModel" IncludeAssets="compile" />
@@ -17,17 +17,6 @@
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Localization\Strings.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Strings.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Compile Update="Localization\Strings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Strings.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Update="Localization\Strings.resx" EmitFormatMethods="true" />
</ItemGroup>
</Project>

View File

@@ -203,7 +203,7 @@ internal static class Backend {
ArgumentOutOfRangeException.ThrowIfEqual(requestID, Guid.Empty);
if (SharedInfo.BuildInfo.IsCustomBuild) {
if (BuildInfo.IsCustomBuild) {
return null;
}

View File

@@ -22,7 +22,6 @@
// limitations under the License.
using System;
using System.Globalization;
using System.IO;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
@@ -135,7 +134,7 @@ internal sealed class BotCache : SerializableFile {
string json = await File.ReadAllTextAsync(filePath).ConfigureAwait(false);
if (string.IsNullOrEmpty(json)) {
ASF.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsEmpty, nameof(json)));
ASF.ArchiLogger.LogGenericError(Strings.FormatErrorIsEmpty(nameof(json)));
return new BotCache(filePath);
}

View File

@@ -24,7 +24,6 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
using ArchiSteamFarm.Core;
@@ -87,15 +86,15 @@ internal static class Commands {
}
if (bot.BotConfig.TradingPreferences.HasFlag(BotConfig.ETradingPreferences.MatchEverything)) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(BotConfig.ETradingPreferences.MatchEverything)));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(nameof(BotConfig.ETradingPreferences.MatchEverything)));
}
if ((ASF.GlobalConfig?.LicenseID == null) || (ASF.GlobalConfig.LicenseID == Guid.Empty)) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(ASF.GlobalConfig.LicenseID)));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(nameof(ASF.GlobalConfig.LicenseID)));
}
if (!ItemsMatcherPlugin.RemoteCommunications.TryGetValue(bot, out RemoteCommunication? remoteCommunication)) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(remoteCommunication)));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(nameof(remoteCommunication)));
}
remoteCommunication.TriggerMatchActivelyEarlier();
@@ -117,12 +116,12 @@ internal static class Commands {
HashSet<Bot>? bots = Bot.GetBots(botNames);
if ((bots == null) || (bots.Count == 0)) {
return access >= EAccess.Owner ? Steam.Interaction.Commands.FormatStaticResponse(string.Format(CultureInfo.CurrentCulture, Strings.BotNotFound, botNames)) : null;
return access >= EAccess.Owner ? Steam.Interaction.Commands.FormatStaticResponse(Strings.FormatBotNotFound(botNames)) : null;
}
IList<string?> results = await Utilities.InParallel(bots.Select(bot => Task.Run(() => ResponseMatch(Steam.Interaction.Commands.GetProxyAccess(bot, access, steamID), bot)))).ConfigureAwait(false);
List<string> responses = [..results.Where(static result => !string.IsNullOrEmpty(result))];
List<string> responses = [..results.Where(static result => !string.IsNullOrEmpty(result))!];
return responses.Count > 0 ? string.Join(Environment.NewLine, responses) : null;
}

View File

@@ -1,78 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Localization {
using System;
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Strings {
private static System.Resources.ResourceManager resourceMan;
private static System.Globalization.CultureInfo resourceCulture;
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Strings() {
}
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
internal static System.Resources.ResourceManager ResourceManager {
get {
if (object.Equals(null, resourceMan)) {
System.Resources.ResourceManager temp = new System.Resources.ResourceManager("ArchiSteamFarm.OfficialPlugins.ItemsMatcher.Localization.Strings", typeof(Strings).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
internal static System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
internal static string ActivelyMatchingItemsRound {
get {
return ResourceManager.GetString("ActivelyMatchingItemsRound", resourceCulture);
}
}
internal static string ListingAnnouncing {
get {
return ResourceManager.GetString("ListingAnnouncing", resourceCulture);
}
}
internal static string MatchingFound {
get {
return ResourceManager.GetString("MatchingFound", resourceCulture);
}
}
internal static string TradeOfferFailed {
get {
return ResourceManager.GetString("TradeOfferFailed", resourceCulture);
}
}
internal static string ActivelyMatchingSomeConfirmationsFailed {
get {
return ResourceManager.GetString("ActivelyMatchingSomeConfirmationsFailed", resourceCulture);
}
}
}
}

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,19 +53,21 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>در این دور جمعاً {0} ست مطابقت داده شد.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>اینونتوری {0}({1}) دارای {2} آیتم است...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>در مجموع {0} مورد با ربات {1} ({2}) مطابقت داده شد، درحال ارسال ترید...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,19 +53,29 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>{0} sets ont été matché pendant ce round.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>Annonce de {0} ({1}) avec l'inventaire réalisé à partir de {2} au total sur la liste...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>Correspondance totale de {0} éléments avec le bot {1} ({2}), envoi de l'offre d'échange...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>
</data>
<data name="TradeOfferFailed" xml:space="preserve">
<value>Impossible d'envoyer une offre d'échange au bot {0} ({1}), en cours ...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>Certaines confirmations ont échoué, environ {0} sur les transactions {1} ont été envoyées avec succès.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,17 +53,31 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>Potivim un total de {0} in această rundă.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>Anunțând {0} ({1}) cu inventarul făcut din {2} articole în total pe listă...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>Se potrivește cu un total de {0} elemente cu botul {1} ({2}), se trimite oferta de schimb...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>
</data>
<data name="TradeOfferFailed" xml:space="preserve">
<value>Nu s-a putut trimite o cerere de schimb bot-ului {0} ({1}), trecem peste...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>Unele confirmări au eșuat, aproximativ {0} din {1} de schimburi au fost trimise cu succes.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">

View File

@@ -111,7 +111,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
TimeSpan.FromHours(6)
);
} else {
bot.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningNoLicense, nameof(BotConfig.ETradingPreferences.MatchActively)));
bot.ArchiLogger.LogGenericError(Strings.FormatWarningNoLicense(nameof(BotConfig.ETradingPreferences.MatchActively)));
}
}
}
@@ -215,7 +215,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
// This is actually network failure, so we'll stop sending heartbeats but not record it as valid check
ShouldSendHeartBeats = false;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(IsEligibleForListing)}: {eligible?.ToString() ?? "null"}"));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError($"{nameof(IsEligibleForListing)}: {eligible?.ToString() ?? "null"}"));
return;
}
@@ -225,7 +225,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
LastAnnouncement = DateTime.UtcNow;
ShouldSendAnnouncementEarlier = ShouldSendHeartBeats = false;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(IsEligibleForListing)}: {eligible.Value}"));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError($"{nameof(IsEligibleForListing)}: {eligible.Value}"));
return;
}
@@ -242,7 +242,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
// This is actually a network failure, so we'll stop sending heartbeats but not record it as valid check
ShouldSendHeartBeats = false;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(tradeToken)));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(nameof(tradeToken)));
return;
}
@@ -395,17 +395,17 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
if (setPartsResponse == null) {
// This is actually a network failure, so we'll stop sending heartbeats but not record it as valid check
ShouldSendHeartBeats = false;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.ErrorObjectIsNull, nameof(setPartsResponse)));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatErrorObjectIsNull(nameof(setPartsResponse)));
return;
}
if (setPartsResponse.StatusCode.IsRedirectionCode()) {
ShouldSendHeartBeats = false;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, setPartsResponse.StatusCode));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(setPartsResponse.StatusCode));
if (setPartsResponse.FinalUri.Host != ArchiWebHandler.SteamCommunityURL.Host) {
ASF.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningUnknownValuePleaseReport, nameof(setPartsResponse.FinalUri), setPartsResponse.FinalUri));
ASF.ArchiLogger.LogGenericError(Strings.FormatWarningUnknownValuePleaseReport(nameof(setPartsResponse.FinalUri), setPartsResponse.FinalUri));
return;
}
@@ -419,7 +419,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
if (!setPartsResponse.StatusCode.IsSuccessCode()) {
// ArchiNet told us that we've sent a bad request, so the process should restart from the beginning at later time
ShouldSendHeartBeats = false;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, setPartsResponse.StatusCode));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(setPartsResponse.StatusCode));
switch (setPartsResponse.StatusCode) {
case HttpStatusCode.Forbidden:
@@ -442,7 +442,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
if (setPartsResponse.Content?.Result == null) {
// This should never happen if we got the correct response
Bot.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningUnknownValuePleaseReport, nameof(setPartsResponse), setPartsResponse.Content?.Result));
Bot.ArchiLogger.LogGenericError(Strings.FormatWarningUnknownValuePleaseReport(nameof(setPartsResponse), setPartsResponse.Content?.Result));
return;
}
@@ -531,7 +531,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
// There is a possibility that our inventory has changed even if our announced assets did not, record that
BotCache.LastInventoryChecksumBeforeDeduplication = inventoryChecksumBeforeDeduplication;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(assetsForListing)} > {MaxItemsCount}"));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError($"{nameof(assetsForListing)} > {MaxItemsCount}"));
return;
}
@@ -562,7 +562,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
HashSet<AssetForListing> inventoryAddedChanged = assetsForListing.Where(asset => !previousInventoryState.Remove(asset.AssetID, out AssetForListing? previousAsset) || (asset.BackendHashCode != previousAsset.BackendHashCode)).ToHashSet();
Bot.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Localization.Strings.ListingAnnouncing, Bot.SteamID, nickname ?? Bot.SteamID.ToString(CultureInfo.InvariantCulture), assetsForListing.Count));
Bot.ArchiLogger.LogGenericInfo(Localization.Strings.FormatListingAnnouncing(Bot.SteamID, nickname ?? Bot.SteamID.ToString(CultureInfo.InvariantCulture), assetsForListing.Count));
ObjectResponse<GenericResponse<BackgroundTaskResponse>>? diffResponse = null;
Guid diffRequestID = Guid.Empty;
@@ -577,17 +577,17 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
if (diffResponse == null) {
// This is actually a network failure, so we'll stop sending heartbeats but not record it as valid check
ShouldSendHeartBeats = false;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.ErrorObjectIsNull, nameof(diffResponse)));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatErrorObjectIsNull(nameof(diffResponse)));
return;
}
if (diffResponse.StatusCode.IsRedirectionCode()) {
ShouldSendHeartBeats = false;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, diffResponse.StatusCode));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(diffResponse.StatusCode));
if (diffResponse.FinalUri.Host != ArchiWebHandler.SteamCommunityURL.Host) {
ASF.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningUnknownValuePleaseReport, nameof(diffResponse.FinalUri), diffResponse.FinalUri));
ASF.ArchiLogger.LogGenericError(Strings.FormatWarningUnknownValuePleaseReport(nameof(diffResponse.FinalUri), diffResponse.FinalUri));
return;
}
@@ -601,7 +601,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
if (!diffResponse.StatusCode.IsSuccessCode()) {
// ArchiNet told us that we've sent a bad request, so the process should restart from the beginning at later time
ShouldSendHeartBeats = false;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, diffResponse.StatusCode));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(diffResponse.StatusCode));
switch (diffResponse.StatusCode) {
case HttpStatusCode.Conflict:
@@ -630,7 +630,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
// Great, do we need to wait?
if (diffResponse.Content?.Result == null) {
// This should never happen if we got the correct response
Bot.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningUnknownValuePleaseReport, nameof(diffResponse), diffResponse.Content?.Result));
Bot.ArchiLogger.LogGenericError(Strings.FormatWarningUnknownValuePleaseReport(nameof(diffResponse), diffResponse.Content?.Result));
return;
}
@@ -645,7 +645,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
if (diffResponse == null) {
// We've waited long enough, something is definitely wrong with us or the backend
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(diffResponse)));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(nameof(diffResponse)));
return;
}
@@ -667,7 +667,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
}
}
Bot.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Localization.Strings.ListingAnnouncing, Bot.SteamID, nickname ?? Bot.SteamID.ToString(CultureInfo.InvariantCulture), assetsForListing.Count));
Bot.ArchiLogger.LogGenericInfo(Localization.Strings.FormatListingAnnouncing(Bot.SteamID, nickname ?? Bot.SteamID.ToString(CultureInfo.InvariantCulture), assetsForListing.Count));
ObjectResponse<GenericResponse<BackgroundTaskResponse>>? announceResponse = null;
Guid announceRequestID = Guid.Empty;
@@ -682,17 +682,17 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
if (announceResponse == null) {
// This is actually a network failure, so we'll stop sending heartbeats but not record it as valid check
ShouldSendHeartBeats = false;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.ErrorObjectIsNull, nameof(announceResponse)));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatErrorObjectIsNull(nameof(announceResponse)));
return;
}
if (announceResponse.StatusCode.IsRedirectionCode()) {
ShouldSendHeartBeats = false;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, announceResponse.StatusCode));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(announceResponse.StatusCode));
if (announceResponse.FinalUri.Host != ArchiWebHandler.SteamCommunityURL.Host) {
ASF.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningUnknownValuePleaseReport, nameof(announceResponse.FinalUri), announceResponse.FinalUri));
ASF.ArchiLogger.LogGenericError(Strings.FormatWarningUnknownValuePleaseReport(nameof(announceResponse.FinalUri), announceResponse.FinalUri));
return;
}
@@ -706,7 +706,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
if (!announceResponse.StatusCode.IsSuccessCode()) {
// ArchiNet told us that we've sent a bad request, so the process should restart from the beginning at later time
ShouldSendHeartBeats = false;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, announceResponse.StatusCode));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(announceResponse.StatusCode));
switch (announceResponse.StatusCode) {
case HttpStatusCode.Conflict:
@@ -735,7 +735,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
// Great, do we need to wait?
if (announceResponse.Content?.Result == null) {
// This should never happen if we got the correct response
Bot.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningUnknownValuePleaseReport, nameof(announceResponse), announceResponse.Content?.Result));
Bot.ArchiLogger.LogGenericError(Strings.FormatWarningUnknownValuePleaseReport(nameof(announceResponse), announceResponse.Content?.Result));
return;
}
@@ -750,7 +750,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
if (announceResponse == null) {
// We've waited long enough, something is definitely wrong with us or the backend
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(announceResponse)));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(nameof(announceResponse)));
return;
}
@@ -801,7 +801,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
bool? hasPublicInventory = await Bot.HasPublicInventory().ConfigureAwait(false);
if (hasPublicInventory != true) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(Bot.HasPublicInventory)}: {hasPublicInventory?.ToString() ?? "null"}"));
Bot.ArchiLogger.LogGenericTrace(Strings.FormatWarningFailedWithError($"{nameof(Bot.HasPublicInventory)}: {hasPublicInventory?.ToString() ?? "null"}"));
return hasPublicInventory;
}
@@ -812,28 +812,28 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
private async Task<bool?> IsEligibleForMatching() {
// Bot can't be limited
if (Bot.IsAccountLimited) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(Bot.IsAccountLimited)}: {Bot.IsAccountLimited}"));
Bot.ArchiLogger.LogGenericTrace(Strings.FormatWarningFailedWithError($"{nameof(Bot.IsAccountLimited)}: {Bot.IsAccountLimited}"));
return false;
}
// Bot can't be on lockdown
if (Bot.IsAccountLocked) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(Bot.IsAccountLocked)}: {Bot.IsAccountLocked}"));
Bot.ArchiLogger.LogGenericTrace(Strings.FormatWarningFailedWithError($"{nameof(Bot.IsAccountLocked)}: {Bot.IsAccountLocked}"));
return false;
}
// Bot must have ASF 2FA
if (!Bot.HasMobileAuthenticator) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(Bot.HasMobileAuthenticator)}: {Bot.HasMobileAuthenticator}"));
Bot.ArchiLogger.LogGenericTrace(Strings.FormatWarningFailedWithError($"{nameof(Bot.HasMobileAuthenticator)}: {Bot.HasMobileAuthenticator}"));
return false;
}
// Bot must have at least one accepted matchable type set
if ((Bot.BotConfig.MatchableTypes.Count == 0) || Bot.BotConfig.MatchableTypes.All(static type => !AcceptedMatchableTypes.Contains(type))) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(Bot.BotConfig.MatchableTypes)}: {string.Join(", ", Bot.BotConfig.MatchableTypes)}"));
Bot.ArchiLogger.LogGenericTrace(Strings.FormatWarningFailedWithError($"{nameof(Bot.BotConfig.MatchableTypes)}: {string.Join(", ", Bot.BotConfig.MatchableTypes)}"));
return false;
}
@@ -842,21 +842,21 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
CCredentials_GetSteamGuardDetails_Response? steamGuardStatus = await Bot.ArchiHandler.GetSteamGuardStatus().ConfigureAwait(false);
if (steamGuardStatus == null) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(steamGuardStatus)}: null"));
Bot.ArchiLogger.LogGenericTrace(Strings.FormatWarningFailedWithError($"{nameof(steamGuardStatus)}: null"));
return null;
}
// Bot must have SteamGuard active for at least 15 days
if (!steamGuardStatus.is_steamguard_enabled || ((steamGuardStatus.timestamp_steamguard_enabled > 0) && ((DateTimeOffset.UtcNow - DateTimeOffset.FromUnixTimeSeconds(steamGuardStatus.timestamp_steamguard_enabled)).TotalDays < MinimumSteamGuardEnabledDays))) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(steamGuardStatus.is_steamguard_enabled)}/{nameof(steamGuardStatus.timestamp_steamguard_enabled)}: {steamGuardStatus.is_steamguard_enabled}/{steamGuardStatus.timestamp_steamguard_enabled}"));
Bot.ArchiLogger.LogGenericTrace(Strings.FormatWarningFailedWithError($"{nameof(steamGuardStatus.is_steamguard_enabled)}/{nameof(steamGuardStatus.timestamp_steamguard_enabled)}: {steamGuardStatus.is_steamguard_enabled}/{steamGuardStatus.timestamp_steamguard_enabled}"));
return false;
}
// Bot must have 2FA enabled for matching to work
if (!steamGuardStatus.is_twofactor_enabled) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(steamGuardStatus.is_twofactor_enabled)}: false"));
Bot.ArchiLogger.LogGenericTrace(Strings.FormatWarningFailedWithError($"{nameof(steamGuardStatus.is_twofactor_enabled)}: false"));
return false;
}
@@ -864,14 +864,14 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
CCredentials_LastCredentialChangeTime_Response? credentialChangeTimeDetails = await Bot.ArchiHandler.GetCredentialChangeTimeDetails().ConfigureAwait(false);
if (credentialChangeTimeDetails == null) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(credentialChangeTimeDetails)}: null"));
Bot.ArchiLogger.LogGenericTrace(Strings.FormatWarningFailedWithError($"{nameof(credentialChangeTimeDetails)}: null"));
return null;
}
// Bot didn't change password in last 5 days
if ((credentialChangeTimeDetails.timestamp_last_password_reset > 0) && ((DateTimeOffset.UtcNow - DateTimeOffset.FromUnixTimeSeconds(credentialChangeTimeDetails.timestamp_last_password_reset)).TotalDays < MinimumPasswordResetCooldownDays)) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(credentialChangeTimeDetails.timestamp_last_password_reset)}: {credentialChangeTimeDetails.timestamp_last_password_reset}"));
Bot.ArchiLogger.LogGenericTrace(Strings.FormatWarningFailedWithError($"{nameof(credentialChangeTimeDetails.timestamp_last_password_reset)}: {credentialChangeTimeDetails.timestamp_last_password_reset}"));
return false;
}
@@ -897,7 +897,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
bool? eligible = await IsEligibleForMatching().ConfigureAwait(false);
if (eligible != true) {
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(IsEligibleForMatching)}: {eligible?.ToString() ?? "null"}"));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError($"{nameof(IsEligibleForMatching)}: {eligible?.ToString() ?? "null"}"));
return;
}
@@ -924,13 +924,13 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
HttpStatusCode? licenseStatus = await Backend.GetLicenseStatus(ASF.GlobalConfig.LicenseID.Value, WebBrowser).ConfigureAwait(false);
if (licenseStatus == null) {
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(licenseStatus)));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(nameof(licenseStatus)));
return;
}
if (!licenseStatus.Value.IsSuccessCode()) {
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, licenseStatus.Value));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(licenseStatus.Value));
return;
}
@@ -941,18 +941,18 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
assetsForMatching = await Bot.ArchiHandler.GetMyInventoryAsync().Where(item => item is { AssetID: > 0, Amount: > 0, ClassID: > 0, RealAppID: > 0, Type: > EAssetType.Unknown, Rarity: > EAssetRarity.Unknown, IsSteamPointsShopItem: false } && acceptedMatchableTypes.Contains(item.Type) && !Bot.BotDatabase.MatchActivelyBlacklistAppIDs.Contains(item.RealAppID)).ToHashSetAsync().ConfigureAwait(false);
} catch (TimeoutException e) {
Bot.ArchiLogger.LogGenericWarningException(e);
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(assetsForMatching)));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(nameof(assetsForMatching)));
return;
} catch (Exception e) {
Bot.ArchiLogger.LogGenericException(e);
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(assetsForMatching)));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(nameof(assetsForMatching)));
return;
}
if (assetsForMatching.Count == 0) {
Bot.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsEmpty, nameof(assetsForMatching)));
Bot.ArchiLogger.LogGenericInfo(Strings.FormatErrorIsEmpty(nameof(assetsForMatching)));
return;
}
@@ -962,7 +962,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
if (assetsForMatching.RemoveWhere(item => !setsToKeep.Contains((item.RealAppID, item.Type, item.Rarity))) > 0) {
if (assetsForMatching.Count == 0) {
Bot.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsEmpty, nameof(assetsForMatching)));
Bot.ArchiLogger.LogGenericInfo(Strings.FormatErrorIsEmpty(nameof(assetsForMatching)));
return;
}
@@ -999,16 +999,16 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
if (setPartsResponse == null) {
// This is actually a network failure
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.ErrorObjectIsNull, nameof(setPartsResponse)));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatErrorObjectIsNull(nameof(setPartsResponse)));
return;
}
if (setPartsResponse.StatusCode.IsRedirectionCode()) {
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, setPartsResponse.StatusCode));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(setPartsResponse.StatusCode));
if (setPartsResponse.FinalUri.Host != ArchiWebHandler.SteamCommunityURL.Host) {
ASF.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningUnknownValuePleaseReport, nameof(setPartsResponse.FinalUri), setPartsResponse.FinalUri));
ASF.ArchiLogger.LogGenericError(Strings.FormatWarningUnknownValuePleaseReport(nameof(setPartsResponse.FinalUri), setPartsResponse.FinalUri));
return;
}
@@ -1020,14 +1020,14 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
}
if (!setPartsResponse.StatusCode.IsSuccessCode()) {
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, setPartsResponse.StatusCode));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(setPartsResponse.StatusCode));
return;
}
if (setPartsResponse.Content?.Result == null) {
// This should never happen if we got the correct response
Bot.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningUnknownValuePleaseReport, nameof(setPartsResponse), setPartsResponse.Content?.Result));
Bot.ArchiLogger.LogGenericError(Strings.FormatWarningUnknownValuePleaseReport(nameof(setPartsResponse), setPartsResponse.Content?.Result));
return;
}
@@ -1118,13 +1118,13 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
assetsForMatching = assetsForMatchingFiltered;
if (assetsForMatching.Count == 0) {
Bot.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsEmpty, nameof(assetsForMatching)));
Bot.ArchiLogger.LogGenericInfo(Strings.FormatErrorIsEmpty(nameof(assetsForMatching)));
return;
}
if (assetsForMatching.Count > MaxItemsCount) {
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(assetsForMatching)} > {MaxItemsCount}"));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError($"{nameof(assetsForMatching)} > {MaxItemsCount}"));
return;
}
@@ -1132,19 +1132,19 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
(HttpStatusCode StatusCode, ImmutableHashSet<ListedUser> Users)? response = await Backend.GetListedUsersForMatching(ASF.GlobalConfig.LicenseID.Value, Bot, WebBrowser, assetsForMatching, acceptedMatchableTypes).ConfigureAwait(false);
if (response == null) {
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(response)));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(nameof(response)));
return;
}
if (!response.Value.StatusCode.IsSuccessCode()) {
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, response.Value.StatusCode));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(response.Value.StatusCode));
return;
}
if (response.Value.Users.IsEmpty) {
Bot.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsEmpty, nameof(response.Value.Users)));
Bot.ArchiLogger.LogGenericInfo(Strings.FormatErrorIsEmpty(nameof(response.Value.Users)));
return;
}
@@ -1164,7 +1164,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
}
}
private async Task<bool> MatchActively(IReadOnlyCollection<ListedUser> listedUsers, IReadOnlyCollection<Asset> ourAssets, IReadOnlyCollection<EAssetType> acceptedMatchableTypes) {
private async Task<bool> MatchActively(ImmutableHashSet<ListedUser> listedUsers, HashSet<Asset> ourAssets, HashSet<EAssetType> acceptedMatchableTypes) {
if ((listedUsers == null) || (listedUsers.Count == 0)) {
throw new ArgumentNullException(nameof(listedUsers));
}
@@ -1181,7 +1181,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
if (MatchingUtilities.IsEmptyForMatching(ourFullState, ourTradableState)) {
// User doesn't have any more dupes in the inventory
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsEmpty, $"{nameof(ourFullState)} || {nameof(ourTradableState)}"));
Bot.ArchiLogger.LogGenericTrace(Strings.FormatErrorIsEmpty($"{nameof(ourFullState)} || {nameof(ourTradableState)}"));
return false;
}
@@ -1255,9 +1255,9 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
Dictionary<ulong, uint> fairClassIDsToGive = new();
Dictionary<ulong, uint> fairClassIDsToReceive = new();
foreach (ListedUser listedUser in listedUsers.Where(listedUser => (listedUser.SteamID != Bot.SteamID) && acceptedMatchableTypes.Any(listedUser.MatchableTypes.Contains) && !Bot.IsBlacklistedFromTrades(listedUser.SteamID)).OrderByDescending(listedUser => !deprioritizedSteamIDs.Contains(listedUser.SteamID)).ThenByDescending(static listedUser => listedUser.TotalGamesCount > 1).ThenByDescending(static listedUser => listedUser.MatchEverything).ThenBy(static listedUser => listedUser.TotalInventoryCount)) {
foreach (ListedUser listedUser in listedUsers.Where(listedUser => (listedUser.SteamID != Bot.SteamID) && acceptedMatchableTypes.Overlaps(listedUser.MatchableTypes) && !Bot.IsBlacklistedFromTrades(listedUser.SteamID)).OrderByDescending(listedUser => !deprioritizedSteamIDs.Contains(listedUser.SteamID)).ThenByDescending(static listedUser => listedUser.TotalGamesCount > 1).ThenByDescending(static listedUser => listedUser.MatchEverything).ThenBy(static listedUser => listedUser.TotalInventoryCount)) {
if (failuresInRow >= WebBrowser.MaxTries) {
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(failuresInRow)} >= {WebBrowser.MaxTries}"));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError($"{nameof(failuresInRow)} >= {WebBrowser.MaxTries}"));
break;
}
@@ -1280,7 +1280,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
switch (tradeHoldDuration) {
case null:
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsEmpty, nameof(tradeHoldDuration)));
Bot.ArchiLogger.LogGenericTrace(Strings.FormatErrorIsEmpty(nameof(tradeHoldDuration)));
continue;
case > 0 when (tradeHoldDuration.Value > maxTradeHoldDuration) || (tradeHoldDuration.Value > listedUser.MaxTradeHoldDuration):
@@ -1421,7 +1421,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
}
if (skippedSetsThisTrade.Count == 0) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsEmpty, nameof(skippedSetsThisTrade)));
Bot.ArchiLogger.LogGenericTrace(Strings.FormatErrorIsEmpty(nameof(skippedSetsThisTrade)));
break;
}
@@ -1435,11 +1435,11 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
throw new InvalidOperationException($"{nameof(itemsToGive)} && {nameof(itemsToReceive)}");
}
Bot.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Localization.Strings.MatchingFound, itemsToReceive.Count, listedUser.SteamID, listedUser.Nickname));
Bot.ArchiLogger.LogGenericInfo(Localization.Strings.FormatMatchingFound(itemsToReceive.Count, listedUser.SteamID, listedUser.Nickname));
Bot.ArchiLogger.LogGenericTrace($"{Bot.SteamID} <- {string.Join(", ", itemsToReceive.Select(static item => $"{item.RealAppID}/{item.Type}/{item.Rarity}/{item.ClassID} #{item.Amount}"))} | {string.Join(", ", itemsToGive.Select(static item => $"{item.RealAppID}/{item.Type}/{item.Rarity}/{item.ClassID} #{item.Amount}"))} -> {listedUser.SteamID}");
(bool success, HashSet<ulong>? tradeOfferIDs, HashSet<ulong>? mobileTradeOfferIDs) = await Bot.ArchiWebHandler.SendTradeOffer(listedUser.SteamID, itemsToGive, itemsToReceive, listedUser.TradeToken, true).ConfigureAwait(false);
(bool success, HashSet<ulong>? tradeOfferIDs, HashSet<ulong>? mobileTradeOfferIDs) = await Bot.ArchiWebHandler.SendTradeOffer(listedUser.SteamID, itemsToGive, itemsToReceive, listedUser.TradeToken, nameof(MatchActively), true).ConfigureAwait(false);
if (tradeOfferIDs?.Count > 0) {
matchActivelyTradeOfferIDs.UnionWith(tradeOfferIDs);
@@ -1454,7 +1454,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
(bool twoFactorSuccess, IReadOnlyCollection<Confirmation>? handledConfirmations, _) = await Bot.Actions.HandleTwoFactorAuthenticationConfirmations(true, Confirmation.EConfirmationType.Trade, pendingMobileTradeOfferIDs, true).ConfigureAwait(false);
if (!twoFactorSuccess) {
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Localization.Strings.ActivelyMatchingSomeConfirmationsFailed, handledConfirmations?.Count ?? 0, pendingMobileTradeOfferIDs.Count));
Bot.ArchiLogger.LogGenericWarning(Localization.Strings.FormatActivelyMatchingSomeConfirmationsFailed(handledConfirmations?.Count ?? 0, pendingMobileTradeOfferIDs.Count));
}
pendingMobileTradeOfferIDs.Clear();
@@ -1465,7 +1465,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
// The user likely no longer has the items we need, this is fine, we can continue the matching with other ones
failuresInRow++;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Localization.Strings.TradeOfferFailed, listedUser.SteamID, listedUser.Nickname));
Bot.ArchiLogger.LogGenericWarning(Localization.Strings.FormatTradeOfferFailed(listedUser.SteamID, listedUser.Nickname));
break;
}
@@ -1550,11 +1550,11 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
(bool twoFactorSuccess, IReadOnlyCollection<Confirmation>? handledConfirmations, _) = Bot.IsConnectedAndLoggedOn ? await Bot.Actions.HandleTwoFactorAuthenticationConfirmations(true, Confirmation.EConfirmationType.Trade, pendingMobileTradeOfferIDs, true).ConfigureAwait(false) : (false, null, null);
if (!twoFactorSuccess) {
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Localization.Strings.ActivelyMatchingSomeConfirmationsFailed, handledConfirmations?.Count ?? 0, pendingMobileTradeOfferIDs.Count));
Bot.ArchiLogger.LogGenericWarning(Localization.Strings.FormatActivelyMatchingSomeConfirmationsFailed(handledConfirmations?.Count ?? 0, pendingMobileTradeOfferIDs.Count));
}
}
Bot.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Localization.Strings.ActivelyMatchingItemsRound, matchedSets));
Bot.ArchiLogger.LogGenericInfo(Localization.Strings.FormatActivelyMatchingItemsRound(matchedSets));
return matchedSets > 0;
}
@@ -1610,10 +1610,10 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
if (response.StatusCode.IsRedirectionCode()) {
ShouldSendHeartBeats = false;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, response.StatusCode));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(response.StatusCode));
if (response.FinalUri.Host != ArchiWebHandler.SteamCommunityURL.Host) {
ASF.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningUnknownValuePleaseReport, nameof(response.FinalUri), response.FinalUri));
ASF.ArchiLogger.LogGenericError(Strings.FormatWarningUnknownValuePleaseReport(nameof(response.FinalUri), response.FinalUri));
return;
}
@@ -1629,7 +1629,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
if (!response.StatusCode.IsSuccessCode()) {
ShouldSendHeartBeats = false;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, response.StatusCode));
Bot.ArchiLogger.LogGenericWarning(Strings.FormatWarningFailedWithError(response.StatusCode));
switch (response.StatusCode) {
case HttpStatusCode.Conflict:

View File

@@ -4,8 +4,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ConfigureAwaitChecker.Analyzer" PrivateAssets="all" />
<PackageReference Include="JetBrains.Annotations" PrivateAssets="all" />
<PackageReference Include="Microsoft.CodeAnalysis.ResxSourceGenerator" PrivateAssets="all" />
<PackageReference Include="SteamKit2" IncludeAssets="compile" />
<PackageReference Include="System.Composition.AttributedModel" IncludeAssets="compile" />
</ItemGroup>
@@ -15,17 +15,6 @@
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Localization\Strings.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Strings.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Compile Update="Localization\Strings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Strings.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Update="Localization\Strings.resx" />
</ItemGroup>
</Project>

View File

@@ -24,7 +24,6 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
@@ -100,7 +99,7 @@ internal static class Commands {
}
if (bot.HasMobileAuthenticator) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(bot.HasMobileAuthenticator)));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(nameof(bot.HasMobileAuthenticator)));
}
if (!bot.IsConnectedAndLoggedOn) {
@@ -121,17 +120,17 @@ internal static class Commands {
} catch (Exception e) {
bot.ArchiLogger.LogGenericException(e);
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, e.Message));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(e.Message));
}
if (string.IsNullOrEmpty(json)) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsEmpty, nameof(json)));
return bot.Commands.FormatBotResponse(Strings.FormatErrorIsEmpty(nameof(json)));
}
Steam.Security.MobileAuthenticator? mobileAuthenticator = json.ToJsonObject<Steam.Security.MobileAuthenticator>();
if (mobileAuthenticator == null) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsEmpty, nameof(json)));
return bot.Commands.FormatBotResponse(Strings.FormatErrorIsEmpty(nameof(json)));
}
mobileAuthenticator.Init(bot);
@@ -147,23 +146,23 @@ internal static class Commands {
string? code = mobileAuthenticator.GenerateTokenForTime(steamTime);
if (string.IsNullOrEmpty(code)) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(mobileAuthenticator.GenerateTokenForTime)));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(nameof(mobileAuthenticator.GenerateTokenForTime)));
}
CTwoFactor_FinalizeAddAuthenticator_Response? response = await mobileAuthenticatorHandler.FinalizeAuthenticator(bot.SteamID, activationCode, code, steamTime).ConfigureAwait(false);
if (response == null) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(mobileAuthenticatorHandler.FinalizeAuthenticator)));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(nameof(mobileAuthenticatorHandler.FinalizeAuthenticator)));
}
if (!response.success) {
EResult result = (EResult) response.status;
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, result));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(result));
}
if (!bot.TryImportAuthenticator(mobileAuthenticator)) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(bot.TryImportAuthenticator)));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(nameof(bot.TryImportAuthenticator)));
}
string maFileFinishedPath = $"{maFilePath}.NEW";
@@ -173,7 +172,7 @@ internal static class Commands {
} catch (Exception e) {
bot.ArchiLogger.LogGenericException(e);
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, e.Message));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(e.Message));
}
return bot.Commands.FormatBotResponse(Strings.Done);
@@ -194,12 +193,12 @@ internal static class Commands {
HashSet<Bot>? bots = Bot.GetBots(botNames);
if ((bots == null) || (bots.Count == 0)) {
return access >= EAccess.Owner ? Steam.Interaction.Commands.FormatStaticResponse(string.Format(CultureInfo.CurrentCulture, Strings.BotNotFound, botNames)) : null;
return access >= EAccess.Owner ? Steam.Interaction.Commands.FormatStaticResponse(Strings.FormatBotNotFound(botNames)) : null;
}
IList<string?> results = await Utilities.InParallel(bots.Select(bot => ResponseTwoFactorFinalize(Steam.Interaction.Commands.GetProxyAccess(bot, access, steamID), bot, activationCode))).ConfigureAwait(false);
List<string> responses = [..results.Where(static result => !string.IsNullOrEmpty(result))];
List<string> responses = [..results.Where(static result => !string.IsNullOrEmpty(result))!];
return responses.Count > 0 ? string.Join(Environment.NewLine, responses) : null;
}
@@ -216,7 +215,7 @@ internal static class Commands {
}
if (bot.HasMobileAuthenticator) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(bot.HasMobileAuthenticator)));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(nameof(bot.HasMobileAuthenticator)));
}
string maFilePath = bot.GetFilePath(Bot.EFileType.MobileAuthenticator);
@@ -233,17 +232,17 @@ internal static class Commands {
} catch (Exception e) {
bot.ArchiLogger.LogGenericException(e);
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, e.Message));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(e.Message));
}
if (string.IsNullOrEmpty(json)) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsEmpty, nameof(json)));
return bot.Commands.FormatBotResponse(Strings.FormatErrorIsEmpty(nameof(json)));
}
Steam.Security.MobileAuthenticator? mobileAuthenticator = json.ToJsonObject<Steam.Security.MobileAuthenticator>();
if (mobileAuthenticator == null) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsEmpty, nameof(json)));
return bot.Commands.FormatBotResponse(Strings.FormatErrorIsEmpty(nameof(json)));
}
mobileAuthenticator.Init(bot);
@@ -251,13 +250,17 @@ internal static class Commands {
if (!string.IsNullOrEmpty(activationCode)) {
string? generatedCode = await mobileAuthenticator.GenerateToken().ConfigureAwait(false);
if (generatedCode != activationCode) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{generatedCode} != {activationCode}"));
if (string.IsNullOrEmpty(generatedCode)) {
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(nameof(generatedCode)));
}
if (!generatedCode.Equals(activationCode, StringComparison.OrdinalIgnoreCase)) {
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError($"{generatedCode} != {activationCode}"));
}
}
if (!bot.TryImportAuthenticator(mobileAuthenticator)) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(bot.TryImportAuthenticator)));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(nameof(bot.TryImportAuthenticator)));
}
string maFileFinishedPath = $"{maFilePath}.NEW";
@@ -267,7 +270,7 @@ internal static class Commands {
} catch (Exception e) {
bot.ArchiLogger.LogGenericException(e);
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, e.Message));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(e.Message));
}
return bot.Commands.FormatBotResponse(Strings.Done);
@@ -287,12 +290,12 @@ internal static class Commands {
HashSet<Bot>? bots = Bot.GetBots(botNames);
if ((bots == null) || (bots.Count == 0)) {
return access >= EAccess.Owner ? Steam.Interaction.Commands.FormatStaticResponse(string.Format(CultureInfo.CurrentCulture, Strings.BotNotFound, botNames)) : null;
return access >= EAccess.Owner ? Steam.Interaction.Commands.FormatStaticResponse(Strings.FormatBotNotFound(botNames)) : null;
}
IList<string?> results = await Utilities.InParallel(bots.Select(bot => ResponseTwoFactorFinalized(Steam.Interaction.Commands.GetProxyAccess(bot, access, steamID), bot, activationCode))).ConfigureAwait(false);
List<string> responses = [..results.Where(static result => !string.IsNullOrEmpty(result))];
List<string> responses = [..results.Where(static result => !string.IsNullOrEmpty(result))!];
return responses.Count > 0 ? string.Join(Environment.NewLine, responses) : null;
}
@@ -309,7 +312,7 @@ internal static class Commands {
}
if (bot.HasMobileAuthenticator) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(bot.HasMobileAuthenticator)));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(nameof(bot.HasMobileAuthenticator)));
}
if (!bot.IsConnectedAndLoggedOn) {
@@ -333,7 +336,7 @@ internal static class Commands {
EResult result = (EResult) response.status;
if (result != EResult.OK) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, result));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(result));
}
MaFileData maFileData = new(response, bot.SteamID, deviceID);
@@ -346,7 +349,7 @@ internal static class Commands {
} catch (Exception e) {
bot.ArchiLogger.LogGenericException(e);
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, e.Message));
return bot.Commands.FormatBotResponse(Strings.FormatWarningFailedWithError(e.Message));
}
return bot.Commands.FormatBotResponse(Strings.Done);
@@ -366,12 +369,12 @@ internal static class Commands {
HashSet<Bot>? bots = Bot.GetBots(botNames);
if ((bots == null) || (bots.Count == 0)) {
return access >= EAccess.Owner ? Steam.Interaction.Commands.FormatStaticResponse(string.Format(CultureInfo.CurrentCulture, Strings.BotNotFound, botNames)) : null;
return access >= EAccess.Owner ? Steam.Interaction.Commands.FormatStaticResponse(Strings.FormatBotNotFound(botNames)) : null;
}
IList<string?> results = await Utilities.InParallel(bots.Select(bot => ResponseTwoFactorInit(Steam.Interaction.Commands.GetProxyAccess(bot, access, steamID), bot))).ConfigureAwait(false);
List<string> responses = [..results.Where(static result => !string.IsNullOrEmpty(result))];
List<string> responses = [..results.Where(static result => !string.IsNullOrEmpty(result))!];
return responses.Count > 0 ? string.Join(Environment.NewLine, responses) : null;
}

View File

@@ -1,48 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ArchiSteamFarm.OfficialPlugins.MobileAuthenticator.Localization {
using System;
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Strings {
private static System.Resources.ResourceManager resourceMan;
private static System.Globalization.CultureInfo resourceCulture;
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Strings() {
}
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
internal static System.Resources.ResourceManager ResourceManager {
get {
if (object.Equals(null, resourceMan)) {
System.Resources.ResourceManager temp = new System.Resources.ResourceManager("ArchiSteamFarm.OfficialPlugins.MobileAuthenticator.Localization.Strings", typeof(Strings).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
internal static System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -53,13 +53,11 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

Some files were not shown because too many files have changed in this diff Show More