Skip to content

Add Steam Workshop mod auto-updates - #291

Open
SemHiel2003 wants to merge 1 commit into
Osiris-Team:masterfrom
SemHiel2003:bounty-215-steam-workshop-takeover
Open

Add Steam Workshop mod auto-updates#291
SemHiel2003 wants to merge 1 commit into
Osiris-Team:masterfrom
SemHiel2003:bounty-215-steam-workshop-takeover

Conversation

@SemHiel2003

Copy link
Copy Markdown

Closes #215.

This adds Steam Workshop mod updates to the existing mods updater:

  • discover direct child mod directories from their meta.cpp publishedid
  • query Steam's GetPublishedFileDetails endpoint and compare time_updated with the version cached in mods.yml
  • use Steam's Workshop consumer_app_id, with a numeric server-updater.software value as fallback
  • download through SteamCMD and honor the existing NOTIFY, MANUAL, and AUTOMATIC profiles
  • copy successful automatic updates into the existing mod directory and cache the checked version

No new dependency is added. The Steam endpoint requires a POST form request, so the implementation uses HttpURLConnection and the Gson dependency already in the project.

Derived work and changes from #290

This contribution builds on the inactive, closed PR #290, which itself builds on #280, as permitted by the derived-PR terms in BOUNTY_TERMS.md.

On top of that implementation, this version:

  • does not treat the game-specific meta.cpp timestamp as comparable to Steam's Unix time_updated
  • resolves the owning Workshop app from consumer_app_id (for the issue's DayZ example, 221100, rather than dedicated-server app 223350)
  • adds connection/read timeouts to the Steam metadata request
  • requires both a SteamCMD success line and the expected downloaded directory before reporting success

Validation

  • mvn -q -DskipTests compile
  • mvn -q -Dtest='SteamWorkshopModTest,SteamCMDTest#buildsWorkshopItemCommand' test — 5/5 passed
  • git diff --check
  • a read-only call to Steam's public API returned result=1 and consumer_app_id=221100 for Workshop item 1559212036

The full local package run passed 32 tests, including all new tests. The existing network-dependent SystemCheckerTest produced one environment error because www.google.com was unreachable.

AI assistance and human validation

This contribution was developed predominantly with AI assistance. The human account owner read a plain-language review of the behavior and limitations, personally ran the compile and focused test suite against commit 3d2041c43a888bfdb3831ad2713991efc60f8868, and confirmed zero failures and zero errors before this PR was opened. I understand the change and take responsibility for its behavior and quality.

The PayPal identity-verification requirement will be satisfied before merge without putting payment details in this PR discussion.

Builds on the inactive implementation from PR Osiris-Team#290, with Workshop consumer app-id resolution and stricter SteamCMD success handling.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Auto-Update DayZ mods

1 participant