mirror of
https://github.com/simtactics/mysimulation.git
synced 2025-07-06 22:50:30 -04:00
Removed NioTSO client and server
- NioTSO client isn't needed because we're using RayLib - Added FreeSO's API server to handle most backend operations
This commit is contained in:
parent
f12ba1502b
commit
22191ce648
591 changed files with 53264 additions and 3362 deletions
61
server/FSO.Server.Api.Core/Services/GithubUpdateUploader.cs
Executable file
61
server/FSO.Server.Api.Core/Services/GithubUpdateUploader.cs
Executable file
|
@ -0,0 +1,61 @@
|
|||
using FSO.Server.Common.Config;
|
||||
using Octokit;
|
||||
using Octokit.Internal;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FSO.Server.Api.Core.Services
|
||||
{
|
||||
public class GithubUpdateUploader : IUpdateUploader
|
||||
{
|
||||
private GithubConfig Config;
|
||||
|
||||
private static string Description = "This is an automated client release produced by the master FreeSO server. " +
|
||||
"These releases match up with a branch on GitHub, but with some addon content such as a custom catalog and splash. " +
|
||||
"It can be downloaded and installed directly, but it is better to do so through the game's launcher/updater. \n\n" +
|
||||
"The incremental update is applied by simply extracting the zip over the previous version of the game " +
|
||||
"(though the updater still affords extra validation here)";
|
||||
|
||||
public GithubUpdateUploader(GithubConfig config)
|
||||
{
|
||||
Config = config;
|
||||
}
|
||||
|
||||
public async Task<string> UploadFile(string destPath, string fileName, string groupName)
|
||||
{
|
||||
destPath = Path.GetFileName(destPath);
|
||||
var credentials = new InMemoryCredentialStore(new Credentials(Config.AccessToken));
|
||||
|
||||
var client = new GitHubClient(new ProductHeaderValue(Config.AppName), credentials);
|
||||
|
||||
Release release;
|
||||
try
|
||||
{
|
||||
release = await client.Repository.Release.Get(Config.User, Config.Repository, groupName);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
release = null;
|
||||
}
|
||||
if (release == null) {
|
||||
var newRel = new NewRelease(groupName);
|
||||
newRel.Body = Description;
|
||||
release = await client.Repository.Release.Create(Config.User, Config.Repository, newRel);
|
||||
}
|
||||
|
||||
using (var file = File.Open(fileName, System.IO.FileMode.Open, FileAccess.Read, FileShare.Read)) {
|
||||
try
|
||||
{
|
||||
var asset = await client.Repository.Release.UploadAsset(release, new ReleaseAssetUpload(destPath, "application/zip", file, null));
|
||||
return asset.BrowserDownloadUrl;
|
||||
} catch (Exception e)
|
||||
{
|
||||
//last time i tried, it mysteriously failed here but the file was uploaded :thinking:
|
||||
Console.WriteLine($"!! Upload request for {destPath} failed, check it actually succeeded !! \n" + e.ToString());
|
||||
return $"https://github.com/{Config.User}/{Config.Repository}/releases/download/{groupName}/{destPath}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue