Пример #1
0
        public async Task <Response <SipConfiguration> > GetSipConfigurationAsync(CancellationToken cancellationToken = default)
        {
            using var message = CreateGetSipConfigurationRequest();
            await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false);

            switch (message.Response.Status)
            {
            case 200:
            {
                SipConfiguration value = default;
                using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false);

                value = SipConfiguration.DeserializeSipConfiguration(document.RootElement);
                return(Response.FromValue(value, message.Response));
            }
Пример #2
0
 /// <summary>
 /// Set SIP routing configuration for resource. Other configuration settings are not affected.
 /// </summary>
 /// <param name="routes">New list of <see cref="SipTrunkRoute"/>.</param>
 /// <param name="cancellationToken">Optional cancellation token.</param>
 public virtual Response SetRoutes(
     IReadOnlyList <SipTrunkRoute> routes,
     CancellationToken cancellationToken = default)
 {
     using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(SipRoutingClient)}.{nameof(SetRoutes)}");
     scope.Start();
     try
     {
         var config   = new SipConfiguration(routes);
         var response = _restClient.PatchSipConfiguration(config, cancellationToken);
         return(response.GetRawResponse());
     }
     catch (Exception ex)
     {
         scope.Failed(ex);
         throw;
     }
 }
Пример #3
0
        /// <summary>
        /// Delete <see cref="SipTrunk"/>.
        /// </summary>
        /// <param name="fqdn">FQDN of a <see cref="SipTrunk"/> to be deleted.</param>
        /// <param name="cancellationToken">Optional cancellation token.</param>
        public virtual Response DeleteTrunk(
            string fqdn,
            CancellationToken cancellationToken = default)
        {
            var removeConfig = new SipConfiguration(new Dictionary <string, SipTrunk> {
                { fqdn, null }
            });

            using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(SipRoutingClient)}.{nameof(DeleteTrunk)}");
            scope.Start();
            try
            {
                var response = _restClient.PatchSipConfiguration(removeConfig, cancellationToken);
                return(response.GetRawResponse());
            }
            catch (Exception ex)
            {
                scope.Failed(ex);
                throw;
            }
        }
Пример #4
0
        /// <summary>
        /// Set <see cref="SipTrunk"/> for resource. Other configuration settings are not affected.
        /// </summary>
        /// <param name="trunk">SIP trunk configuration.</param>
        /// <param name="cancellationToken">Optional cancellation token.</param>
        public virtual async Task <Response> SetTrunkAsync(
            SipTrunk trunk,
            CancellationToken cancellationToken = default)
        {
            var config = new SipConfiguration(new Dictionary <string, SipTrunk> {
                { trunk.Fqdn, trunk }
            });

            using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(SipRoutingClient)}.{nameof(SetTrunk)}");
            scope.Start();
            try
            {
                var response = await _restClient.PatchSipConfigurationAsync(config, cancellationToken).ConfigureAwait(false);

                return(response.GetRawResponse());
            }
            catch (Exception ex)
            {
                scope.Failed(ex);
                throw;
            }
        }
Пример #5
0
        internal HttpMessage CreatePatchSipConfigurationRequest(SipConfiguration body)
        {
            var message = _pipeline.CreateMessage();
            var request = message.Request;

            request.Method = RequestMethod.Patch;
            var uri = new RawRequestUriBuilder();

            uri.AppendRaw(endpoint, false);
            uri.AppendPath("/sip", false);
            uri.AppendQuery("api-version", apiVersion, true);
            request.Uri = uri;
            request.Headers.Add("Accept", "application/json");
            if (body != null)
            {
                request.Headers.Add("Content-Type", "application/merge-patch+json");
                var content = new Utf8JsonRequestContent();
                body.Write(content.JsonWriter);
                request.Content = content;
            }
            return(message);
        }