internal Datasets(IProjectSettings prjSettings, IKeenHttpClientProvider keenHttpClientProvider) { if (null == prjSettings) { throw new ArgumentNullException(nameof(prjSettings), "Project Settings must be provided."); } if (null == keenHttpClientProvider) { throw new ArgumentNullException(nameof(keenHttpClientProvider), "A KeenHttpClient provider must be provided."); } if (string.IsNullOrWhiteSpace(prjSettings.KeenUrl) || !Uri.IsWellFormedUriString(prjSettings.KeenUrl, UriKind.Absolute)) { throw new KeenException( "A properly formatted KeenUrl must be provided via Project Settings."); } var serverBaseUrl = new Uri(prjSettings.KeenUrl); _keenHttpClient = keenHttpClientProvider.GetForUrl(serverBaseUrl); _cachedDatasetRelativeUrl = KeenHttpClient.GetRelativeUrl(prjSettings.ProjectId, KeenConstants.DatasetsResource); _masterKey = prjSettings.MasterKey; _readKey = prjSettings.ReadKey; }
internal Queries(IProjectSettings prjSettings, IKeenHttpClientProvider keenHttpClientProvider) { if (null == prjSettings) { throw new ArgumentNullException(nameof(prjSettings), "Project Settings must be provided."); } if (null == keenHttpClientProvider) { throw new ArgumentNullException(nameof(keenHttpClientProvider), "A KeenHttpClient provider must be provided."); } if (string.IsNullOrWhiteSpace(prjSettings.KeenUrl) || !Uri.IsWellFormedUriString(prjSettings.KeenUrl, UriKind.Absolute)) { throw new KeenException( "A properly formatted KeenUrl must be provided via Project Settings."); } var serverBaseUrl = new Uri(prjSettings.KeenUrl); _keenHttpClient = keenHttpClientProvider.GetForUrl(serverBaseUrl); _queryRelativeUrl = KeenHttpClient.GetRelativeUrl(prjSettings.ProjectId, KeenConstants.QueriesResource); // TODO : The Python SDK has changed to not automatically falling back, but rather // throwing so that client devs learn to use the most appropriate key. So here we // really could or should just demand the ReadKey. _key = string.IsNullOrWhiteSpace(prjSettings.MasterKey) ? prjSettings.ReadKey : prjSettings.MasterKey; }