Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

fix: ensure binary events can handle no content-type header #134

Merged
merged 2 commits into from
May 9, 2020

Conversation

lance
Copy link
Member

@lance lance commented May 7, 2020

The fix provided in #118
only included tests for receiver.check(), and the change in that
case was to add the application/json content type to the cleansed
headers if no type was specified.

However, receiver.parse() did not receive the benefit of this change. It
calls this.check() but then sanitizes the original headers again, and the
missing content-type was not re-inserted into the newly sanitized headers.

This commit, modifies the code so that receiver.check() does not insert
the content-type, but does allow the validation check to pass if no
content-type header exists. When receiver.parse() is called, and the
headers are sanitized again - and this time used to look up parser implementation,
the default application/json content-is applied if no content-type header
exists.

I've also removed a redundant call to receiver.check() in receiver_binary_1.js
and simplified the usage of Constants in the test.

Fixes: #133

Signed-off-by: Lance Ball lball@redhat.com

The fix provided in cloudevents#118
only included tests for `receiver.check()`, and the change in that
case was to add the `application/json` content type to the cleansed
headers if to type was specified.

However, `receiver.parse()` did not receive the benefit of this change. It
calls `this.check()` but then sanitizes the original headers again, and the
missing content-type was not re-inserted into the newly sanitized headers.

This commit, modifies the code so that `receiver.check()` does not insert
the content-type, but does allow the validation check to pass if no
content-type header exists. When `receiver.parse()` is called, and the
headers are sanitized again - and this time used to look up parser implementation,
the default `application/json` content-is applied if no content-type header
exists.

I've also removed a redundant call to `receiver.check()` in receiver_binary_1.js
and simplified the usage of `Constants` in the test.

Signed-off-by: Lance Ball <lball@redhat.com>
@lance lance added type/bug Something isn't working module/transport/http Issues related to the HTTP transport protocol implementation labels May 7, 2020
@lance lance requested review from grant, fabiojose and helio-frota May 7, 2020 19:20
@lance lance self-assigned this May 7, 2020
@lance
Copy link
Member Author

lance commented May 8, 2020

@fabiojose @grant @helio-frota I was hoping to get this into the upcoming 2.0.0 release. Would you mind giving this a look today?

I was aiming to release this week, but it's Friday and there are still some things that should be documented, so probably Monday for the release.

Signed-off-by: Lance Ball <lball@redhat.com>
@lance lance merged commit 72a87df into cloudevents:master May 9, 2020
@lance lance deleted the 133-parse-kafka-events branch May 9, 2020 03:39
lance added a commit to lance/sdk-javascript that referenced this pull request May 9, 2020
…nts#134)

* fix: ensure binary events can handle no content-type header

The fix provided in cloudevents#118
only included tests for `receiver.check()`, and the change in that
case was to add the `application/json` content type to the cleansed
headers if to type was specified.

However, `receiver.parse()` did not receive the benefit of this change. It
calls `this.check()` but then sanitizes the original headers again, and the
missing content-type was not re-inserted into the newly sanitized headers.

This commit, modifies the code so that `receiver.check()` does not insert
the content-type, but does allow the validation check to pass if no
content-type header exists. When `receiver.parse()` is called, and the
headers are sanitized again - and this time used to look up parser implementation,
the default `application/json` content-is applied if no content-type header
exists.

I've also removed a redundant call to `receiver.check()` in receiver_binary_1.js
and simplified the usage of `Constants` in the test.

Signed-off-by: Lance Ball <lball@redhat.com>

* chore: clean up header sniffing

Signed-off-by: Lance Ball <lball@redhat.com>
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
module/transport/http Issues related to the HTTP transport protocol implementation type/bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Unable to find parser given the encoding and headers provided
2 participants