Exemplo n.º 1
0
        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));
        }
Exemplo n.º 3
0
        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}");
            }
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
 public TableauCommand(string script, IQuery query, TableauData data)
 {
     Script = script;
     Query  = query;
     Data   = data;
 }