示例#1
0
        /// <summary>
        /// Create security domain HTTP request
        /// </summary>
        /// <param name="method"></param>
        /// <param name="hsmName"></param>
        /// <param name="path">e.g. /securitydomain/download</param>
        /// <param name="content">optional request body</param>
        /// <returns></returns>
        private HttpRequestMessage CreateRequest(HttpMethod method, string hsmName, string path, HttpContent content = null)
        {
            var uri = new UriBuilder(_uriHelper.CreateManagedHsmUri(hsmName))
            {
                Path  = path,
                Query = $"api-version={_apiVersion}"
            }.Uri;

            var request = new HttpRequestMessage(method, uri)
            {
                Content = content
            };

            // add content-type header
            if (request.Content != null)
            {
                request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json; charset=utf-8");
            }

            // add authorization header
            try
            {
                var token = _credentials.GetAccessToken();
                token.AuthorizeRequest((tokenType, tokenValue) =>
                {
                    request.Headers.Authorization = new AuthenticationHeaderValue(tokenType, tokenValue);
                });
            }
            catch (Exception ex)
            {
                throw new AzPSException(Resources.InvalidSubscriptionState, ErrorKind.InternalError, ex);
            }

            return(request);
        }
        /// <summary>
        /// Prepare common headers for the request.
        /// Such as content-type and authorization.
        /// </summary>
        /// <param name="httpRequest"></param>
        private void PrepareRequest(HttpRequestMessage httpRequest)
        {
            if (httpRequest.Content != null)
            {
                httpRequest.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json; charset=utf-8");
            }

            try
            {
                var token = _credentials.GetAccessToken();
                token.AuthorizeRequest((tokenType, tokenValue) =>
                {
                    httpRequest.Headers.Authorization = new AuthenticationHeaderValue(tokenType, tokenValue);
                });
            }
            catch (Exception ex)
            {
                throw new AuthenticationException(Resources.InvalidSubscriptionState, ex);
            }
        }