public FilterQueryBuilder()
 {
     m_requestUriBuilder = new RequestUriBuilder
     {
         QueryParameters = new Dictionary<string, string>(),
         RestUriPath = "/filter"
     };
 }
        public virtual DynamicRequest DetectEntireSeriesRequest()
        {
            Request req = HttpPipeline.CreateRequest();

            req.Method = RequestMethod.Post;

            RequestUriBuilder uriBuilder = new RequestUriBuilder();

            uriBuilder.Reset(Endpoint);
            uriBuilder.AppendPath("anomalydetector/v1.0/timeseries/entire/detect", false);

            req.Uri = uriBuilder;
            req.Headers.SetValue("Content-Type", "application/json");

            return(new DynamicRequest(req, HttpPipeline));
        }
        public static async Task <List <SubscriptionInfo> > GetSubscriptionsAsync(ApiConfiguration configuration, HttpClient httpClient, string dataType = null)
        {
            var requestUri = RequestUriBuilder.Build(configuration, "api/subscription/getsubscriptions");

            if (!string.IsNullOrEmpty(dataType))
            {
                requestUri += $"?dataType={Uri.EscapeDataString(dataType)}";
            }
            var response = await httpClient.GetAsync(requestUri);

            ErrorReporter.EnsureSuccesStatusCode(response);

            var stream = await response.Content.ReadAsStreamAsync();

            return(await stream.ReadAllSearchResultsAsync <SubscriptionInfo>());
        }
        public static async Task ReportTo(
            ApiConfiguration configuration,
            HttpClient httpClient,
            string recipient,
            string dataType,
            string dataObjectId)
        {
            var requestUri = RequestUriBuilder.Build(configuration, "api/subscription/reportto");

            requestUri += $"?recipient={Uri.EscapeDataString(recipient)}";
            requestUri += $"&dataType={Uri.EscapeDataString(dataType)}";
            requestUri += $"&id={Uri.EscapeDataString(dataObjectId)}";
            var response = await httpClient.GetAsync(requestUri);

            ErrorReporter.EnsureSuccesStatusCode(response);
        }
        public static bool IsAvailable(ApiConfiguration configuration, HttpClient httpClient)
        {
            var requestUri = RequestUriBuilder.Build(configuration, "api/servicestatus/ping");

            try
            {
                var response = httpClient.GetAsync(requestUri).Result;
                ErrorReporter.EnsureSuccesStatusCode(response);
                var content = response.Content.ReadAsStringAsync().Result;
                return(content.ToLowerInvariant() == "pong");
            }
            catch
            {
                return(false);
            }
        }
        public void SettingAllFields()
        {
            var selector = new SettingSelector
            {
                KeyFilter = "key",
                Fields    = SettingFields.All
            };

            var builder = new RequestUriBuilder();

            builder.Reset(new Uri("http://localhost/"));

            ConfigurationClient.BuildBatchQuery(builder, selector, null);

            Assert.AreEqual($"http://localhost/?key=key", builder.ToUri().AbsoluteUri);
        }
Esempio n. 7
0
        public void SettingAllFields()
        {
            var selector = new SettingSelector("key")
            {
                Fields = SettingFields.All
            };

            var builder = new RequestUriBuilder
            {
                Uri = new Uri("http://localhost/")
            };

            ConfigurationClient.BuildBatchQuery(builder, selector, null);

            Assert.AreEqual($"http://localhost/?key=key", builder.Uri.AbsoluteUri);
        }
        public Uri CreateFirstPageUri(string path, params ValueTuple <string, string>[] queryParams)
        {
            var firstPage = new RequestUriBuilder();

            firstPage.Reset(_vaultUri);

            firstPage.AppendPath(path, escape: false);
            firstPage.AppendQuery("api-version", ApiVersion);

            foreach ((string, string)tuple in queryParams)
            {
                firstPage.AppendQuery(tuple.Item1, tuple.Item2);
            }

            return(firstPage.ToUri());
        }
