Skip to content

Commit

Permalink
Add internal address.json feature
Browse files Browse the repository at this point in the history
  • Loading branch information
sappho192 committed Aug 27, 2022
1 parent d422310 commit 1c058fc
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 4 deletions.
18 changes: 18 additions & 0 deletions IronworksTranslator/Settings/TranslatorSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public TranslatorSettings()
NativeLanguage = ClientLanguage.Korean;
DialogueLanguage = ClientLanguage.Japanese;
DefaultDialogueTranslationMethod = 0; // Memory Search
UseInternalAddress = false;
}


Expand Down Expand Up @@ -75,13 +76,30 @@ public ClientLanguage DialogueLanguage
}
}
}

[JsonProperty]
public bool UseInternalAddress
{
get => useInternalAddress;
set
{
if (value != useInternalAddress)
{
useInternalAddress = value;
OnSettingsChanged?.Invoke(this, nameof(UseInternalAddress), UseInternalAddress);
}
}
}

private ClientLanguage dialogueLanguage;

private TranslatorEngine defaultTranslatorEngine;
private ClientLanguage nativeLanguage;

private DialogueTranslationMethod dialogueTranslationMethod;

private bool useInternalAddress;

public event SettingsChangedEventHandler OnSettingsChanged;
}
}
37 changes: 33 additions & 4 deletions IronworksTranslator/Util/HermesAddress.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
using Newtonsoft.Json;
using IronworksTranslator.Core;
using Newtonsoft.Json;
using Serilog;
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
using System.Windows;

namespace IronworksTranslator.Util
{
Expand All @@ -14,15 +17,41 @@ public class HermesAddress

public static HermesAddress GetLatestAddress()
{
// Replaced WebClient, which is obsolete from .NET 5, to HttpClient
if(IronworksSettings.Instance.Translator.UseInternalAddress)
{
Directory.CreateDirectory("settings");
string addressFilePath = "./settings/address.json";
if (File.Exists(addressFilePath))
{// Read settings
using StreamReader reader = File.OpenText(addressFilePath);
var latest = reader.ReadToEnd();
var json = JsonConvert.DeserializeObject<HermesAddress>(latest);
Log.Debug("Internal address.json loaded");
return json;
}
else
{
MessageBox.Show($"settings/address.json이 없습니다. 자체주소 설정을 무시하겠습니다.");
Log.Debug("UseInternalAddress is true but address.json does not exist. Loading address.json from web.");
return DownloadAddress(out _, out _);
}
} else
{
return DownloadAddress(out _, out _);
}
}

using var httpClient = new HttpClient();
private static HermesAddress DownloadAddress(out HttpClient httpClient, out StreamReader reader)
{
// Replaced WebClient, which is obsolete from .NET 5, to HttpClient
httpClient = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, url);
var response = httpClient.Send(request);
using var reader = new StreamReader(response.Content.ReadAsStream());
reader = new StreamReader(response.Content.ReadAsStream());
var latest = reader.ReadToEnd();

var json = JsonConvert.DeserializeObject<HermesAddress>(latest);
Log.Debug("address.json loaded from web");
return json;
}
}
Expand Down

0 comments on commit 1c058fc

Please sign in to comment.