From 52269e6d7fb73b61fd243a4db089f2298354e23a Mon Sep 17 00:00:00 2001 From: Yohan Guerin Date: Mon, 27 May 2019 17:27:27 -0400 Subject: [PATCH] Add workaround for currency and ratio api calls in order to bypass CORS policy --- .../DataLoaders/CurrencyHttpClient.cs | 24 ++++++------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/src/Calculator.Shared/DataLoaders/CurrencyHttpClient.cs b/src/Calculator.Shared/DataLoaders/CurrencyHttpClient.cs index 9a48113c..c2319f94 100644 --- a/src/Calculator.Shared/DataLoaders/CurrencyHttpClient.cs +++ b/src/Calculator.Shared/DataLoaders/CurrencyHttpClient.cs @@ -17,8 +17,8 @@ namespace CalculatorApp.DataLoaders string m_responseLanguage; string m_sourceCurrencyCode; - static string sc_MetadataUriLocalizeFor = "https://go.microsoft.com/fwlink/?linkid=2041093&localizeFor="; - static string sc_RatiosUriRelativeTo = "https://go.microsoft.com/fwlink/?linkid=2041339&localCurrency="; + static string sc_MetadataUriLocalizeFor = "https://cors-anywhere.herokuapp.com/https://go.microsoft.com/fwlink/?linkid=2041093&localizeFor="; + static string sc_RatiosUriRelativeTo = "https://cors-anywhere.herokuapp.com/https://go.microsoft.com/fwlink/?linkid=2041339&localCurrency="; public CurrencyHttpClient() { @@ -26,30 +26,20 @@ namespace CalculatorApp.DataLoaders m_responseLanguage = "en-US"; } - public void SetSourceCurrencyCode(String sourceCurrencyCode) + public void SetSourceCurrencyCode(string sourceCurrencyCode) { m_sourceCurrencyCode = sourceCurrencyCode; } - public void SetResponseLanguage(String responseLanguage) + public void SetResponseLanguage(string responseLanguage) { m_responseLanguage = responseLanguage; } - public Task GetCurrencyMetadata() - { - string uri = sc_MetadataUriLocalizeFor + m_responseLanguage; - var metadataUri = new Uri(uri); + public async Task GetCurrencyMetadata() => await ExecuteRequestAsync(sc_MetadataUriLocalizeFor + m_responseLanguage); - return m_client.GetStringAsync(metadataUri); - } + public async Task GetCurrencyRatios() => await ExecuteRequestAsync(sc_RatiosUriRelativeTo + m_sourceCurrencyCode); - public Task GetCurrencyRatios() - { - string uri = sc_RatiosUriRelativeTo + m_sourceCurrencyCode; - var ratiosUri = new Uri(uri); - - return m_client.GetStringAsync(ratiosUri); - } + private async Task ExecuteRequestAsync(string url) => await m_client.GetStringAsync(new Uri(url)); } }