@@ -67,6 +67,13 @@ <h3 class="reference-title">
6767 </ h3 >
6868
6969
70+ < h3 >
71+ Resources
72+ </ h3 >
73+
74+ < a href ="concepts.html "> Concepts</ a >
75+
76+
7077
7178 < h3 > Classes</ h3 > < ul > < li id ="CloudEvent-nav "> < a href ="CloudEvent.html "> CloudEvent</ a > < ul class ='methods '> < li data-type ="method " id ="CloudEvent-addExtension-nav "> < a href ="CloudEvent.html#addExtension "> addExtension</ a > </ li > < li data-type ="method " id ="CloudEvent-data-nav "> < a href ="CloudEvent.html#data "> data</ a > </ li > < li data-type ="method " id ="CloudEvent-dataContenttype-nav "> < a href ="CloudEvent.html#dataContenttype "> dataContenttype</ a > </ li > < li data-type ="method " id ="CloudEvent-format-nav "> < a href ="CloudEvent.html#format "> format</ a > </ li > < li data-type ="method " id ="CloudEvent-getData-nav "> < a href ="CloudEvent.html#getData "> getData</ a > </ li > < li data-type ="method " id ="CloudEvent-getDataContenttype-nav "> < a href ="CloudEvent.html#getDataContenttype "> getDataContenttype</ a > </ li > < li data-type ="method " id ="CloudEvent-getExtensions-nav "> < a href ="CloudEvent.html#getExtensions "> getExtensions</ a > </ li > < li data-type ="method " id ="CloudEvent-getFormats-nav "> < a href ="CloudEvent.html#getFormats "> getFormats</ a > </ li > < li data-type ="method " id ="CloudEvent-getId-nav "> < a href ="CloudEvent.html#getId "> getId</ a > </ li > < li data-type ="method " id ="CloudEvent-getSource-nav "> < a href ="CloudEvent.html#getSource "> getSource</ a > </ li > < li data-type ="method " id ="CloudEvent-getSpecversion-nav "> < a href ="CloudEvent.html#getSpecversion "> getSpecversion</ a > </ li > < li data-type ="method " id ="CloudEvent-getTime-nav "> < a href ="CloudEvent.html#getTime "> getTime</ a > </ li > < li data-type ="method " id ="CloudEvent-getType-nav "> < a href ="CloudEvent.html#getType "> getType</ a > </ li > < li data-type ="method " id ="CloudEvent-id-nav "> < a href ="CloudEvent.html#id "> id</ a > </ li > < li data-type ="method " id ="CloudEvent-source-nav "> < a href ="CloudEvent.html#source "> source</ a > </ li > < li data-type ="method " id ="CloudEvent-time-nav "> < a href ="CloudEvent.html#time "> time</ a > </ li > < li data-type ="method " id ="CloudEvent-toString-nav "> < a href ="CloudEvent.html#toString "> toString</ a > </ li > < li data-type ="method " id ="CloudEvent-type-nav "> < a href ="CloudEvent.html#type "> type</ a > </ li > </ ul > </ li > < li id ="HTTPReceiver-nav "> < a href ="HTTPReceiver.html "> HTTPReceiver</ a > < ul class ='methods '> < li data-type ="method " id ="HTTPReceiver-accept-nav "> < a href ="HTTPReceiver.html#accept "> accept</ a > </ li > </ ul > </ li > </ ul >
7279 </ nav >
@@ -87,7 +94,14 @@ <h1 class="page-title">
8794const V03Structured = require("./receiver_structured_0_3.js");
8895const V1Binary = require("./receiver_binary_1.js");
8996const V1Structured = require("./receiver_structured_1.js");
90- const constants = require("./constants");
97+ const {
98+ SPEC_V03,
99+ SPEC_V1,
100+ HEADER_CONTENT_TYPE,
101+ MIME_CE,
102+ BINARY_HEADERS_1,
103+ DEFAULT_SPEC_VERSION_HEADER
104+ } = require("./constants");
91105
92106/**
93107 * A class to receive a CloudEvent from an HTTP POST request.
@@ -121,33 +135,37 @@ <h1 class="page-title">
121135 const mode = getMode(headers);
122136 const version = getVersion(mode, headers, body);
123137 switch (version) {
124- case constants. SPEC_V1:
138+ case SPEC_V1:
125139 return this.receivers.v1[mode].parse(body, headers);
126- case constants. SPEC_V03:
140+ case SPEC_V03:
127141 return this.receivers.v03[mode].parse(body, headers);
128142 default:
129143 console.error(
130- `Unknown spec version ${version}. Default to ${constants. SPEC_V1}`);
144+ `Unknown spec version ${version}. Default to ${SPEC_V1}`);
131145 return this.receivers.v1[mode].parse(body, headers);
132146 }
133147 }
134148}
135149
136150function getMode(headers) {
137- let mode = "binary ";
138- const contentType = headers[constants. HEADER_CONTENT_TYPE];
139- if (contentType && contentType.startsWith(constants. MIME_CE)) {
151+ let mode = "unknown ";
152+ const contentType = headers[HEADER_CONTENT_TYPE];
153+ if (contentType && contentType.startsWith(MIME_CE)) {
140154 mode = "structured";
155+ } else if (headers[BINARY_HEADERS_1.ID]) {
156+ mode = "binary";
157+ } else {
158+ throw new TypeError("no cloud event detected");
141159 }
142160 return mode;
143161}
144162
145163function getVersion(mode, headers, body) {
146- let version = constants. SPEC_V1; // default to 1.0
164+ let version = SPEC_V1; // default to 1.0
147165
148166 if (mode === "binary") {
149167 // Check the headers for the version
150- const versionHeader = headers[constants. DEFAULT_SPEC_VERSION_HEADER];
168+ const versionHeader = headers[DEFAULT_SPEC_VERSION_HEADER];
151169 if (versionHeader) { version = versionHeader; }
152170 } else {
153171 // structured mode - the version is in the body
0 commit comments