Esempio n. 9
0
        public static async Task <Stream> GetViewAsync(
            ApiConfiguration configuration,
            HttpClient httpClient,
            string viewId,
            ResultFormat resultFormat,
            Dictionary <string, string> parameters = null)
        {
            var requestUri = RequestUriBuilder.Build(configuration, "api/view/get");

            requestUri += BuildGetQuery(viewId, parameters, resultFormat);
            var response = await httpClient.GetAsync(requestUri);

            ErrorReporter.EnsureSuccesStatusCode(response);

            return(await response.Content.ReadAsStreamAsync());
        }
        public void SettingQueryToEmptyRemovesQuestionMark(string query)
        {
            var uriBuilder = new RequestUriBuilder
            {
                Scheme = "http",
                Host   = "localhost",
                Port   = 80,
                Query  = "a"
            };

            Assert.AreEqual("http://localhost/?a", uriBuilder.ToUri().ToString());

            uriBuilder.Query = query;

            Assert.AreEqual("http://localhost/", uriBuilder.ToUri().ToString());
        }
        public void FilterOnlyLabel()
        {
            var label    = "my-label";
            var selector = new SettingSelector
            {
                LabelFilter = label
            };

            var builder = new RequestUriBuilder();

            builder.Reset(new Uri("http://localhost/"));

            ConfigurationClient.BuildBatchQuery(builder, selector, null);

            Assert.AreEqual($"http://localhost/?label={label}", builder.ToUri().AbsoluteUri);
        }
        public void FilterReservedCharacter()
        {
            var selector = new SettingSelector
            {
                KeyFilter   = @"my_key,key\,key",
                LabelFilter = @"my_label,label\,label"
            };

            var builder = new RequestUriBuilder();

            builder.Reset(new Uri("http://localhost/"));

            ConfigurationClient.BuildBatchQuery(builder, selector, null);

            Assert.AreEqual(@"http://localhost/?key=my_key%2Ckey%5C%2Ckey&label=my_label%2Clabel%5C%2Clabel", builder.ToUri().AbsoluteUri);
        }
        public void AppendingPathWithSpecialCharacters()
        {
            var uriBuilder = new RequestUriBuilder();

            uriBuilder.Reset(new Uri("http://localhost/"));
            uriBuilder.AppendPath("/");
            uriBuilder.AppendPath("~!@#$%^&*()_+");
            uriBuilder.AppendPath("b/");

            Assert.AreEqual("http://localhost/~%21%40%23%24%25%5E%26%2A%28%29_%2Bb%2F", uriBuilder.ToString());
#if NETCOREAPP
            Assert.AreEqual("http://localhost/~%21%40%23%24%25^%26%2A%28%29_%2Bb%2F", uriBuilder.ToUri().ToString());
#else
            Assert.AreEqual("http://localhost/~!%40%23%24%25^%26*()_%2Bb%2F", uriBuilder.ToUri().ToString());
#endif
        }
        public Uri CreateFirstPageUri(string path, params ValueTuple <string, string>[] queryParams)
        {
            var firstPage = new RequestUriBuilder
            {
                Uri = _vaultUri,
            };

            firstPage.AppendPath(path);
            firstPage.AppendQuery("api-version", ApiVersion);

            foreach (var tuple in queryParams)
            {
                firstPage.AppendQuery(tuple.Item1, tuple.Item2);
            }

            return(firstPage.Uri);
        }
