public ProcessUnknownEventArgs(TranslationProviderType translationProviderType, string culture, object rawdata) { Culture = culture; TranslationProvider = translationProviderType; RawData = rawdata; AlreadySubmitted = false; }
/// <summary> /// Checks if specified provider is up to date (compares local version to server version). /// </summary> /// <param name="type">Translation provider type.</param> /// <returns>True if local version is greater than or equal to remote.</returns> public bool IsUpToDate(TranslationProviderType type) { if ((!versions.ContainsKey(type)) || (versions[type] == null) || !apiAvailable) { return(true); } switch (type) { case TranslationProviderType.App: Version remoteAppVersion, localAppVersion = Assembly.GetEntryAssembly().GetName().Version; if (!Version.TryParse(versions[type], out remoteAppVersion)) { return(true); } return(remoteAppVersion <= localAppVersion); default: int verRemote, verLocal; if (!int.TryParse(versions[type], out verRemote)) { return(true); } if (!int.TryParse(TranslationDataProvider.Version(type), out verLocal)) { return(false); } return(verRemote <= verLocal); } }
public UnknownStringItem(TranslationProviderType type, string culture, object rawdata) { ProviderType = type; Culture = culture; RawData = rawdata; AlreadySubmitted = false; }
private static string Version(TranslationProviderType type, string culture) { var accessor = Tuple.Create(type, culture); if (!translationSets.ContainsKey(accessor)) { return(null); } return(translationSets[accessor]?.version); }
/// <summary> /// Parses JSON received from the server /// </summary> /// <param name="type">Translation provider</param> /// <param name="culture">Culture</param> /// <param name="jsonBytes">JSON data</param> /// <returns></returns> private static bool LoadJson(TranslationProviderType type, string culture, byte[] jsonBytes) { Debug.WriteLine("TranslationDataProvider: Provider {0}: JSON parsing was requested for culture <{1}>.", type, culture); var accessor = Tuple.Create(type, culture); switch (type) { case TranslationProviderType.Ships: ShipTranslationSet ships; if (!TryParse(jsonBytes, out ships)) { return(false); } translationSets[accessor] = ships; return(true); case TranslationProviderType.Quests: QuestTranslationSet quests; if (!TryParse(jsonBytes, out quests)) { return(false); } translationSets[accessor] = quests; return(true); case TranslationProviderType.ShipTypes: ShipTypeTranslationSet shiptypes; if (!TryParse(jsonBytes, out shiptypes)) { return(false); } translationSets[accessor] = shiptypes; return(true); case TranslationProviderType.Equipment: EquipmentTranslationSet equipment; if (!TryParse(jsonBytes, out equipment)) { return(false); } translationSets[accessor] = equipment; return(true); } return(false); }
/// <summary> /// Serialise data to local storage /// </summary> /// <param name="type"></param> /// <param name="culture"></param> private static void SaveXml(TranslationProviderType type, string culture) { if (culture.StartsWith("ja")) { return; } Directory.CreateDirectory(Path.Combine(translationsPath, culture)); using (StreamWriter dataWriter = new StreamWriter(SerialisationPath(type, culture))) { XmlSerializer dataXmlSerializer; var accessor = Tuple.Create(type, culture); switch (type) { case TranslationProviderType.Ships: dataXmlSerializer = new XmlSerializer(typeof(ShipTranslationSet)); dataXmlSerializer.Serialize(dataWriter, translationSets[accessor] as ShipTranslationSet); break; case TranslationProviderType.ShipTypes: dataXmlSerializer = new XmlSerializer(typeof(ShipTypeTranslationSet)); dataXmlSerializer.Serialize(dataWriter, translationSets[accessor] as ShipTypeTranslationSet); break; case TranslationProviderType.Equipment: dataXmlSerializer = new XmlSerializer(typeof(EquipmentTranslationSet)); dataXmlSerializer.Serialize(dataWriter, translationSets[accessor] as EquipmentTranslationSet); break; case TranslationProviderType.Quests: dataXmlSerializer = new XmlSerializer(typeof(QuestTranslationSet)); dataXmlSerializer.Serialize(dataWriter, translationSets[accessor] as QuestTranslationSet); break; //case TranslationProviderType.Operations: // break; //case TranslationProviderType.Expeditions: // break; default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } } }
private static bool LoadXml(TranslationProviderType type, string culture) { if (!File.Exists(SerialisationPath(type, culture)) || culture.StartsWith("ja")) { return(false); } using (FileStream dataReader = new FileStream(SerialisationPath(type, culture), FileMode.Open)) { XmlSerializer dataXmlSerializer; switch (type) { case TranslationProviderType.Ships: dataXmlSerializer = new XmlSerializer(typeof(ShipTranslationSet)); break; case TranslationProviderType.ShipTypes: dataXmlSerializer = new XmlSerializer(typeof(ShipTypeTranslationSet)); break; case TranslationProviderType.Equipment: dataXmlSerializer = new XmlSerializer(typeof(EquipmentTranslationSet)); break; case TranslationProviderType.Quests: dataXmlSerializer = new XmlSerializer(typeof(QuestTranslationSet)); break; //case TranslationProviderType.Operations: // break; //case TranslationProviderType.Expeditions: // break; default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } translationSets.Update(type, culture, dataXmlSerializer.Deserialize(dataReader)); return(true); } }
/// <summary> /// Downloads translations for the specified provider. /// </summary> /// <param name="type">Provider type.</param> /// <returns></returns> private bool FetchTranslations(TranslationProviderType type) { if (!apiAvailable) { return(false); } if (type == TranslationProviderType.App) { return(false); } if (type == TranslationProviderType.Operations) { return(false); } if (type == TranslationProviderType.Expeditions) { return(false); } var apiUri = new Uri(kcvApiUrl + type.ToString().ToLower() + "/"); using (var client = new ViewerWebClient()) { byte[] responseBytes; try { responseBytes = client.UploadValues(apiUri, "POST", this.DefaultRequestParameters()); Debug.WriteLine("{0}: API request sent for {1}, URL: {2}. Response: {3}.", nameof(Updater), type, apiUri, Encoding.UTF8.GetString(responseBytes)); } catch (Exception ex) { Debug.WriteLine("{0} API request sent for {1}, URL: {2}. Request failed with exception {3}.", nameof(Updater), type, apiUri, ex.Message); return(false); } return(TranslationDataProvider.LoadJson(type, responseBytes)); } }
private static string SerialisationPath(TranslationProviderType type) => SerialisationPath(type, CurrentCulture);
private static string SerialisationPath(TranslationProviderType type, string culture) => Path.Combine(translationsPath, culture, type.ToString() + ".xml");
public static bool LoadXml(TranslationProviderType type) => LoadXml(type, CurrentCulture);
public static void SaveXml(TranslationProviderType type) => SaveXml(type, CurrentCulture);
public static string Version(TranslationProviderType type) => Version(type, CurrentCulture);
public static bool LoadJson(TranslationProviderType type, byte[] jsonBytes) => LoadJson(type, CurrentCulture, jsonBytes);