public static void Main(string[] args) { Console.WriteLine("Press any key to start extracting process..."); Console.ReadKey(); try { Console.WriteLine("Starting extraction..."); MediatedSchema finalOutput = Extractor.GetOutputFromFile("live.json", "latest.json"); Console.WriteLine("FinalOutput object deserialized"); Console.WriteLine("Writing to file"); JsonDumper.DumpJsonToFile("final.json", finalOutput); Console.WriteLine("Extraction successful"); Console.ReadKey(); } catch (Exception e) { Console.WriteLine("Exception occured. Logging details..."); Logger.LogException("ErrorLogs.log", e); Console.WriteLine("Logging finished. Press any key to stop application"); Console.ReadKey(); } }
public static void ValidateMediatedSchemaObject(MediatedSchema mediatedSchemaObject, out bool differentCurrency, out bool differentDate) { if (mediatedSchemaObject.API.@base != mediatedSchemaObject.APIV4.@base) { differentCurrency = true; } else { differentCurrency = false; } if (mediatedSchemaObject.API.date != mediatedSchemaObject.APIV4.date) { DateTime APIDT = DateTime.Parse(mediatedSchemaObject.API.date); DateTime APIV4DT = DateTime.Parse(mediatedSchemaObject.APIV4.date); if (APIDT.AddDays(1.0) == APIV4DT) { differentDate = false; } else { differentDate = true; } } else { differentDate = false; } }
public static MediatedSchema DeserializeToMediatedSchema(string rawApiJson, string rawAPIV4Json) { MediatedSchema finalOutput = new MediatedSchema(); finalOutput.API = JsonConvert.DeserializeObject <API>(rawApiJson); finalOutput.APIV4 = JsonConvert.DeserializeObject <APIV4>(rawAPIV4Json); return(finalOutput); }
public static void DumpJsonToFile(string path, MediatedSchema finalJson) { try { string serialized = JsonConvert.SerializeObject(finalJson, Formatting.Indented); File.WriteAllText(path, serialized); } catch (Exception e) { Console.WriteLine("Error during serialization. Message: " + e.Message); } }
public static FinalOutput TransformToOutput(MediatedSchema mediated) { FinalOutput output = new FinalOutput(); output.Currency = mediated.API.@base; output.Date = mediated.API.date; output.TargetCurrencies = new RatesFinal(); output.TargetCurrencies.CAD = Average(mediated.API.rates.CAD, mediated.APIV4.rates.CAD); output.TargetCurrencies.HKD = Average(mediated.API.rates.HKD, mediated.APIV4.rates.HKD); output.TargetCurrencies.ISK = Average(mediated.API.rates.ISK, mediated.APIV4.rates.ISK); output.TargetCurrencies.PHP = Average(mediated.API.rates.PHP, mediated.APIV4.rates.PHP); output.TargetCurrencies.DKK = Average(mediated.API.rates.DKK, mediated.APIV4.rates.DKK); output.TargetCurrencies.HUF = Average(mediated.API.rates.HUF, mediated.APIV4.rates.HUF); output.TargetCurrencies.CZK = Average(mediated.API.rates.CZK, mediated.APIV4.rates.CZK); output.TargetCurrencies.GBP = Average(mediated.API.rates.GBP, mediated.APIV4.rates.GBP); output.TargetCurrencies.RON = Average(mediated.API.rates.RON, mediated.APIV4.rates.RON); output.TargetCurrencies.SEK = Average(mediated.API.rates.SEK, mediated.APIV4.rates.SEK); output.TargetCurrencies.IDR = Average(mediated.API.rates.IDR, mediated.APIV4.rates.IDR); output.TargetCurrencies.INR = Average(mediated.API.rates.INR, mediated.APIV4.rates.INR); output.TargetCurrencies.BRL = Average(mediated.API.rates.BRL, mediated.APIV4.rates.BRL); output.TargetCurrencies.RUB = Average(mediated.API.rates.RUB, mediated.APIV4.rates.RUB); output.TargetCurrencies.HRK = Average(mediated.API.rates.HRK, mediated.APIV4.rates.HRK); output.TargetCurrencies.JPY = Average(mediated.API.rates.JPY, mediated.APIV4.rates.JPY); output.TargetCurrencies.THB = Average(mediated.API.rates.THB, mediated.APIV4.rates.THB); output.TargetCurrencies.CHF = Average(mediated.API.rates.CHF, mediated.APIV4.rates.CHF); output.TargetCurrencies.EUR = Average(mediated.API.rates.EUR, mediated.APIV4.rates.EUR); output.TargetCurrencies.MYR = Average(mediated.API.rates.MYR, mediated.APIV4.rates.MYR); output.TargetCurrencies.BGN = Average(mediated.API.rates.BGN, mediated.APIV4.rates.BGN); output.TargetCurrencies.TRY = Average(mediated.API.rates.TRY, mediated.APIV4.rates.TRY); output.TargetCurrencies.CNY = Average(mediated.API.rates.CNY, mediated.APIV4.rates.CNY); output.TargetCurrencies.NOK = Average(mediated.API.rates.NOK, mediated.APIV4.rates.NOK); output.TargetCurrencies.NZD = Average(mediated.API.rates.NZD, mediated.APIV4.rates.NZD); output.TargetCurrencies.ZAR = Average(mediated.API.rates.ZAR, mediated.APIV4.rates.ZAR); output.TargetCurrencies.USD = Average(mediated.API.rates.USD, mediated.APIV4.rates.USD); output.TargetCurrencies.MXN = Average(mediated.API.rates.MXN, mediated.APIV4.rates.MXN); output.TargetCurrencies.SGD = Average(mediated.API.rates.SGD, mediated.APIV4.rates.SGD); output.TargetCurrencies.AUD = Average(mediated.API.rates.AUD, mediated.APIV4.rates.AUD); output.TargetCurrencies.ILS = Average(mediated.API.rates.ILS, mediated.APIV4.rates.ILS); output.TargetCurrencies.KRW = Average(mediated.API.rates.KRW, mediated.APIV4.rates.KRW); output.TargetCurrencies.PLN = Average(mediated.API.rates.PLN, mediated.APIV4.rates.PLN); return(output); }
public static void Main(string[] args) { Console.WriteLine("Press any key to start extracting process..."); Console.ReadKey(); try { Console.WriteLine("Starting integration..."); MediatedSchema mediated = Extractor.GetOutputFromWeb("EUR"); Console.WriteLine("Mediated schema object deserialized"); Console.WriteLine("Extraction successful"); Console.WriteLine("Starting transformation..."); bool differentCurrency, differentDate; Validator.ValidateMediatedSchemaObject(mediated, out differentCurrency, out differentDate); if (differentCurrency) { Console.WriteLine("Curriencies are different. Validation failed. Stopping."); Console.ReadKey(); return; } if (differentDate) { Console.WriteLine("Dates are different. Validation failed. Stopping."); Console.ReadKey(); return; } FinalOutput finalOutput = Transformator.TransformToOutput(mediated); string serialized = Serializer.SerializeFinalOutput(finalOutput); Console.WriteLine("Transformation completed"); Console.ReadKey(); } catch (Exception e) { Console.WriteLine("Exception occured. Logging details..."); Logger.LogException("ErrorLogs.log", e); Console.WriteLine("Logging finished. Press any key to stop application"); Console.ReadKey(); } }