public ProcessUnknownEventArgs(TranslationProviderType translationProviderType, string culture, object rawdata)
 {
     Culture             = culture;
     TranslationProvider = translationProviderType;
     RawData             = rawdata;
     AlreadySubmitted    = false;
 }
示例#2
0
        /// <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);
            }
        }
示例#3
0
 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);
            }
        }
示例#8
0
        /// <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);