Example #1
0
        public void Live_Replace_Data_In_Dataset()
        {
            // Arrange
            var client = new GeckoConnect();
            var obj    = new GeckoDataset()
            {
                Data = new List <Dictionary <string, object> >()
                {
                    new Dictionary <string, object>()
                    {
                        { "timestamp", "2016-01-01T12:00:00Z" },
                        { "amount", 819 }
                    },
                    new Dictionary <string, object>()
                    {
                        { "timestamp", "2016-01-02T12:00:00Z" },
                        { "amount", 409 }
                    },
                    new Dictionary <string, object>()
                    {
                        { "timestamp", "2016-01-03T12:00:00Z" },
                        { "amount", 164 }
                    }
                }
            };
            var datasetName = "test";

            // Act
            Assert.AreNotEqual("<api key here>", this.apiKey);
            var result = client.UpdateDataset(obj, datasetName, this.apiKey);

            // Assert
            Assert.IsNotNull(result);
        }
Example #2
0
        /// <summary>
        /// Allows the replacement of data in a dataset
        /// </summary>
        /// <param name="payload">The dataset to send</param>
        /// <param name="name">The name of the dataset</param>
        /// <param name="apiKey">The api key</param>
        /// <returns>True if successful, throws GeckoException otherwise.</returns>
        public bool UpdateDataset(GeckoDataset payload, string name, string apiKey)
        {
            var client = new RestClient("https://api.geckoboard.com")
            {
                Authenticator = new HttpBasicAuthenticator(apiKey, string.Empty),
                UserAgent     = UserAgent
            };

            var request = new RestRequest($"datasets/{name}/data", Method.PUT)
            {
                RequestFormat = DataFormat.Json
            };

            request.AddHeader("Content-Type", "application/json");
            request.JsonSerializer = new RestSharpJsonNetSerializer();
            request.AddParameter("application/json", request.JsonSerializer.Serialize(payload), ParameterType.RequestBody);

            var response = client.Execute(request);

            if (response.StatusCode != System.Net.HttpStatusCode.OK)
            {
                throw new GeckoException(response.StatusDescription, response.Content);
            }

            return(true);
        }
Example #3
0
        public void Live_Create_Dataset()
        {
            // Arrange
            var client = new GeckoConnect();
            var obj    = new GeckoDataset()
            {
                Fields = new Dictionary <string, IDatasetField>()
                {
                    { "amount", new DatasetField(DatasetFieldType.number, "Amount") },
                    { "timestamp", new DatasetField(DatasetFieldType.datetime, "Date") }
                },
                UniqueBy = new List <string>()
                {
                    "timestamp"
                }
            };
            var datasetName = $"test_{Guid.NewGuid().ToString()}";

            // Act
            Assert.AreNotEqual("<api key here>", this.apiKey);
            var result = client.CreateDataset(obj, datasetName, this.apiKey);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(datasetName, result.Id);
            Assert.IsTrue(DateTime.Now > result.CreatedAt);
            Assert.IsTrue(DateTime.Now > result.UpdatedAt);

            client.DeleteDataset(datasetName, this.apiKey);
        }
Example #4
0
        /// <summary>
        /// Method of generically converting datatable to
        /// </summary>
        /// <param name="dataTable"></param>
        /// <returns></returns>
        public static GeckoDataset ConvertToDataset(this DataTable dataTable)
        {
            var retVal = new GeckoDataset();

            var fields = new Dictionary <string, IDatasetField>();

            foreach (DataColumn dataTableColumn in dataTable.Columns)
            {
                fields.Add(dataTableColumn.ColumnName.ToLowerInvariant(), new DatasetField(GetDatasetFieldType(dataTableColumn.DataType), dataTableColumn.ColumnName));
            }
            retVal.Fields = fields;

            List <Dictionary <string, object> > data = new List <Dictionary <string, object> >();

            foreach (DataRow dataTableRow in dataTable.Rows)
            {
                Dictionary <string, object> rowData = new Dictionary <string, object>();
                for (int i = 0; i < dataTable.Columns.Count; i++)
                {
                    var dataToInsert = dataTableRow[dataTable.Columns[i]];
                    rowData.Add(dataTable.Columns[i].ColumnName.ToLowerInvariant(), dataToInsert);
                }
                data.Add(rowData);
            }
            retVal.Data = data;

            return(retVal);
        }
Example #5
0
        public void Live_Replace_Data_In_Dataset()
        {
            // Arrange
            var client = new GeckoConnect();

            var obj = new GeckoDataset()
            {
                Fields = new Dictionary <string, IDatasetField>()
                {
                    { "amount", new DatasetField(DatasetFieldType.Number, "Amount") },
                    { "timestamp", new DatasetField(DatasetFieldType.DateTime, "Date") }
                },
                UniqueBy = new List <string>()
                {
                    "timestamp"
                }
            };
            var datasetName = $"test_{Guid.NewGuid().ToString()}";

            // Act
            var result = client.CreateDataset(obj, datasetName, _apiKey);

            var obj2 = new GeckoDataset()
            {
                Data = new List <Dictionary <string, object> >()
                {
                    new Dictionary <string, object>()
                    {
                        { "timestamp", "2016-01-01T12:00:00Z" },
                        { "amount", 819 }
                    },
                    new Dictionary <string, object>()
                    {
                        { "timestamp", "2016-01-02T12:00:00Z" },
                        { "amount", 409 }
                    },
                    new Dictionary <string, object>()
                    {
                        { "timestamp", "2016-01-03T12:00:00Z" },
                        { "amount", 164 }
                    }
                }
            };

            // Act
            Assert.AreNotEqual("<api key here>", _apiKey);
            var result2 = client.UpdateDataset(obj2, datasetName, _apiKey);

            // Assert
            Assert.IsNotNull(result);

            client.DeleteDataset(datasetName, _apiKey);
        }
