44import { HTTP , CloudEvent } from "cloudevents" ;
55import { IncomingMessage , ServerResponse } from "http" ;
66import { URL } from "url" ;
7-
7+ import { logger } from "./logger" ;
88import * as utils from "./utils" ;
99
1010import {
@@ -14,9 +14,9 @@ import {
1414 DisconnectedRequest ,
1515 ConnectedRequest ,
1616 ConnectionContext ,
17- WebPubSubEventHandlerOptions ,
1817 ConnectResponseHandler ,
19- UserEventResponseHandler
18+ UserEventResponseHandler ,
19+ WebPubSubEventHandlerOptions
2020} from "./cloudEventsProtocols" ;
2121
2222enum EventType {
@@ -137,24 +137,27 @@ function tryGetWebPubSubEvent(req: IncomingMessage): EventType | undefined {
137137 }
138138}
139139
140+ function isWebPubSubRequest ( req : IncomingMessage ) : boolean {
141+ return utils . getHttpHeader ( req , "ce-awpsversion" ) !== undefined ;
142+ }
143+
140144/**
141145 * @internal
142146 */
143147export class CloudEventsDispatcher {
144- private readonly _dumpRequest : boolean ;
145- private readonly _allowedOrigins : string [ ] ;
146- constructor (
147- private hub : string ,
148- allowedEndpoints : string [ ] ,
149- private eventHandler ?: WebPubSubEventHandlerOptions
150- ) {
151- this . _dumpRequest = eventHandler ?. dumpRequest ?? false ;
152- this . _allowedOrigins = allowedEndpoints . map ( ( endpoint ) =>
153- endpoint === "*" ? "*" : new URL ( endpoint ) . host
154- ) ;
148+ private readonly _allowedOrigins = [ "*" ] ;
149+ constructor ( private hub : string , private eventHandler ?: WebPubSubEventHandlerOptions ) {
150+ if ( eventHandler ?. allowedEndpoints !== undefined ) {
151+ this . _allowedOrigins = eventHandler . allowedEndpoints . map ( ( endpoint ) =>
152+ endpoint === "*" ? "*" : new URL ( endpoint ) . host
153+ ) ;
154+ }
155155 }
156156
157- public processValidateRequest ( req : IncomingMessage , res : ServerResponse ) : boolean {
157+ public handlePreflight ( req : IncomingMessage , res : ServerResponse ) : boolean {
158+ if ( ! isWebPubSubRequest ( req ) ) {
159+ return false ;
160+ }
158161 if ( req . headers [ "webhook-request-origin" ] ) {
159162 res . setHeader ( "WebHook-Allowed-Origin" , this . _allowedOrigins ) ;
160163 res . end ( ) ;
@@ -164,10 +167,11 @@ export class CloudEventsDispatcher {
164167 }
165168 }
166169
167- public async processRequest (
168- request : IncomingMessage ,
169- response : ServerResponse
170- ) : Promise < boolean > {
170+ public async handleRequest ( request : IncomingMessage , response : ServerResponse ) : Promise < boolean > {
171+ if ( ! isWebPubSubRequest ( request ) ) {
172+ return false ;
173+ }
174+
171175 // check if it is a valid WebPubSub cloud events
172176 const origin = utils . getHttpHeader ( request , "webhook-request-origin" ) ;
173177 if ( origin === undefined ) {
@@ -213,16 +217,14 @@ export class CloudEventsDispatcher {
213217 }
214218 break ;
215219 default :
216- console . warn ( `Unknown EventType ${ eventType } ` ) ;
220+ logger . warning ( `Unknown EventType ${ eventType } ` ) ;
217221 return false ;
218222 }
219223
220224 const eventRequest = await utils . convertHttpToEvent ( request ) ;
221225 const receivedEvent = HTTP . toEvent ( eventRequest ) ;
222226
223- if ( this . _dumpRequest ) {
224- console . log ( receivedEvent ) ;
225- }
227+ logger . verbose ( receivedEvent ) ;
226228
227229 switch ( eventType ) {
228230 case EventType . Connect : {
@@ -277,7 +279,7 @@ export class CloudEventsDispatcher {
277279 return true ;
278280 }
279281 default :
280- console . warn ( `Unknown EventType ${ eventType } ` ) ;
282+ logger . warning ( `Unknown EventType ${ eventType } ` ) ;
281283 return false ;
282284 }
283285 }
0 commit comments