|
1 | 1 | const BinaryHTTPEmitter = require("./emitter_binary.js");
|
2 | 2 | const StructuredEmitter = require("./emitter_structured.js");
|
| 3 | +const EmitterV1 = require("./v1").BinaryEmitter; |
| 4 | +const EmitterV03 = require("./v03").BinaryEmitter; |
3 | 5 |
|
4 | 6 | /** @typedef {import("../../cloudevent")} CloudEvent */
|
5 | 7 |
|
@@ -66,26 +68,33 @@ class HTTPEmitter {
|
66 | 68 | }
|
67 | 69 | throw new TypeError(`Unknown transport mode ${mode}.`);
|
68 | 70 | }
|
| 71 | +} |
69 | 72 |
|
70 |
| - /** |
71 |
| - * Returns the HTTP headers that will be sent for this event when the HTTP transmission |
72 |
| - * mode is "binary". Events sent over HTTP in structured mode only have a single CE header |
73 |
| - * and that is "ce-id", corresponding to the event ID. |
74 |
| - * @param {CloudEvent} event a CloudEvent |
75 |
| - * @returns {Object} the headers that will be sent for the event |
76 |
| - */ |
77 |
| - headers(event) { |
78 |
| - const headers = {}; |
79 |
| - |
80 |
| - this.binary.headerParserMap.forEach((parser, getterName) => { |
81 |
| - const value = event[getterName]; |
82 |
| - if (value) { |
83 |
| - headers[parser.headerName] = parser.parse(value); |
84 |
| - } |
85 |
| - }); |
86 |
| - |
87 |
| - return headers; |
| 73 | +/** |
| 74 | + * Returns the HTTP headers that will be sent for this event when the HTTP transmission |
| 75 | + * mode is "binary". Events sent over HTTP in structured mode only have a single CE header |
| 76 | + * and that is "ce-id", corresponding to the event ID. |
| 77 | + * @param {CloudEvent} event a CloudEvent |
| 78 | + * @param {string} [version] spec version number - default 1.0 |
| 79 | + * @returns {Object} the headers that will be sent for the event |
| 80 | + */ |
| 81 | +function headers(event, version = SPEC_V1) { |
| 82 | + const headers = {}; |
| 83 | + let headerMap; |
| 84 | + if (version === SPEC_V1) { |
| 85 | + headerMap = EmitterV1; |
| 86 | + } else if (version === SPEC_V03) { |
| 87 | + headerMap = EmitterV03; |
88 | 88 | }
|
| 89 | + headerMap.forEach((parser, getterName) => { |
| 90 | + const value = event[getterName]; |
| 91 | + if (value) { |
| 92 | + headers[parser.headerName] = parser.parse(value); |
| 93 | + } |
| 94 | + }); |
| 95 | + |
| 96 | + return headers; |
89 | 97 | }
|
90 | 98 |
|
| 99 | +HTTPEmitter.headers = headers; |
91 | 100 | module.exports = HTTPEmitter;
|
0 commit comments