Example #6
0
        public void Can_Serialize_Dataset()
        {
            var obj = new GeckoDataset()
            {
                Fields = new Dictionary <string, IDatasetField>()
                {
                    { "amount", new DatasetField(DatasetFieldType.number, "Amount") },
                    { "timestamp", new DatasetField(DatasetFieldType.datetime, "Date") }
                },
                UniqueBy = new List <string>()
                {
                    "timestamp"
                }
            };

            // Act
            var result = JsonConvert.SerializeObject(obj, Formatting.Indented);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(!string.IsNullOrWhiteSpace(result));
        }
        public void Run(ConfigurationDataset configBoard)
        {
            try
            {
                var geckoboardClient = new GeckoboardClient(configBoard.GeckoBoadApiKey);
                var canConnect       = geckoboardClient.Ping();

                var client = geckoboardClient.Datasets();
                try
                {
                    client.Delete(configBoard.DataSetName);
                    Console.WriteLine($"Deleted {configBoard.DataSetName} successfully : {DateTime.Now}");
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    var original = Console.BackgroundColor;
                    Console.BackgroundColor = ConsoleColor.Red;
                    Console.WriteLine(e);
                    Console.BackgroundColor = original;
                }

                var cleanBoard = new GeckoDataset()
                {
                    Fields   = configBoard.Fields,
                    UniqueBy = configBoard.UniqueBy,
                };
                try
                {
                    string jsonFields1 = cleanBoard.JSon();
                    var    dataset     = client.FindOrCreateByJson(configBoard.DataSetName, jsonFields1);
                    Console.WriteLine($"created {configBoard.DataSetName} successfully : {DateTime.Now}");
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    var original = Console.BackgroundColor;
                    Console.BackgroundColor = ConsoleColor.Red;
                    Console.WriteLine(e);
                    Console.BackgroundColor = original;
                }

                var objupd = new GeckoDataset()
                {
                    Data = new List <Dictionary <string, object> >()
                };

                using (IDbConnection conn = new SnowflakeDbConnection())
                {
                    conn.ConnectionString = configBoard.SnowflakeConnection;

                    conn.Open();

                    IDbCommand cmd = conn.CreateCommand();
                    cmd.CommandText = configBoard.DataStatement;
                    IDataReader reader   = cmd.ExecuteReader();
                    var         dbObject = new ExpandoObject();
                    var         cols     = reader.GetSchemaTable().Rows;
                    for (int i = 0; i < cols.Count; i++)
                    {
                        object v = cols[i][0];
                        ((IDictionary <string, object>)dbObject).Add(v.ToString(), v);
                    }
                    List <dynamic> personList = new List <dynamic>();
                    var            allSales   = reader.DataReaderMapToList(dbObject);
                    conn.Close();

                    foreach (ExpandoObject saleOrder in allSales)
                    {
                        Dictionary <string, object> item = new Dictionary <string, object>()
                        {
                        };

                        foreach (var cleanBoardField in cleanBoard.Fields)
                        {
                            var entry = saleOrder.SingleOrDefault(p => p.Key.ToUpper().Equals(cleanBoardField.Value.Name,
                                                                                              StringComparison.InvariantCultureIgnoreCase));
                            var colValue   = entry.Value;
                            var hasNoValue = ReferenceEquals(colValue, null) || colValue == DBNull.Value;
                            if (hasNoValue)
                            {
                                if (cleanBoardField.Value.Type == DatasetFieldType.datetime || cleanBoardField.Value.Type == DatasetFieldType.date)
                                {
                                    if (cleanBoardField.Value.DefaultValue == "now")
                                    {
                                        item.Add(cleanBoardField.Value.Name.ToLower(), DateTime.Now);
                                    }
                                    else
                                    {
                                        item.Add(cleanBoardField.Value.Name.ToLower(), DateTime.Parse(cleanBoardField.Value.DefaultValue));
                                    }
                                }
                                else
                                {
                                    item.Add(cleanBoardField.Value.Name.ToLower(), "");
                                }
                            }
                            else
                            {
                                item.Add(cleanBoardField.Value.Name.ToLower(), colValue);
                            }
                        }
                        objupd.Data.Add(item);
                    }
                }
                // Act
                var jsonFields = objupd.JSon();
                var result     = client.UpdateDataset(jsonFields, configBoard.DataSetName);
                Console.WriteLine($"uploaded successfully: {configBoard.DataSetName} on: {DateTime.Now}");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                var original = Console.BackgroundColor;
                Console.BackgroundColor = ConsoleColor.Red;
                Console.WriteLine(e);
                Console.BackgroundColor = original;
            }
        }
Example #8
0
        public static string JSon(this GeckoDataset dataset)
        {
            var serializeObject = JsonConvert.SerializeObject(dataset);

            return(serializeObject);
        }