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); }
/// <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); }
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); }
/// <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); }
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); }
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; } }
public static string JSon(this GeckoDataset dataset) { var serializeObject = JsonConvert.SerializeObject(dataset); return(serializeObject); }