diff --git a/src/Elasticsearch.Net/Connection/HttpConnection-CoreFx.cs b/src/Elasticsearch.Net/Connection/HttpConnection-CoreFx.cs index f2c95333b1f..6af73469f29 100644 --- a/src/Elasticsearch.Net/Connection/HttpConnection-CoreFx.cs +++ b/src/Elasticsearch.Net/Connection/HttpConnection-CoreFx.cs @@ -117,7 +117,14 @@ public virtual async Task> RequestAsync( return await builder.ToResponseAsync().ConfigureAwait(false); } - private static HttpRequestMessage CreateHttpRequestMessage(RequestData requestData) + protected virtual HttpRequestMessage CreateHttpRequestMessage(RequestData requestData) + { + var request = this.CreateRequestMessage(requestData); + SetBasicAuthenticationIfNeeded(request, requestData); + return request; + } + + protected virtual HttpRequestMessage CreateRequestMessage(RequestData requestData) { var method = ConvertHttpMethod(requestData.Method); var requestMessage = new HttpRequestMessage(method, requestData.Uri); @@ -132,17 +139,6 @@ private static HttpRequestMessage CreateHttpRequestMessage(RequestData requestDa if (!requestData.RunAs.IsNullOrEmpty()) requestMessage.Headers.Add("es-shield-runas-user", requestData.RunAs); - string userInfo = null; - if (!requestData.Uri.UserInfo.IsNullOrEmpty()) - userInfo = Uri.UnescapeDataString(requestData.Uri.UserInfo); - else if (requestData.BasicAuthorizationCredentials != null) - userInfo = requestData.BasicAuthorizationCredentials.ToString(); - if (!userInfo.IsNullOrEmpty()) - { - var credentials = Convert.ToBase64String(Encoding.UTF8.GetBytes(userInfo)); - requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Basic", credentials); - } - var data = requestData.PostData; if (data != null) @@ -174,6 +170,21 @@ private static HttpRequestMessage CreateHttpRequestMessage(RequestData requestDa return requestMessage; } + protected virtual void SetBasicAuthenticationIfNeeded(HttpRequestMessage requestMessage, RequestData requestData) + { + string userInfo = null; + if (!requestData.Uri.UserInfo.IsNullOrEmpty()) + userInfo = Uri.UnescapeDataString(requestData.Uri.UserInfo); + else if (requestData.BasicAuthorizationCredentials != null) + userInfo = requestData.BasicAuthorizationCredentials.ToString(); + if (!userInfo.IsNullOrEmpty()) + { + var credentials = Convert.ToBase64String(Encoding.UTF8.GetBytes(userInfo)); + requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Basic", credentials); + } + } + + private static System.Net.Http.HttpMethod ConvertHttpMethod(HttpMethod httpMethod) { switch (httpMethod)