private Uri GetUsersUri(string domain, string?username = null)
        {
            var builder = new UriBuilder(_serviceUriProvider.GetRandomManagementUri())
            {
                Path = $"settings/rbac/users/{domain}"
            };

            if (!string.IsNullOrWhiteSpace(username))
            {
                builder.Path += $"/{username}";
            }

            return(builder.Uri);
        }
        public async Task <Dictionary <string, int> > GetPendingMutationsAsync(GetPendingAnalyticsMutationsOptions?options = null)
        {
            options ??= new GetPendingAnalyticsMutationsOptions();
            _logger.LogInformation("Getting pending mutations.");
            try
            {
                var builder = new UriBuilder(_serviceUriProvider.GetRandomManagementUri());
                builder.Path += "analytics/node/agg/stats/remaining";
                var uri = builder.Uri;
                using var httpClient = _httpClientFactory.Create();
                var result = await httpClient.GetAsync(uri, options.TokenValue).ConfigureAwait(false);

                result.EnsureSuccessStatusCode();
                var content = await result.Content.ReadAsStringAsync().ConfigureAwait(false);

                var json = JToken.Parse(content);

                return(parseResult(json));
            }
            catch (Exception exception)
            {
                _logger.LogError(exception, "Failed to retrieve pending mutations.");
                throw;
            }
        }
        public async Task <IEnumerable <DesignDocument> > GetAllDesignDocumentsAsync(DesignDocumentNamespace @namespace, GetAllDesignDocumentsOptions?options = null)
        {
            options ??= GetAllDesignDocumentsOptions.Default;
            var uri = new UriBuilder(_serviceUriProvider.GetRandomManagementUri())
            {
                Path = $"pools/default/buckets/{_bucketName}/ddocs"
            }.Uri;

            _logger.LogInformation("Attempting to get all design documents for bucket {_bucketName} - {uri}",
                                   _redactor.MetaData(_bucketName), _redactor.SystemData(uri));

            try
            {
                using var httpClient = _httpClientFactory.Create();

                var result = await httpClient.GetAsync(uri, options.TokenValue).ConfigureAwait(false);

                result.EnsureSuccessStatusCode();

                var content = await result.Content.ReadAsStringAsync().ConfigureAwait(false);

                var json = JObject.Parse(content);

                var designDocuments = new List <DesignDocument>();
                if (json.TryGetValue("rows", out var rows))
                {
                    foreach (var row in rows)
                    {
                        var designDoc = new DesignDocument
                        {
                            Name = row.SelectToken("doc.meta.id") !.Value <string>() !.Replace("_design/", string.Empty)
                        };

                        foreach (var view in row.SelectTokens("doc.json.views"))
                        {
                            var name   = view.First !.Path.Substring(view.First.Path.LastIndexOf(".", StringComparison.Ordinal) + 1);
                            var map    = view.First !.First !.SelectToken("map");
                            var reduce = view.First.First.SelectToken("reduce");
                            designDoc.Views.Add(name, new View
                            {
                                Map    = map?.Value <string>(),
                                Reduce = reduce?.Value <string>()
                            });
                        }

                        designDocuments.Add(designDoc);
                    }
                }

                return(designDocuments);
            }
            catch (Exception exception)
            {
                _logger.LogError(exception, "Failed to get all design documents for bucket {_bucketName} - {uri}",
                                 _redactor.MetaData(_bucketName), _redactor.SystemData(uri));
                throw;
            }
        }
        internal Uri GetUri(string path)
        {
            var builder = new UriBuilder(_serviceUriProvider.GetRandomManagementUri())
            {
                Path = path
            };

            return(builder.Uri);
        }
        private Uri GetUri(string?bucketName = null)
        {
            var builder = new UriBuilder(_serviceUriProvider.GetRandomManagementUri())
            {
                Path = "pools/default/buckets"
            };

            if (!string.IsNullOrWhiteSpace(bucketName))
            {
                builder.Path += $"/{bucketName}";
            }

            return(builder.Uri);
        }
Ejemplo n.º 6
0
        private Uri GetUri(string?scopeName = null, string?collectionName = null)
        {
            var builder = new UriBuilder(_serviceUriProvider.GetRandomManagementUri())
            {
                Path = $"pools/default/buckets/{_bucketName}/collections"
            };

            if (!string.IsNullOrWhiteSpace(scopeName))
            {
                builder.Path += $"/{scopeName}";
            }

            if (!string.IsNullOrWhiteSpace(collectionName))
            {
                builder.Path += $"/{collectionName}";
            }

            return(builder.Uri);
        }