Esempio n. 15
0
        public async Task <ViewConfiguration> GetRepositoriesAsync(
            string vcb = default,
            CancellationToken cancellationToken = default
            )
        {
            var _baseUri = Client.Options.BaseUri;
            var _url     = new RequestUriBuilder();

            _url.Reset(_baseUri);
            _url.AppendPath(
                "/api/2019-06-17/repo",
                false);

            if (!string.IsNullOrEmpty(vcb))
            {
                _url.AppendQuery("_vcb", Client.Serialize(vcb));
            }


            using (var _req = Client.Pipeline.CreateRequest())
            {
                _req.Uri    = _url;
                _req.Method = RequestMethod.Get;

                using (var _res = await Client.SendAsync(_req, cancellationToken).ConfigureAwait(false))
                {
                    if (_res.Status < 200 || _res.Status >= 300)
                    {
                        await OnGetRepositoriesFailed(_req, _res).ConfigureAwait(false);
                    }

                    if (_res.ContentStream == null)
                    {
                        await OnGetRepositoriesFailed(_req, _res).ConfigureAwait(false);
                    }

                    using (var _reader = new StreamReader(_res.ContentStream))
                    {
                        var _content = await _reader.ReadToEndAsync().ConfigureAwait(false);

                        var _body = Client.Deserialize <ViewConfiguration>(_content);
                        return(_body);
                    }
                }
            }
        }
        public static async Task <string> SubscribeAsync(
            ApiConfiguration configuration,
            HttpClient httpClient,
            string dataType,
            IList <DataModificationType> modificationTypes,
            string filter = null)
        {
            var requestUri = RequestUriBuilder.Build(configuration, "api/subscription/subscribe");
            var body       = ConstructSubscriptionBody(dataType, modificationTypes, filter);
            var response   = await httpClient.PostAsync(requestUri, body);

            ErrorReporter.EnsureSuccesStatusCode(response);

            var subscriptionId = await response.Content.ReadAsStringAsync();

            return(subscriptionId);
        }
Esempio n. 17
0
        public async Task DeletePipelineFromChannelAsync(
            int channelId,
            int pipelineId,
            CancellationToken cancellationToken = default
            )
        {
            if (channelId == default(int))
            {
                throw new ArgumentNullException(nameof(channelId));
            }

            if (pipelineId == default(int))
            {
                throw new ArgumentNullException(nameof(pipelineId));
            }

            const string apiVersion = "2019-01-16";

            var _baseUri = Client.Options.BaseUri;
            var _url     = new RequestUriBuilder();

            _url.Reset(_baseUri);
            _url.AppendPath(
                "/api/channels/{channelId}/pipelines/{pipelineId}".Replace("{channelId}", Uri.EscapeDataString(Client.Serialize(channelId))).Replace("{pipelineId}", Uri.EscapeDataString(Client.Serialize(pipelineId))),
                false);

            _url.AppendQuery("api-version", Client.Serialize(apiVersion));


            using (var _req = Client.Pipeline.CreateRequest())
            {
                _req.Uri    = _url;
                _req.Method = RequestMethod.Delete;

                using (var _res = await Client.SendAsync(_req, cancellationToken).ConfigureAwait(false))
                {
                    if (_res.Status < 200 || _res.Status >= 300)
                    {
                        await OnDeletePipelineFromChannelFailed(_req, _res).ConfigureAwait(false);
                    }


                    return;
                }
            }
        }
        private void BuildUriForRoute(string route, RequestUriBuilder builder, TextAnalyticsRequestOptions options)
        {
            builder.Reset(_baseUri);
            builder.AppendPath(TextAnalyticsRoute, escape: false);
            builder.AppendPath(_apiVersion, escape: false);
            builder.AppendPath(route, escape: false);

            if (options.IncludeStatistics)
            {
                builder.AppendQuery(ShowStatistics, "true");
            }

            if (!string.IsNullOrEmpty(options.ModelVersion))
            {
                builder.AppendQuery(ModelVersion, options.ModelVersion);
            }
        }
Esempio n. 19
0
        public static async Task <ViewInformation> CreateViewAsync(
            ApiConfiguration configuration,
            HttpClient httpClient,
            string query,
            DateTime expires,
            string viewId = null)
        {
            var requestUri = RequestUriBuilder.Build(configuration, "api/view/create");
            var body       = ConstructCreateViewBody(query, expires, viewId);
            var response   = await httpClient.PostAsync(requestUri, body);

            ErrorReporter.EnsureSuccesStatusCode(response);

            var json = await response.Content.ReadAsStringAsync();

            return(ConfiguredJsonSerializer.Deserialize <ViewInformation>(json));
        }
