Skip to content

Commit 0b27c61

Browse files
committed
squash: add headers() to the HTTPEmitter function
Fixes: #149 Signed-off-by: Lance Ball <[email protected]>
1 parent ffed52d commit 0b27c61

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

lib/bindings/http/http_emitter.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,26 @@ class HTTPEmitter {
6161
}
6262
throw new TypeError(`Unknown transport mode ${mode}.`);
6363
}
64+
65+
/**
66+
* Returns the HTTP headers that will be sent for this event when the HTTP transmission
67+
* mode is "binary". Events sent over HTTP in structured mode only have a single CE header
68+
* and that is "ce-id", corresponding to the event ID.
69+
* @param {CloudEvent} event a CloudEvent
70+
* @returns {Object} the headers that will be sent for the event
71+
*/
72+
headers(event) {
73+
const headers = {};
74+
75+
Object.keys(this.binary.headerByGetter)
76+
.filter((getter) => event[getter]())
77+
.forEach((getter) => {
78+
const header = this.binary.headerByGetter[getter];
79+
headers[header.name] = header.parser(event[getter]());
80+
});
81+
82+
return headers;
83+
}
6484
}
6585

6686
module.exports = HTTPEmitter;

test/bindings/http/http_emitter_test.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,15 @@ describe("HTTP Transport Binding Emitter for CloudEvents", () => {
6565
}).catch(expect.fail);
6666
});
6767

68+
it("Provides the HTTP headers for a binary event", () => {
69+
const headers = emitter.headers(event);
70+
expect(headers[BINARY_HEADERS_1.TYPE]).to.equal(event.getType());
71+
expect(headers[BINARY_HEADERS_1.SPEC_VERSION]).to.equal(event.getSpecversion());
72+
expect(headers[BINARY_HEADERS_1.SOURCE]).to.equal(event.getSource());
73+
expect(headers[BINARY_HEADERS_1.ID]).to.equal(event.getId());
74+
expect(headers[BINARY_HEADERS_1.TIME]).to.equal(event.getTime());
75+
});
76+
6877
it("Sends a structured 1.0 CloudEvent if specified", () => {
6978
emitter.send(event, { mode: "structured" })
7079
.then((response) => {
@@ -128,6 +137,15 @@ describe("HTTP Transport Binding Emitter for CloudEvents", () => {
128137
}).catch(expect.fail);
129138
});
130139

140+
it("Provides the HTTP headers for a binary event", () => {
141+
const headers = emitter.headers(event);
142+
expect(headers[BINARY_HEADERS_03.TYPE]).to.equal(event.getType());
143+
expect(headers[BINARY_HEADERS_03.SPEC_VERSION]).to.equal(event.getSpecversion());
144+
expect(headers[BINARY_HEADERS_03.SOURCE]).to.equal(event.getSource());
145+
expect(headers[BINARY_HEADERS_03.ID]).to.equal(event.getId());
146+
expect(headers[BINARY_HEADERS_03.TIME]).to.equal(event.getTime());
147+
});
148+
131149
it("Sends a structured 0.3 CloudEvent if specified", () => {
132150
emitter.send(event, { mode: "structured", foo: "bar" })
133151
.then((response) => {

0 commit comments

Comments
 (0)