12
12
// See the License for the specific language governing permissions and
13
13
// limitations under the License.
14
14
import { Request , Response , NextFunction } from 'express' ;
15
- import { isBinaryCloudEvent , getBinaryCloudEventContext } from '../cloudevents' ;
15
+ import {
16
+ CE_SERVICE ,
17
+ isBinaryCloudEvent ,
18
+ getBinaryCloudEventContext ,
19
+ EventConversionError ,
20
+ } from '../cloudevents' ;
16
21
17
- const CE_TO_BACKGROUND_TYPE = new Map (
18
- Object . entries ( {
19
- 'google.cloud.pubsub.topic.v1.messagePublished' :
20
- 'google.pubsub.topic.publish' ,
21
- 'google.cloud.storage.object.v1.finalized' :
22
- 'google.storage.object.finalize' ,
23
- 'google.cloud.storage.object.v1.deleted' : 'google.storage.object.delete' ,
24
- 'google.cloud.storage.object.v1.archived' : 'google.storage.object.archive' ,
25
- 'google.cloud.storage.object.v1.metadataUpdated' :
26
- 'google.storage.object.metadataUpdate' ,
27
- 'google.cloud.firestore.document.v1.written' :
28
- 'providers/cloud.firestore/eventTypes/document.write' ,
29
- 'google.cloud.firestore.document.v1.created' :
30
- 'providers/cloud.firestore/eventTypes/document.create' ,
31
- 'google.cloud.firestore.document.v1.updated' :
32
- 'providers/cloud.firestore/eventTypes/document.update' ,
33
- 'google.cloud.firestore.document.v1.deleted' :
34
- 'providers/cloud.firestore/eventTypes/document.delete' ,
35
- 'google.firebase.auth.user.v1.created' :
36
- 'providers/firebase.auth/eventTypes/user.create' ,
37
- 'google.firebase.auth.user.v1.deleted' :
38
- 'providers/firebase.auth/eventTypes/user.delete' ,
39
- 'google.firebase.analytics.log.v1.written' :
40
- 'providers/google.firebase.analytics/eventTypes/event.log' ,
41
- 'google.firebase.database.document.v1.created' :
42
- 'providers/google.firebase.database/eventTypes/ref.create' ,
43
- 'google.firebase.database.document.v1.written' :
44
- 'providers/google.firebase.database/eventTypes/ref.write' ,
45
- 'google.firebase.database.document.v1.updated' :
46
- 'providers/google.firebase.database/eventTypes/ref.update' ,
47
- 'google.firebase.database.document.v1.deleted' :
48
- 'providers/google.firebase.database/eventTypes/ref.delete' ,
49
- } )
50
- ) ;
51
-
52
- // CloudEvent service names.
53
- const FIREBASE_AUTH_CE_SERVICE = 'firebaseauth.googleapis.com' ;
54
- const PUBSUB_CE_SERVICE = 'pubsub.googleapis.com' ;
55
- const STORAGE_CE_SERVICE = 'storage.googleapis.com' ;
22
+ // Maps CloudEvent types to the equivalent GCF Event type
23
+ export const CE_TO_BACKGROUND_TYPE : { [ k : string ] : string } = {
24
+ 'google.cloud.pubsub.topic.v1.messagePublished' :
25
+ 'google.pubsub.topic.publish' ,
26
+ 'google.cloud.storage.object.v1.finalized' : 'google.storage.object.finalize' ,
27
+ 'google.cloud.storage.object.v1.deleted' : 'google.storage.object.delete' ,
28
+ 'google.cloud.storage.object.v1.archived' : 'google.storage.object.archive' ,
29
+ 'google.cloud.storage.object.v1.metadataUpdated' :
30
+ 'google.storage.object.metadataUpdate' ,
31
+ 'google.cloud.firestore.document.v1.written' :
32
+ 'providers/cloud.firestore/eventTypes/document.write' ,
33
+ 'google.cloud.firestore.document.v1.created' :
34
+ 'providers/cloud.firestore/eventTypes/document.create' ,
35
+ 'google.cloud.firestore.document.v1.updated' :
36
+ 'providers/cloud.firestore/eventTypes/document.update' ,
37
+ 'google.cloud.firestore.document.v1.deleted' :
38
+ 'providers/cloud.firestore/eventTypes/document.delete' ,
39
+ 'google.firebase.auth.user.v1.created' :
40
+ 'providers/firebase.auth/eventTypes/user.create' ,
41
+ 'google.firebase.auth.user.v1.deleted' :
42
+ 'providers/firebase.auth/eventTypes/user.delete' ,
43
+ 'google.firebase.analytics.log.v1.written' :
44
+ 'providers/google.firebase.analytics/eventTypes/event.log' ,
45
+ 'google.firebase.database.document.v1.created' :
46
+ 'providers/google.firebase.database/eventTypes/ref.create' ,
47
+ 'google.firebase.database.document.v1.written' :
48
+ 'providers/google.firebase.database/eventTypes/ref.write' ,
49
+ 'google.firebase.database.document.v1.updated' :
50
+ 'providers/google.firebase.database/eventTypes/ref.update' ,
51
+ 'google.firebase.database.document.v1.deleted' :
52
+ 'providers/google.firebase.database/eventTypes/ref.delete' ,
53
+ } ;
56
54
57
55
const PUBSUB_MESSAGE_TYPE =
58
56
'type.googleapis.com/google.pubsub.v1.PubsubMessage' ;
@@ -62,11 +60,6 @@ const PUBSUB_MESSAGE_TYPE =
62
60
*/
63
61
const CE_SOURCE_REGEX = / \/ \/ ( [ ^ / ] + ) \/ ( .+ ) / ;
64
62
65
- /**
66
- * Costom exception class to represent errors durring event converion.
67
- */
68
- export class EventConversionError extends Error { }
69
-
70
63
/**
71
64
* Is the given request a known CloudEvent that can be converted to a legacy event.
72
65
* @param request express request object
@@ -75,7 +68,7 @@ export class EventConversionError extends Error {}
75
68
const isConvertableCloudEvent = ( request : Request ) : boolean => {
76
69
if ( isBinaryCloudEvent ( request ) ) {
77
70
const ceType = request . header ( 'ce-type' ) ;
78
- return CE_TO_BACKGROUND_TYPE . has ( ceType ! ) ;
71
+ return ! ! ceType && ceType in CE_TO_BACKGROUND_TYPE ;
79
72
}
80
73
return false ;
81
74
} ;
@@ -117,7 +110,7 @@ const marshallConvertableCloudEvent = (
117
110
let resource : string | { [ key : string ] : string } = `${ name } /${ subject } ` ;
118
111
119
112
switch ( service ) {
120
- case PUBSUB_CE_SERVICE :
113
+ case CE_SERVICE . PUBSUB :
121
114
// PubSub resource format
122
115
resource = {
123
116
service : service ,
@@ -129,7 +122,7 @@ const marshallConvertableCloudEvent = (
129
122
data = data . message ;
130
123
}
131
124
break ;
132
- case FIREBASE_AUTH_CE_SERVICE :
125
+ case CE_SERVICE . FIREBASE_AUTH :
133
126
// FirebaseAuth resource format
134
127
resource = name ;
135
128
if ( 'metadata' in data ) {
@@ -144,7 +137,7 @@ const marshallConvertableCloudEvent = (
144
137
}
145
138
}
146
139
break ;
147
- case STORAGE_CE_SERVICE :
140
+ case CE_SERVICE . STORAGE :
148
141
// CloudStorage resource format
149
142
resource = {
150
143
name : `${ name } /${ subject } ` ,
@@ -158,7 +151,7 @@ const marshallConvertableCloudEvent = (
158
151
context : {
159
152
eventId : ceContext . id ! ,
160
153
timestamp : ceContext . time ! ,
161
- eventType : CE_TO_BACKGROUND_TYPE . get ( ceContext . type ! ) ,
154
+ eventType : CE_TO_BACKGROUND_TYPE [ ceContext . type ! ] ,
162
155
resource,
163
156
} ,
164
157
data,
0 commit comments