Example #1
0
        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;
        }
Example #2
0
        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;
        }