* Further attempt to resolve profile corruption issues
- FileUtil now uses File.Replace and does a sync flush
- Add restore capabilities to BackupService
- If loading a profile fails, attempt to restore from the most recent backup
- Trigger a backup creation on raid start, raid end, and game close
- Load profiles before starting the backupService to avoid backing up corrupt profiles
* - Switch async calls to .GetAwaiter().GetResult() for better exception handling
---------
Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
* Add edge case for Reverse Proxies
* Cleanup HttpListener, remove unecessary MemoryStreams
* Handle with IPAddress instead of string
* Handle nullabiity of RouteAction, tighten typing on requests
* Cleanup HttpRouter
* Use tighter typing on Routers
* Further async changes
- SaveServer & Backup Server are now async
- Anything that ties in with SaveServer saving (Such as callbacks) are now async
- Various async util methods added
- Removed two wrapper methods and switched code over to use the actual method
* Update test
* Move Router, Callbacks and GetResponse over to ValueTask
* Assign empty deserializedObject for now, keep todo
* Cleanup GetResponse
* Re-add logger for request