示例#1
0
        private async Task DownloadData(FintoDownloadSettingsItem download, FintoSettings settings)
        {
            var version = settings.Endpoints.TryGet(Version);

            if (version == null)
            {
                throw new Exception("Version is not defined in FINTO configuration file.");
            }

            var versionNumber = download.Version;

            if (versionNumber == null)
            {
                var defaultVersionNumber = settings.Endpoints.TryGet(DefaultVersion);
                if (defaultVersionNumber == null)
                {
                    throw new Exception("Default version number is not defined in FINTO configuration file.");
                }
                versionNumber = int.Parse(defaultVersionNumber);
            }

            version = string.Format(version, versionNumber);

            foreach (var link in download.Links)
            {
                string action = settings.Endpoints.TryGet(link.Action);
                if (string.IsNullOrEmpty(action))
                {
                    Console.Error.WriteLine($"Action {action} not found. Check settings for {download.Name}.");
                    continue;
                }
                link.Content = await GetFinto(settings, version, action, link.Param, link.File, download.DownloadFolder, download.SaveToFile);
            }
        }
示例#2
0
        private async Task <string> GetFinto(FintoSettings settings, string version, string action, string param, string path = null, string folder = "", bool saveToFile = true)
        {
            if (string.IsNullOrEmpty(folder))
            {
                folder = OutputFolder;
            }
            if (string.IsNullOrEmpty(path))
            {
                path = param;
            }
            Console.Write($"Loading data for {param}... started at {DateTime.UtcNow:HH:mm:ss zz}");

            string result = await GetFintoJson(version, action, param, settings);

            if (result == null)
            {
                return(null);
            }

            var x     = JsonConvert.DeserializeObject(result);
            var texts = JsonConvert.SerializeObject(x, Formatting.Indented);

            if (saveToFile)
            {
                var file = new FileInfo(Path.Combine(folder, $"{path}.json"));
                if (!file.Directory.Exists)
                {
                    file.Directory.Create();
                }
                File.WriteAllText(file.FullName, texts);
                Console.WriteLine($@"Data loaded. Result size {result.Length}. File '{file.FullName}'");
            }
            return(texts);
        }
示例#3
0
 internal async Task DownloadData(FintoSettings settings)
 {
     foreach (var download in settings.Downloads)
     {
         var definition = settings.DownloadDefinitions.TryGet(download);
         if (definition == null)
         {
             Console.Error.WriteLine($"Definitoin for key {download} not found.");
             continue;
         }
         if (!definition.MergeOnly)
         {
             await DownloadData(definition, settings);
         }
         Merge(definition);
     }
 }
示例#4
0
        internal async Task <string> GetFintoJson(string version, string action, string param, FintoSettings settings)
        {
            using (var client = new HttpClient())
            {
                try
                {
                    client.Timeout = new TimeSpan(1, 0, 0);
                    var response = await client.GetAsync(settings.Endpoints["baseUri"] + version + string.Format(action, param));

                    string body = await response.Content.ReadAsStringAsync();

                    return(body);
                }
                catch (TimeoutException e)
                {
                    Console.Error.WriteLine(e);
                    return(null);
                }
                catch (Exception e)
                {
                    Console.Error.WriteLine(e);
                    return(null);
                }
            }
        }