You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Replace FtpTasks (deprecated WebRequest/SYSLIB0014) with FluentFTP #354
Tier 1 — Replace.src/Fallout.Common/IO/FtpTasks.cs (~83 LOC) does recursive FTP upload via the deprecatedWebRequest/WebRequestMethods.Ftp API (#pragma warning disable SYSLIB0014).
Replace with
FluentFTP — async-first, maintained, modern FTP client.
⚠️ Breaking change
FtpTasks is public API. New signatures (async, different upload entry points) break consumers → carries breaking-change, lands on experimental, batched to the yearly major per ADR-0004. Add a CHANGELOG.md entry under the next major with a migration note. Consider an [Obsolete] shim on the old surface if a transition path is wanted.
Acceptance
FTP upload backed by FluentFTP; SYSLIB0014 suppression removed
Insights from a discarded prototype (old paths; map to onion structure after #359).
Package: FluentFTP 54.2.0 (central).
Async-first with sync wrappers (match HttpTasks).
New signatures take an explicit host + server-relative paths, not full ftp:// URIs (FluentFTP separates host from paths) — this is the breaking part.
Keep the FtpCredentials static. Remove the SYSLIB0014 suppression.
No [Obsolete] shim: the old API parsed the host out of an ftp:// URI; preserving it would drag the deprecated WebRequest path along. Clean break on experimental is simpler.
Activity
ChrisonSimtian commentedon Jun 3, 2026
Insights from a discarded prototype (old paths; map to onion structure after #359).
ftp://URIs (FluentFTP separates host from paths) — this is the breaking part.FtpCredentialsstatic. Remove the SYSLIB0014 suppression.[Obsolete]shim: the old API parsed the host out of an ftp:// URI; preserving it would drag the deprecated WebRequest path along. Clean break on experimental is simpler.