@@ -67,6 +67,13 @@ <h3 class="reference-title">
67
67
</ h3 >
68
68
69
69
70
+ < h3 >
71
+ Resources
72
+ </ h3 >
73
+
74
+ < a href ="concepts.html "> Concepts</ a >
75
+
76
+
70
77
71
78
< 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 >
72
79
</ nav >
@@ -87,7 +94,14 @@ <h1 class="page-title">
87
94
const V03Structured = require("./receiver_structured_0_3.js");
88
95
const V1Binary = require("./receiver_binary_1.js");
89
96
const 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");
91
105
92
106
/**
93
107
* A class to receive a CloudEvent from an HTTP POST request.
@@ -121,33 +135,37 @@ <h1 class="page-title">
121
135
const mode = getMode(headers);
122
136
const version = getVersion(mode, headers, body);
123
137
switch (version) {
124
- case constants. SPEC_V1:
138
+ case SPEC_V1:
125
139
return this.receivers.v1[mode].parse(body, headers);
126
- case constants. SPEC_V03:
140
+ case SPEC_V03:
127
141
return this.receivers.v03[mode].parse(body, headers);
128
142
default:
129
143
console.error(
130
- `Unknown spec version ${version}. Default to ${constants. SPEC_V1}`);
144
+ `Unknown spec version ${version}. Default to ${SPEC_V1}`);
131
145
return this.receivers.v1[mode].parse(body, headers);
132
146
}
133
147
}
134
148
}
135
149
136
150
function 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)) {
140
154
mode = "structured";
155
+ } else if (headers[BINARY_HEADERS_1.ID]) {
156
+ mode = "binary";
157
+ } else {
158
+ throw new TypeError("no cloud event detected");
141
159
}
142
160
return mode;
143
161
}
144
162
145
163
function getVersion(mode, headers, body) {
146
- let version = constants. SPEC_V1; // default to 1.0
164
+ let version = SPEC_V1; // default to 1.0
147
165
148
166
if (mode === "binary") {
149
167
// Check the headers for the version
150
- const versionHeader = headers[constants. DEFAULT_SPEC_VERSION_HEADER];
168
+ const versionHeader = headers[DEFAULT_SPEC_VERSION_HEADER];
151
169
if (versionHeader) { version = versionHeader; }
152
170
} else {
153
171
// structured mode - the version is in the body
0 commit comments