async public Task <object[]> ExecuteAsync(TableauData data) { //trending search term var arg1Name = TableauKeywords.Arg(0); if (!data.ContainsKey(arg1Name)) { throw new MissingFieldException("Trending Query cannot run. Search term field is missing."); } //arg data var searchTerms = data[arg1Name].StringData; var results = new object[searchTerms.Length]; var r = new Random(); for (var i = 0; i < results.Length; i++) { //simulate changing exposure per hour. var hashOfNames = searchTerms[i].GetHashCode(); var modOfHash = hashOfNames % 50; var randomNumber = r.Next(1, 100000); var shippingRate = 10 + modOfHash + randomNumber; results[i] = shippingRate; } return(await Task.FromResult(results)); }
async public Task <object[]> ExecuteAsync(TableauData data) { //country and region code var arg1Name = TableauKeywords.Arg(0); var arg2Name = TableauKeywords.Arg(1); if (!data.ContainsKey(arg1Name) || !data.ContainsKey(arg2Name)) { throw new MissingFieldException("Shipping Rate Query cannot run. " + "Some fields are missing."); } //arg data var countryCodes = data[arg1Name].StringData; var postalCodes = data[arg2Name].StringData; var results = new object[countryCodes.Length]; var r = new Random(); for (var i = 0; i < results.Length; i++) { //simulate changing shipping rates. var hashOfNames = (countryCodes[i], postalCodes[i]).GetHashCode(); var modOfHash = hashOfNames % 50; var randomNumber = r.Next(1, 100) / 10d; var shippingRate = 100 + modOfHash + randomNumber; results[i] = shippingRate; } return(await Task.FromResult(results)); }
async public Task <object[]> ExecuteAsync(TableauData data) { var currencyOption = base.Option; var client = HttpClientFactory.CreateClient("Currency Query Client"); var request = new HttpRequestMessage(HttpMethod.Get, $"http://api.exchangeratesapi.io/latest?access_key=[your access key]"); var response = await client.SendAsync(request); if (response.IsSuccessStatusCode) { var responseString = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseString); var currencyJson = JsonDocument.Parse(responseString); var jsonRates = currencyJson.RootElement.GetProperty("rates"); if (jsonRates.TryGetProperty(currencyOption, out var rateJson)) { var rate = rateJson.GetDouble(); return(await Task.FromResult(new object[1] { rate })); } else { throw new HttpRequestException("Currency Request Failed: " + $"{currencyOption} not found."); } } else { throw new HttpRequestException("Currency Request Failed: " + $"StatusCode: {response.StatusCode}"); } }
public static TableauCommand GetFromJsonElement(JsonElement json) { var script = json.GetProperty(TableauKeywords.Script).ToString(); var dataJson = json.GetProperty(TableauKeywords.Data); var query = QueryFactory.GetQuery(script); var tableauData = new TableauData(); for (var i = 0; i < query.Types.Length; i++) { var argName = TableauKeywords.Arg(i); var argJson = dataJson.GetProperty(argName); var argType = query.Types[i]; var dataField = CreateTableauDataField(argJson, argType); tableauData.Add(argName, dataField); } return(new TableauCommand(script, query, tableauData)); }
public TableauCommand(string script, IQuery query, TableauData data) { Script = script; Query = query; Data = data; }