Esempio n. 20
0
        public async Task <IImmutableList <ContainerInformation> > ListAsync(
            bool?getSasTokens = default,
            CancellationToken cancellationToken = default
            )
        {
            var _baseUri = Client.Options.BaseUri;
            var _url     = new RequestUriBuilder();

            _url.Reset(_baseUri);
            _url.AppendPath(
                "/api/2019-06-17/storage",
                false);

            if (getSasTokens != default(bool?))
            {
                _url.AppendQuery("getSasTokens", Client.Serialize(getSasTokens));
            }


            using (var _req = Client.Pipeline.CreateRequest())
            {
                _req.Uri    = _url;
                _req.Method = RequestMethod.Get;

                using (var _res = await Client.SendAsync(_req, cancellationToken).ConfigureAwait(false))
                {
                    if (_res.Status < 200 || _res.Status >= 300)
                    {
                        await OnListFailed(_req, _res).ConfigureAwait(false);
                    }

                    if (_res.ContentStream == null)
                    {
                        await OnListFailed(_req, _res).ConfigureAwait(false);
                    }

                    using (var _reader = new StreamReader(_res.ContentStream))
                    {
                        var _content = await _reader.ReadToEndAsync().ConfigureAwait(false);

                        var _body = Client.Deserialize <IImmutableList <ContainerInformation> >(_content);
                        return(_body);
                    }
                }
            }
        }
Esempio n. 21
0
        public async Task RetrySubscriptionActionAsyncAsync(
            Guid id,
            long timestamp,
            CancellationToken cancellationToken = default
            )
        {
            if (id == default(Guid))
            {
                throw new ArgumentNullException(nameof(id));
            }

            if (timestamp == default(long))
            {
                throw new ArgumentNullException(nameof(timestamp));
            }

            const string apiVersion = "2019-01-16";

            var _baseUri = Client.Options.BaseUri;
            var _url     = new RequestUriBuilder();

            _url.Reset(_baseUri);
            _url.AppendPath(
                "/api/subscriptions/{id}/retry/{timestamp}".Replace("{id}", Uri.EscapeDataString(Client.Serialize(id))).Replace("{timestamp}", Uri.EscapeDataString(Client.Serialize(timestamp))),
                false);

            _url.AppendQuery("api-version", Client.Serialize(apiVersion));


            using (var _req = Client.Pipeline.CreateRequest())
            {
                _req.Uri    = _url;
                _req.Method = RequestMethod.Post;

                using (var _res = await Client.SendAsync(_req, cancellationToken).ConfigureAwait(false))
                {
                    if (_res.Status < 200 || _res.Status >= 300)
                    {
                        await OnRetrySubscriptionActionAsyncFailed(_req, _res).ConfigureAwait(false);
                    }


                    return;
                }
            }
        }
Esempio n. 22
0
        public async Task BulkAddLocationsAsync(
            IImmutableList <Models.AssetAndLocation> body,
            CancellationToken cancellationToken = default
            )
        {
            if (body == default(IImmutableList <Models.AssetAndLocation>))
            {
                throw new ArgumentNullException(nameof(body));
            }

            const string apiVersion = "2020-02-20";

            var _baseUri = Client.Options.BaseUri;
            var _url     = new RequestUriBuilder();

            _url.Reset(_baseUri);
            _url.AppendPath(
                "/api/assets/bulk-add-locations",
                false);

            _url.AppendQuery("api-version", Client.Serialize(apiVersion));


            using (var _req = Client.Pipeline.CreateRequest())
            {
                _req.Uri    = _url;
                _req.Method = RequestMethod.Post;

                if (body != default(IImmutableList <Models.AssetAndLocation>))
                {
                    _req.Content = RequestContent.Create(Encoding.UTF8.GetBytes(Client.Serialize(body)));
                    _req.Headers.Add("Content-Type", "application/json; charset=utf-8");
                }

                using (var _res = await Client.SendAsync(_req, cancellationToken).ConfigureAwait(false))
                {
                    if (_res.Status < 200 || _res.Status >= 300)
                    {
                        await OnBulkAddLocationsFailed(_req, _res).ConfigureAwait(false);
                    }


                    return;
                }
            }
        }
Esempio n. 23
0
        public void FilterNullLabel()
        {
            var selector = new SettingSelector()
            {
                Labels = new List <string>()
                {
                    ""
                },
            };

            var builder = new RequestUriBuilder();

            builder.Uri = new Uri("http://localhost/");
            ConfigurationClient.BuildBatchQuery(builder, selector, null);

            Assert.AreEqual("http://localhost/?key=*&label=%00", builder.Uri.AbsoluteUri);
        }
