コード例 #1
0
 public BlazorAccessTokenHttpMessageHandler(
     HttpMessageHandler inner,
     BlazorHttpConnection httpConnection)
     : base(inner)
 {
     _httpConnection = httpConnection;
 }
        public async ValueTask <ConnectionContext> ConnectAsync(
            EndPoint endPoint,
            CancellationToken cancellationToken = default)
        {
            if (endPoint == null)
            {
                throw new ArgumentNullException(nameof(endPoint));
            }

            if (!(endPoint is UriEndPoint uriEndPoint))
            {
                throw new NotSupportedException(
                          $"The provided {nameof(EndPoint)} must be of type {nameof(UriEndPoint)}.");
            }

            if (_options.Url != null && _options.Url != uriEndPoint.Uri)
            {
                throw new InvalidOperationException(
                          $"If {nameof(BlazorHttpConnectionOptions)}.{nameof(BlazorHttpConnectionOptions.Url)} was set, it " +
                          $"must match the {nameof(UriEndPoint)}.{nameof(UriEndPoint.Uri)} passed to {nameof(ConnectAsync)}.");
            }

            var shallowCopiedOptions = ShallowCopyHttpConnectionOptions(_options);

            shallowCopiedOptions.Url = uriEndPoint.Uri;

            var connection = new BlazorHttpConnection(
                shallowCopiedOptions, _jsRuntime, _navigationManager, _loggerFactory);

            try
            {
                await connection.StartAsync().ConfigureAwait(false);

                return(connection);
            }
            catch
            {
                await connection.DisposeAsync();

                throw;
            }
        }