public static void Validate(this DatasetDefinition dataset) { if (string.IsNullOrWhiteSpace(dataset.DatasetName)) { throw new KeenException("DatasetDefinition must have a name."); } if (string.IsNullOrWhiteSpace(dataset.DisplayName)) { throw new KeenException("DatasetDefinition must have a display name."); } if (null == dataset.IndexBy || string.IsNullOrWhiteSpace(dataset.IndexBy.FirstOrDefault())) { throw new KeenException("DatasetDefinition must specify a property by which to " + "index."); } if (null == dataset.Query) { throw new KeenException("DatasetDefinition must contain a query to be cached."); } dataset.Query.ValidateForCachedDataset(); }
public async Task <DatasetDefinition> CreateDatasetAsync(DatasetDefinition dataset) { if (string.IsNullOrWhiteSpace(_masterKey)) { throw new KeenException("An API MasterKey is required to get dataset results."); } // Validate if (null == dataset) { throw new KeenException("An instance of DatasetDefinition must be provided"); } // This throws if dataset is not valid. dataset.Validate(); var content = JsonConvert.SerializeObject(dataset, SerializerSettings); var responseMsg = await _keenHttpClient .PutAsync(GetDatasetUrl(dataset.DatasetName), _masterKey, content) .ConfigureAwait(continueOnCapturedContext: false); var responseString = await responseMsg .Content .ReadAsStringAsync() .ConfigureAwait(continueOnCapturedContext: false); var response = JObject.Parse(responseString); KeenUtil.CheckApiErrorCode(response); if (!responseMsg.IsSuccessStatusCode) { throw new KeenException($"Request failed with status: {responseMsg.StatusCode}"); } return(JsonConvert.DeserializeObject <DatasetDefinition>(responseString, SerializerSettings)); }