Esempio n. 24
0
        private string NormalizeUri(string uriToNormalize)
        {
            var req = new RequestUriBuilder();
            var uri = new Uri(uriToNormalize);

            req.Reset(uri);
            req.Query = "";
            NameValueCollection queryParams = HttpUtility.ParseQueryString(uri.Query);

            foreach (string param in queryParams)
            {
                req.AppendQuery(
                    param,
                    VolatileQueryParameters.Contains(param) ? VolatileValue : queryParams[param]);
            }
            return(req.ToUri().ToString());
        }
Esempio n. 25
0
        public async Task RemoveAssetLocationFromAssetAsync(
            int assetId,
            int assetLocationId,
            CancellationToken cancellationToken = default
            )
        {
            if (assetId == default(int))
            {
                throw new ArgumentNullException(nameof(assetId));
            }

            if (assetLocationId == default(int))
            {
                throw new ArgumentNullException(nameof(assetLocationId));
            }

            const string apiVersion = "2020-02-20";

            var _baseUri = Client.Options.BaseUri;
            var _url     = new RequestUriBuilder();

            _url.Reset(_baseUri);
            _url.AppendPath(
                "/api/assets/{assetId}/locations/{assetLocationId}".Replace("{assetId}", Uri.EscapeDataString(Client.Serialize(assetId))).Replace("{assetLocationId}", Uri.EscapeDataString(Client.Serialize(assetLocationId))),
                false);

            _url.AppendQuery("api-version", Client.Serialize(apiVersion));


            using (var _req = Client.Pipeline.CreateRequest())
            {
                _req.Uri    = _url;
                _req.Method = RequestMethod.Delete;

                using (var _res = await Client.SendAsync(_req, cancellationToken).ConfigureAwait(false))
                {
                    if (_res.Status < 200 || _res.Status >= 300)
                    {
                        await OnRemoveAssetLocationFromAssetFailed(_req, _res).ConfigureAwait(false);
                    }


                    return;
                }
            }
        }
Esempio n. 26
0
        private string GetOriginalPath()
        {
            // applicationInitialization request might have trailing \0 character included in the length
            // check and skip it
            var rawUrlInBytes = GetRawUrlInBytes();

            if (rawUrlInBytes.Length > 0 && rawUrlInBytes[rawUrlInBytes.Length - 1] == 0)
            {
                var newRawUrlInBytes = new byte[rawUrlInBytes.Length - 1];
                Array.Copy(rawUrlInBytes, newRawUrlInBytes, newRawUrlInBytes.Length);
                rawUrlInBytes = newRawUrlInBytes;
            }

            var originalPath = RequestUriBuilder.DecodeAndUnescapePath(rawUrlInBytes);

            return(originalPath);
        }
Esempio n. 27
0
        public async Task CancelAsync(
            string job,
            string jobCancellationToken         = default,
            CancellationToken cancellationToken = default
            )
        {
            if (string.IsNullOrEmpty(job))
            {
                throw new ArgumentNullException(nameof(job));
            }

            const string apiVersion = "2019-06-17";

            var _baseUri = Client.Options.BaseUri;
            var _url     = new RequestUriBuilder();

            _url.Reset(_baseUri);
            _url.AppendPath(
                "/api/jobs/{job}/cancel".Replace("{job}", Uri.EscapeDataString(Client.Serialize(job))),
                false);

            if (!string.IsNullOrEmpty(jobCancellationToken))
            {
                _url.AppendQuery("jobCancellationToken", Client.Serialize(jobCancellationToken));
            }
            _url.AppendQuery("api-version", Client.Serialize(apiVersion));


            using (var _req = Client.Pipeline.CreateRequest())
            {
                _req.Uri    = _url;
                _req.Method = RequestMethod.Post;

                using (var _res = await Client.SendAsync(_req, cancellationToken).ConfigureAwait(false))
                {
                    if (_res.Status < 200 || _res.Status >= 300)
                    {
                        await OnCancelFailed(_req, _res).ConfigureAwait(false);
                    }


                    return;
                }
            }
        }
