From 5d8db8d218c26fd2ac72fef3f01185009dc360d7 Mon Sep 17 00:00:00 2001 From: William Denton Date: Mon, 3 Jun 2019 23:05:44 +1200 Subject: [PATCH 1/6] Remove multi targeting of net461 Elasticsearch.Net were previously hedging their bets on using HttpClient in Fullframework. They were was using HttpWebRequest and httpclient in net standard, there is no longer this compile split, so we can remove it from here too. --- ...sticSearch.Net.Aws.IntegrationTests.csproj | 7 +--- .../ElasticSearch.Net.Aws.Tests.csproj | 10 +---- .../SignUtilTests.cs | 8 ---- .../AwsHttpConnection.cs | 9 ---- .../Elasticsearch.Net.Aws.csproj | 13 +----- .../HttpWebRequestAdapter.cs | 42 ------------------- .../Elasticsearch.Net.Aws/SignV4Util.cs | 7 +--- 7 files changed, 5 insertions(+), 91 deletions(-) delete mode 100644 src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/HttpWebRequestAdapter.cs 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 0382299..544cbb0 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.0;net461 + netcoreapp2.0 ElasticSearch.Net.Aws.IntegrationTests ElasticSearch.Net.Aws.IntegrationTests true @@ -22,11 +22,6 @@ - - - - - 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 e3addf9..d044d70 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;net461 + netcoreapp2.0 ElasticSearch.Net.Aws.Tests ElasticSearch.Net.Aws.Tests true @@ -20,18 +20,10 @@ - - - - - - - - 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 2b233ad..aaf2b73 100644 --- a/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.Tests/SignUtilTests.cs +++ b/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.Tests/SignUtilTests.cs @@ -18,19 +18,11 @@ 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); -#elif NET461 - var request = System.Net.WebRequest.CreateHttp("https://iam.amazonaws.com/"); - request.Method = "POST"; - 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 69b5649..49d9b65 100644 --- a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/AwsHttpConnection.cs +++ b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/AwsHttpConnection.cs @@ -43,21 +43,12 @@ public AwsHttpConnection() : this( { } -#if !NETSTANDARD - protected override System.Net.HttpWebRequest CreateHttpWebRequest(RequestData requestData) - { - var request = base.CreateHttpWebRequest(requestData); - SignRequest(new HttpWebRequestAdapter(request), requestData); - return request; - } -#else protected override HttpRequestMessage CreateHttpRequestMessage(RequestData requestData) { var request = base.CreateHttpRequestMessage(requestData); SignRequest(new HttpRequestMessageAdapter(request), requestData); return request; } -#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 b74a369..8c43e46 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 @@ 6.1.0 - net461;netstandard2.0 + netstandard2.0 Elasticsearch.Net.Aws Elasticsearch.Net.Aws 6.1.0 @@ -29,17 +29,6 @@ - - - - - - - - - - - diff --git a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/HttpWebRequestAdapter.cs b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/HttpWebRequestAdapter.cs deleted file mode 100644 index 0270933..0000000 --- a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/HttpWebRequestAdapter.cs +++ /dev/null @@ -1,42 +0,0 @@ -#if !NETSTANDARD - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Net; - -namespace Elasticsearch.Net.Aws -{ - internal class HttpWebRequestAdapter : IRequest - { - private class HeadersAdapter : IHeaders - { - private readonly WebHeaderCollection _headers; - - public HeadersAdapter(WebHeaderCollection headers) - { - _headers = headers; - } - - public string XAmzDate { get { return _headers["x-amz-date"]; } set { _headers["x-amz-date"] = value; } } - public string Authorization { get { return _headers[HttpRequestHeader.Authorization]; } set { _headers[HttpRequestHeader.Authorization] = value; } } - public string XAmzSecurityToken { get { return _headers["x-amz-security-token"]; } set { _headers["x-amz-security-token"] = value; } } - public IEnumerable GetValues(string name) => _headers.GetValues(name); - public IEnumerable Keys => _headers.AllKeys; - } - - private readonly HttpWebRequest _request; - - public HttpWebRequestAdapter(HttpWebRequest request) - { - _request = request; - Headers = new HeadersAdapter(_request.Headers); - } - - public IHeaders Headers { get; private set; } - public string Method => _request.Method; - public Uri RequestUri => _request.RequestUri; - } -} - -#endif \ No newline at end of file diff --git a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/SignV4Util.cs b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/SignV4Util.cs index 792e1e7..c222043 100644 --- a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/SignV4Util.cs +++ b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/SignV4Util.cs @@ -157,10 +157,7 @@ private static void WriteSignedHeaders(Dictionary canonicalHeade } } -#if !NETSTANDARD - private static NameValueCollection ParseQueryString(string query) => - System.Web.HttpUtility.ParseQueryString(query); -#else + private static NameValueCollection ParseQueryString(string query) => Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(query) .Aggregate(new NameValueCollection(), (col, kv) => @@ -168,7 +165,7 @@ private static NameValueCollection ParseQueryString(string query) => kv.Value.ToList().ForEach(v => col.Add(kv.Key, v)); return col; }); -#endif + public static string GetCanonicalQueryString(this Uri uri) { if (string.IsNullOrWhiteSpace(uri.Query)) return string.Empty; From 5ab1caf7232e428b291e6ada6fbf15ffe15acaee Mon Sep 17 00:00:00 2001 From: William Denton Date: Mon, 3 Jun 2019 23:11:45 +1200 Subject: [PATCH 2/6] Remove unused dependencies Removed unreferenced dependencies * Newtonsoft.Json * Nest Remove transitive dependencies * Elasticsearch.Net --- .../ElasticSearch.Net.Aws.IntegrationTests.csproj | 1 - .../ElasticSearch.Net.Aws.Tests.csproj | 3 --- .../Elasticsearch.Net.Aws/Elasticsearch.Net.Aws.csproj | 1 - 3 files changed, 5 deletions(-) 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 544cbb0..192e67d 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 @@ -18,7 +18,6 @@ - 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 d044d70..043f850 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 @@ -17,10 +17,7 @@ - - - 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 8c43e46..fd07979 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 @@ -28,7 +28,6 @@ - From 136b739318eca48b1d5b85ddbea9fcce8693eb1e Mon Sep 17 00:00:00 2001 From: William Denton Date: Mon, 3 Jun 2019 23:19:57 +1200 Subject: [PATCH 3/6] Update Elasticsearch.Net to version 7, fix broken code Type parameter seems to have disappeared from the Get and Create Api --- .../ElasticSearch.Net.Aws.IntegrationTests.csproj | 2 +- .../ElasticSearch.Net.Aws.IntegrationTests/PingTests.cs | 4 ++-- .../ElasticSearch.Net.Aws.IntegrationTests/PostTests.cs | 4 ++-- .../Elasticsearch.Net.Aws/Elasticsearch.Net.Aws.csproj | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) 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 192e67d..651d5b7 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 @@ -17,7 +17,7 @@ - + diff --git a/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/PingTests.cs b/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/PingTests.cs index 5634ce2..bcc8379 100644 --- a/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/PingTests.cs +++ b/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/PingTests.cs @@ -44,7 +44,7 @@ public void Random_encoded_url_should_work() var pool = new SingleNodeConnectionPool(new Uri(TestConfig.Endpoint)); var config = new ConnectionConfiguration(pool, httpConnection); var client = new ElasticLowLevelClient(config); - var response = client.Get(randomString, string.Join(",", Enumerable.Repeat(randomString, 2)), randomString); + var response = client.Get(randomString, randomString); Assert.AreEqual(404, response.HttpStatusCode.GetValueOrDefault(-1)); } @@ -55,7 +55,7 @@ public void Asterisk_encoded_url_should_work() var pool = new SingleNodeConnectionPool(new Uri(TestConfig.Endpoint)); var config = new ConnectionConfiguration(pool, httpConnection); var client = new ElasticLowLevelClient(config); - var response = client.Get("index*", "type", "id"); + var response = client.Get("index*", "id"); Assert.AreEqual(404, response.HttpStatusCode.GetValueOrDefault(-1)); } } diff --git a/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/PostTests.cs b/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/PostTests.cs index 117e25f..7d5a235 100644 --- a/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/PostTests.cs +++ b/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/PostTests.cs @@ -36,9 +36,9 @@ public void TearDown() public void SimplePost_should_work() { var id = Guid.NewGuid().ToString("n"); - var response = _client.Create(_indexName, "test", id, PostData.Serializable(new { message = "Hello, World!" })); + var response = _client.Create(_indexName, id, PostData.Serializable(new { message = "Hello, World!" })); Assert.AreEqual(true, response.Success); - var getResponse = _client.Get(_indexName, "test", id); + var getResponse = _client.Get(_indexName, id); Assert.AreEqual(true, getResponse.Success); StringAssert.Contains("Hello, World!", getResponse.Body); } 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 fd07979..7836350 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 @@ -26,9 +26,9 @@ - - + + From e9ba9e1c643534b163a9ff78e9a698666315da8a Mon Sep 17 00:00:00 2001 From: William Denton Date: Mon, 3 Jun 2019 23:21:21 +1200 Subject: [PATCH 4/6] Improve failing tests debugging output --- .../PostTests.cs | 5 +++-- .../Elasticsearch.Net.Aws/AwsHttpConnection.cs | 11 ++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/PostTests.cs b/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/PostTests.cs index 7d5a235..555ebef 100644 --- a/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/PostTests.cs +++ b/src/Elasticsearch.Net.Aws/ElasticSearch.Net.Aws.IntegrationTests/PostTests.cs @@ -22,6 +22,7 @@ public void Setup() var httpConnection = new AwsHttpConnection(Region); var pool = new SingleNodeConnectionPool(new Uri(TestConfig.Endpoint)); var config = new ConnectionConfiguration(pool, httpConnection); + config.DisableDirectStreaming(); _client = new ElasticLowLevelClient(config); _indexName = $"unittest_{Guid.NewGuid().ToString("n")}"; } @@ -37,9 +38,9 @@ public void SimplePost_should_work() { var id = Guid.NewGuid().ToString("n"); var response = _client.Create(_indexName, id, PostData.Serializable(new { message = "Hello, World!" })); - Assert.AreEqual(true, response.Success); + Assert.AreEqual(true, response.Success, response.DebugInformation); var getResponse = _client.Get(_indexName, id); - Assert.AreEqual(true, getResponse.Success); + Assert.AreEqual(true, getResponse.Success, getResponse.DebugInformation); StringAssert.Contains("Hello, World!", getResponse.Body); } } diff --git a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/AwsHttpConnection.cs b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/AwsHttpConnection.cs index 49d9b65..27e3547 100644 --- a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/AwsHttpConnection.cs +++ b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/AwsHttpConnection.cs @@ -65,7 +65,16 @@ private void SignRequest(IRequest request, RequestData requestData) } } } - var credentials = _credentials.GetCredentials(); + ImmutableCredentials credentials; + try + { + credentials = _credentials.GetCredentials(); + } + catch (Exception e) + { + throw new Exception("Unable to retrieve credentials required to sign the request.", e); + } + if (credentials == null) { throw new Exception("Unable to retrieve credentials required to sign the request."); From cd4ff9ac5442deede7b64f94a5f988e92c681ca1 Mon Sep 17 00:00:00 2001 From: William Denton Date: Mon, 3 Jun 2019 23:22:23 +1200 Subject: [PATCH 5/6] Bump Assembly versions to 7.x --- .../Elasticsearch.Net.Aws/Elasticsearch.Net.Aws.csproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 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 7836350..d93647d 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,7 +1,7 @@  - 6.1.0 + 7.0.0 netstandard2.0 Elasticsearch.Net.Aws Elasticsearch.Net.Aws @@ -14,9 +14,9 @@ Use AWSSDK.Core to get credentials instead of custom code. elasticsearch elastic search aws amazon https://github.com/bcuff/elasticsearch-net-aws - 6.1.0 - 6.1.0 - 6.1.0 + 7.0.0 + 7.0.0 + 7.0.0 From ace504113bf6971e7a36062c676502f70d9316c7 Mon Sep 17 00:00:00 2001 From: William Denton Date: Mon, 3 Jun 2019 23:33:00 +1200 Subject: [PATCH 6/6] Update dependency to netstandard 2.0 was previously pulling netstandard1.3 / full framework 4.5.1, now only depends on netstandard2.0 --- .../Elasticsearch.Net.Aws/Elasticsearch.Net.Aws.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 d93647d..35ea8b5 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 @@ -26,7 +26,7 @@ - +