1+ const {
2+ MIME_JSON ,
3+ MIME_CE_JSON ,
4+ STRUCTURED_ATTRS_03 : {
5+ TYPE ,
6+ SPEC_VERSION ,
7+ SOURCE ,
8+ ID ,
9+ TIME ,
10+ SCHEMA_URL ,
11+ CONTENT_ENCODING ,
12+ CONTENT_TYPE ,
13+ SUBJECT ,
14+ DATA
15+ }
16+ } = require ( "./constants.js" ) ;
117const Constants = require ( "./constants.js" ) ;
218const Spec = require ( "../../specs/spec_0_3.js" ) ;
319const JSONParser = require ( "../../formats/json/parser.js" ) ;
@@ -7,60 +23,35 @@ const StructuredHTTPReceiver = require("./receiver_structured.js");
723const jsonParserSpec = new JSONParser ( ) ;
824
925const parserByMime = { } ;
10- parserByMime [ Constants . MIME_JSON ] = jsonParserSpec ;
11- parserByMime [ Constants . MIME_CE_JSON ] = jsonParserSpec ;
26+ parserByMime [ MIME_JSON ] = jsonParserSpec ;
27+ parserByMime [ MIME_CE_JSON ] = jsonParserSpec ;
1228
1329const allowedContentTypes = [ ] ;
14- allowedContentTypes . push ( Constants . MIME_CE_JSON ) ;
30+ allowedContentTypes . push ( MIME_CE_JSON ) ;
1531
16- const setterByAttribute = { } ;
17- setterByAttribute [ Constants . STRUCTURED_ATTRS_03 . TYPE ] = {
18- name : "type" ,
19- parser : ( v ) => v
20- } ;
21- setterByAttribute [ Constants . STRUCTURED_ATTRS_03 . SPEC_VERSION ] = {
22- name : "specversion" ,
23- parser : ( v ) => v
24- } ;
25- setterByAttribute [ Constants . STRUCTURED_ATTRS_03 . SOURCE ] = {
26- name : "source" ,
27- parser : ( v ) => v
28- } ;
29- setterByAttribute [ Constants . STRUCTURED_ATTRS_03 . ID ] = {
30- name : "id" ,
31- parser : ( v ) => v
32- } ;
33- setterByAttribute [ Constants . STRUCTURED_ATTRS_03 . TIME ] = {
34- name : "time" ,
35- parser : ( v ) => new Date ( Date . parse ( v ) )
36- } ;
37- setterByAttribute [ Constants . STRUCTURED_ATTRS_03 . SCHEMA_URL ] = {
38- name : "schemaurl" ,
39- parser : ( v ) => v
40- } ;
41- setterByAttribute [ Constants . STRUCTURED_ATTRS_03 . CONTENT_ENCONDING ] = {
42- name : "dataContentEncoding" ,
43- parser : ( v ) => v
44- } ;
45- setterByAttribute [ Constants . STRUCTURED_ATTRS_03 . CONTENT_TYPE ] = {
46- name : "dataContentType" ,
47- parser : ( v ) => v
48- } ;
49- setterByAttribute [ Constants . STRUCTURED_ATTRS_03 . SUBJECT ] = {
50- name : "subject" ,
51- parser : ( v ) => v
52- } ;
53- setterByAttribute [ Constants . STRUCTURED_ATTRS_03 . DATA ] = {
54- name : "data" ,
55- parser : ( v ) => v
56- } ;
32+ function parser ( name , parser = ( v ) => v ) {
33+ return { name : name , parser : parser } ;
34+ }
35+ const passThroughParser = parser ;
36+
37+ const parserMap = new Map ( ) ;
38+ parserMap . set ( TYPE , passThroughParser ( "type" ) ) ;
39+ parserMap . set ( SPEC_VERSION , passThroughParser ( "specversion" ) ) ;
40+ parserMap . set ( SOURCE , passThroughParser ( "source" ) ) ;
41+ parserMap . set ( ID , passThroughParser ( "id" ) ) ;
42+ parserMap . set ( TIME , parser ( "time" , ( v ) => new Date ( Date . parse ( v ) ) ) ) ;
43+ parserMap . set ( SCHEMA_URL , passThroughParser ( "schemaurl" ) ) ;
44+ parserMap . set ( CONTENT_ENCODING , passThroughParser ( "dataContentEncoding" ) ) ;
45+ parserMap . set ( CONTENT_TYPE , passThroughParser ( "dataContentType" ) ) ;
46+ parserMap . set ( SUBJECT , passThroughParser ( "subject" ) ) ;
47+ parserMap . set ( DATA , passThroughParser ( "data" ) ) ;
5748
5849// Leaving this in place for now. TODO: fixme
5950// eslint-disable-next-line
6051function Receiver ( configuration ) {
6152 this . receiver = new StructuredHTTPReceiver (
6253 parserByMime ,
63- setterByAttribute ,
54+ parserMap ,
6455 allowedContentTypes ,
6556 Spec
6657 ) ;
0 commit comments