Esempio n. 28
0
        public async Task <Models.Asset> GetAssetAsync(
            int id,
            CancellationToken cancellationToken = default
            )
        {
            const string apiVersion = "2020-02-20";

            var _baseUri = Client.Options.BaseUri;
            var _url     = new RequestUriBuilder();

            _url.Reset(_baseUri);
            _url.AppendPath(
                "/api/assets/{id}".Replace("{id}", Uri.EscapeDataString(Client.Serialize(id))),
                false);

            _url.AppendQuery("api-version", Client.Serialize(apiVersion));


            using (var _req = Client.Pipeline.CreateRequest())
            {
                _req.Uri    = _url;
                _req.Method = RequestMethod.Get;

                using (var _res = await Client.SendAsync(_req, cancellationToken).ConfigureAwait(false))
                {
                    if (_res.Status < 200 || _res.Status >= 300)
                    {
                        await OnGetAssetFailed(_req, _res).ConfigureAwait(false);
                    }

                    if (_res.ContentStream == null)
                    {
                        await OnGetAssetFailed(_req, _res).ConfigureAwait(false);
                    }

                    using (var _reader = new StreamReader(_res.ContentStream))
                    {
                        var _content = await _reader.ReadToEndAsync().ConfigureAwait(false);

                        var _body = Client.Deserialize <Models.Asset>(_content);
                        return(_body);
                    }
                }
            }
        }
        protected override RequestUriBuilder GetUriBase()
        {
            var builder = new RequestUriBuilder(Settings.QueueEndpoint);

            builder.AddSegment(_queueName);
            builder.AddSegment("messages");

            builder.AddParameter(ProtocolConstants.QueryParameters.NumOfMessages, _numOfMessages.ToString());

            builder.AddParameter(ProtocolConstants.QueryParameters.VisibilityTimeout, _visibilityTimeout.ToString());

            if (_messageTtl.HasValue)
            {
                builder.AddParameter(ProtocolConstants.QueryParameters.MessageTTL, _messageTtl.Value.ToString());
            }

            return(builder);
        }
Esempio n. 30
0
        public static AuthenticationResult Login(ApiConfiguration configuration, HttpClient httpClient, string username, string password)
        {
            var requestUri = RequestUriBuilder.Build(configuration, "api/account/login");

            var body     = PostBodyBuilder.ConstructBody(new LoginInformation(username, password));
            var response = httpClient.PostAsync(requestUri, body).Result;

            if (response.StatusCode != HttpStatusCode.OK && response.StatusCode != HttpStatusCode.Unauthorized)
            {
                var errorText = response.Content.ReadAsStringAsync().Result;
                throw new ApiException(response.StatusCode, errorText);
            }

            var json = response.Content.ReadAsStringAsync().Result;
            var authenticationResult = ConfiguredJsonSerializer.Deserialize <AuthenticationResult>(json);

            return(authenticationResult);
        }
Esempio n. 31
0
        public async Task <string> GetDarcVersionAsync(
            CancellationToken cancellationToken = default
            )
        {
            const string apiVersion = "2019-01-16";

            var _baseUri = Client.Options.BaseUri;
            var _url     = new RequestUriBuilder();

            _url.Reset(_baseUri);
            _url.AppendPath(
                "/api/assets/darc-version",
                false);

            _url.AppendQuery("api-version", Client.Serialize(apiVersion));


            using (var _req = Client.Pipeline.CreateRequest())
            {
                _req.Uri    = _url;
                _req.Method = RequestMethod.Get;

                using (var _res = await Client.SendAsync(_req, cancellationToken).ConfigureAwait(false))
                {
                    if (_res.Status < 200 || _res.Status >= 300)
                    {
                        await OnGetDarcVersionFailed(_req, _res).ConfigureAwait(false);
                    }

                    if (_res.ContentStream == null)
                    {
                        await OnGetDarcVersionFailed(_req, _res).ConfigureAwait(false);
                    }

                    using (var _reader = new StreamReader(_res.ContentStream))
                    {
                        var _content = await _reader.ReadToEndAsync().ConfigureAwait(false);

                        var _body = Client.Deserialize <string>(_content);
                        return(_body);
                    }
                }
            }
        }