Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions Application/OasisBot/OasisBot.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,21 @@
</ItemGroup>
<Copy SourceFiles="@(DependencyFiles)" DestinationFolder="..\..\Build\Data\%(RecursiveDir)" />
</Target>
<Target
Name="DownloadNavigationLinkage"
AfterTargets="Build"
Condition="!Exists('..\..\Build\Data\navigation_linkage.json')"
>
<PropertyGroup>
<LinkageGzPath>..\..\Build\Data\navigation_linkage.json.gz</LinkageGzPath>
<LinkageJsonPath>..\..\Build\Data\navigation_linkage.json</LinkageJsonPath>
</PropertyGroup>
<DownloadFile
SourceUrl="https://github.com/Silkroad-Developer-Community/Silkroad-NavLink/releases/latest/download/navigation_linkage.json.gz"
DestinationFolder="..\..\Build\Data"
DestinationFileName="navigation_linkage.json.gz"
SkipUnchangedFiles="true"
/>
<Exec Command="powershell -Command &quot;Add-Type -AssemblyName System.IO.Compression; $i=[System.IO.File]::OpenRead('$(LinkageGzPath)'); $o=[System.IO.File]::Create('$(LinkageJsonPath)'); $g=[System.IO.Compression.GZipStream]::new($i, [System.IO.Compression.CompressionMode]::Decompress); $g.CopyTo($o); $g.Dispose(); $o.Dispose(); $i.Dispose(); Remove-Item '$(LinkageGzPath)' -Force&quot;" />
</Target>
</Project>
15 changes: 12 additions & 3 deletions Botbases/RSBot.Training/Bot/NavigationManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace RSBot.Training.Bot;
internal static class NavigationManager
{
private const string LinkageUrl =
"https://raw.githubusercontent.com/Silkroad-Developer-Community/Silkroad-NavLink/main/navigation_linkage.json";
"https://github.com/Silkroad-Developer-Community/Silkroad-NavLink/releases/latest/download/navigation_linkage.json.gz";
private static readonly string LinkagePath = Path.Combine(Kernel.BasePath, "Data", "navigation_linkage.json");
private static readonly object _linkageLock = new();
private static NavigationLinkage _linkage;
Expand Down Expand Up @@ -44,7 +44,7 @@ public static bool LoadLinkageData()
{
if (!File.Exists(LinkagePath))
{
Log.Warn($"Navigation linkage file not found at {LinkagePath}");
Log.Warn($"navigation linkage file not found at {LinkagePath}");
return false;
}

Expand Down Expand Up @@ -117,7 +117,16 @@ public static async Task<bool> FetchRemoteLinkageData()
{
Log.Notify("Fetching navigation linkage data from GitHub...");
using var client = new HttpClient();
var json = await client.GetStringAsync(LinkageUrl);
using var response = await client.GetAsync(LinkageUrl);
response.EnsureSuccessStatusCode();

using var responseStream = await response.Content.ReadAsStreamAsync();
using var decompressedStream = new System.IO.Compression.GZipStream(
responseStream,
System.IO.Compression.CompressionMode.Decompress
);
using var reader = new StreamReader(decompressedStream);
var json = await reader.ReadToEndAsync();

if (string.IsNullOrWhiteSpace(json))
{
Expand Down
22 changes: 0 additions & 22 deletions scripts/build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -37,28 +37,6 @@ if ($Clean) {
}

if ($buildExitCode -eq 0) {
# TODO: move linkage logic to msbuild for vs devs
Write-Output "Fetching navigation linkage data..."
$linkageUrl = "https://raw.githubusercontent.com/Silkroad-Developer-Community/Silkroad-NavLink/main/navigation_linkage.json"
$linkagePath = ".\Build\Data\navigation_linkage.json"
if (-not (Test-Path ".\Build\Data")) {
New-Item -ItemType Directory ".\Build\Data" -Force | Out-Null
}
$linkageTempPath = "$linkagePath.tmp"
try {
Invoke-WebRequest -Uri $linkageUrl -OutFile $linkageTempPath -UseBasicParsing -ErrorAction Stop
$jsonContent = Get-Content -Path $linkageTempPath -Raw
$null = $jsonContent | ConvertFrom-Json -ErrorAction Stop
Move-Item -Path $linkageTempPath -Destination $linkagePath -Force
Write-Output "Successfully updated navigation linkage data."
}
catch {
Write-Warning "Failed to update navigation linkage data: $($_.Exception.Message). Keeping existing file if it exists."
if (Test-Path $linkageTempPath) {
Remove-Item $linkageTempPath -Force
}
}

if (!$DoNotStart) {
Write-Output "Starting OasisBot..."
& ".\Build\OasisBot.exe"
Expand Down
Loading