From 4236189d11f81d3a5f2daafb22a869723362c669 Mon Sep 17 00:00:00 2001 From: Brandon Cuff Date: Tue, 8 Oct 2019 18:39:19 -0700 Subject: [PATCH 1/2] Support for net461 --- .gitignore | 2 + ...sticSearch.Net.Aws.IntegrationTests.csproj | 5 +- .../TargetConfig.json | 4 +- .../ElasticSearch.Net.Aws.Tests.csproj | 2 +- .../SignUtilTests.cs | 12 +++++ .../AwsHttpConnection.cs | 31 +++++++++++++ .../Elasticsearch.Net.Aws.csproj | 2 +- .../HttpRequestMessageAdapter.cs | 6 ++- .../HttpWebRequestAdapter.cs | 46 +++++++++++++++++++ 9 files changed, 102 insertions(+), 8 deletions(-) create mode 100644 src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/HttpWebRequestAdapter.cs diff --git a/.gitignore b/.gitignore index 89a373b..2ccdc11 100644 --- a/.gitignore +++ b/.gitignore @@ -203,3 +203,5 @@ FakesAssemblies/ # snk key file *.snk + +.ionide/ diff --git a/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/ElasticSearch.Net.Aws.IntegrationTests.csproj b/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/ElasticSearch.Net.Aws.IntegrationTests.csproj index 09b8d6e..5b3b55a 100644 --- a/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/ElasticSearch.Net.Aws.IntegrationTests.csproj +++ b/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/ElasticSearch.Net.Aws.IntegrationTests.csproj @@ -1,7 +1,7 @@  - netcoreapp2.2 + netcoreapp2.2;net461 ElasticSearch.Net.Aws.IntegrationTests ElasticSearch.Net.Aws.IntegrationTests true @@ -17,8 +17,9 @@ - + + diff --git a/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/TargetConfig.json b/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/TargetConfig.json index 91f84f5..e0fb543 100644 --- a/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/TargetConfig.json +++ b/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/TargetConfig.json @@ -1,4 +1,4 @@ { - "endpoint": "", - "region": "us-east-1" + "endpoint": "https://search-dice-preview-logging-k4u5ga2hk4tk5muztuduyi7tea.us-east-1.es.amazonaws.com", + "region": "us-east-1" } diff --git a/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.Tests/ElasticSearch.Net.Aws.Tests.csproj b/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.Tests/ElasticSearch.Net.Aws.Tests.csproj index 043f850..3a234a1 100644 --- a/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.Tests/ElasticSearch.Net.Aws.Tests.csproj +++ b/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.Tests/ElasticSearch.Net.Aws.Tests.csproj @@ -1,7 +1,7 @@  - netcoreapp2.0 + netcoreapp2.0;net461 ElasticSearch.Net.Aws.Tests ElasticSearch.Net.Aws.Tests true diff --git a/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.Tests/SignUtilTests.cs b/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.Tests/SignUtilTests.cs index aaf2b73..a493288 100644 --- a/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.Tests/SignUtilTests.cs +++ b/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.Tests/SignUtilTests.cs @@ -4,6 +4,9 @@ using Amazon.Runtime; using Elasticsearch.Net.Aws; using NUnit.Framework; +#if NETFRAMEWORK +using System.Net; +#endif namespace Tests { @@ -18,11 +21,20 @@ public void SetUp() { var encoding = new UTF8Encoding(false); _sampleBody = encoding.GetBytes("Action=ListUsers&Version=2010-05-08"); +#if NETCOREAPP var request = new System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Post, "https://iam.amazonaws.com/"); request.Content = new System.Net.Http.ByteArrayContent(_sampleBody); request.Content.Headers.TryAddWithoutValidation("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); request.Headers.TryAddWithoutValidation("X-Amz-Date", "20110909T233600Z"); _sampleRequest = new HttpRequestMessageAdapter(request); +#else + var request = HttpWebRequest.CreateHttp("https://iam.amazonaws.com/"); + request.Method = "POST"; + //request.Content = new System.Net.Http.ByteArrayContent(_sampleBody); + request.ContentType = "application/x-www-form-urlencoded; charset=utf-8"; + request.Headers["X-Amz-Date"] = "20110909T233600Z"; + _sampleRequest = new HttpWebRequestAdapter(request); +#endif } [Test] diff --git a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/AwsHttpConnection.cs b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/AwsHttpConnection.cs index 27e3547..694a489 100644 --- a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/AwsHttpConnection.cs +++ b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/AwsHttpConnection.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Net; using System.Net.Http; using Amazon; using Amazon.Runtime; @@ -43,12 +44,42 @@ public AwsHttpConnection() : this( { } +#if NETSTANDARD protected override HttpRequestMessage CreateHttpRequestMessage(RequestData requestData) { var request = base.CreateHttpRequestMessage(requestData); SignRequest(new HttpRequestMessageAdapter(request), requestData); return request; } +#else + static int _createHttpRequestDepth; + + HttpWebRequest CreateWebRequestInternal(RequestData requestData, Func creator) + { + _createHttpRequestDepth++; + HttpWebRequest ret; + try + { + ret = creator(requestData); + } + finally + { + _createHttpRequestDepth--; + } + if (_createHttpRequestDepth == 0) + { + SignRequest(new HttpWebRequestAdapter(ret), requestData); + } + return ret; + + } + + protected override HttpWebRequest CreateHttpWebRequest(RequestData requestData) + => CreateWebRequestInternal(requestData, base.CreateHttpWebRequest); + + protected override HttpWebRequest CreateWebRequest(RequestData requestData) + => CreateWebRequestInternal(requestData, base.CreateWebRequest); +#endif private void SignRequest(IRequest request, RequestData requestData) { diff --git a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws.csproj b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws.csproj index 1b95a4b..3b52527 100644 --- a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws.csproj +++ b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws.csproj @@ -2,7 +2,7 @@ 7.0.0 - netstandard2.0 + netstandard2.0;net461 Elasticsearch.Net.Aws Elasticsearch.Net.Aws 7.0.0 diff --git a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/HttpRequestMessageAdapter.cs b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/HttpRequestMessageAdapter.cs index dbeec57..165a5ae 100644 --- a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/HttpRequestMessageAdapter.cs +++ b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/HttpRequestMessageAdapter.cs @@ -1,4 +1,5 @@ -using System; +#if NETSTANDARD +using System; using System.Net.Http; using System.Collections.Generic; using System.Linq; @@ -43,4 +44,5 @@ public HttpRequestMessageAdapter(HttpRequestMessage message) public string Method => _message.Method.ToString(); public Uri RequestUri => _message.RequestUri; } -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/HttpWebRequestAdapter.cs b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/HttpWebRequestAdapter.cs new file mode 100644 index 0000000..34a9ec0 --- /dev/null +++ b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/HttpWebRequestAdapter.cs @@ -0,0 +1,46 @@ +#if NETFRAMEWORK +using System; +using System.Collections.Generic; +using System.Net; +using System.Text; + +namespace Elasticsearch.Net.Aws +{ + class HttpWebRequestAdapter : IRequest, IHeaders + { + readonly HttpWebRequest _request; + public HttpWebRequestAdapter(HttpWebRequest request) + { + _request = request; + } + + public IHeaders Headers => this; + + public string Method => _request.Method; + + public Uri RequestUri => _request.Address; + + public string XAmzDate + { + get => _request.Headers["x-amz-date"]; + set => _request.Headers["x-amz-date"] = value; + } + + public string Authorization + { + get => _request.Headers[HttpRequestHeader.Authorization]; + set => _request.Headers[HttpRequestHeader.Authorization] = value; + } + + public string XAmzSecurityToken + { + get => _request.Headers["x-amz-security-token"]; + set => _request.Headers["x-amz-security-token"] = value; + } + + public IEnumerable Keys => _request.Headers.AllKeys; + + public IEnumerable GetValues(string name) => _request.Headers.GetValues(name); + } +} +#endif From e2c64f7f4b61fc9b4764fc4a00ae60843c6a797e Mon Sep 17 00:00:00 2001 From: Brandon Cuff Date: Tue, 8 Oct 2019 18:39:44 -0700 Subject: [PATCH 2/2] Package version 7.0.1 --- .../Elasticsearch.Net.Aws.csproj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws.csproj b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws.csproj index 3b52527..fdaa3df 100644 --- a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws.csproj +++ b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws.csproj @@ -1,22 +1,22 @@  - 7.0.0 + 7.0.1 netstandard2.0;net461 Elasticsearch.Net.Aws Elasticsearch.Net.Aws - 7.0.0 + 7.0.1 Brandon Cuff Enables request signing necessary for using the AWS Elasticsearch service. Copyright 2015 https://raw.githubusercontent.com/bcuff/elasticsearch-net-aws/master/LICENSE https://github.com/bcuff/elasticsearch-net-aws - Support NEST 7.0.0 + Support NET Framework 4.6.1 elasticsearch elastic search aws amazon https://github.com/bcuff/elasticsearch-net-aws - 7.0.0 - 7.0.0 - 7.0.0 + 7.0.1 + 7.0.1 + 7.0.1