58 lines
1.4 KiB
JavaScript
58 lines
1.4 KiB
JavaScript
const {
|
|
MIME_CE_JSON,
|
|
STRUCTURED_ATTRS_1 : {
|
|
TYPE,
|
|
SPEC_VERSION,
|
|
SOURCE,
|
|
ID,
|
|
TIME,
|
|
DATA_SCHEMA,
|
|
CONTENT_TYPE,
|
|
SUBJECT,
|
|
DATA,
|
|
DATA_BASE64,
|
|
MIME_JSON
|
|
}
|
|
} = require("../constants.js");
|
|
|
|
const Spec = require("./spec_1.js");
|
|
const JSONParser = require("../../../formats/json/parser.js");
|
|
|
|
const jsonParser = new JSONParser();
|
|
|
|
const parserByMime = {
|
|
[MIME_JSON]: jsonParser,
|
|
[MIME_CE_JSON]: jsonParser
|
|
};
|
|
|
|
const allowedContentTypes = [ MIME_CE_JSON ];
|
|
|
|
function parser(name, parser = (v) => v) {
|
|
return { name: name, parser: parser};
|
|
}
|
|
const passThroughParser = parser;
|
|
|
|
const parserMap = new Map();
|
|
parserMap.set(TYPE, passThroughParser("type"));
|
|
parserMap.set(SPEC_VERSION, passThroughParser("specversion"));
|
|
parserMap.set(SOURCE, passThroughParser("source"));
|
|
parserMap.set(ID, passThroughParser("id"));
|
|
parserMap.set(TIME, parser("time", (v) => new Date(Date.parse(v))));
|
|
parserMap.set(DATA_SCHEMA, passThroughParser("dataSchema"));
|
|
parserMap.set(CONTENT_TYPE, passThroughParser("dataContentType"));
|
|
parserMap.set(SUBJECT, passThroughParser("subject"));
|
|
parserMap.set(DATA, passThroughParser("data"));
|
|
parserMap.set(DATA_BASE64, passThroughParser("data"));
|
|
|
|
class Receiver {
|
|
constructor() {
|
|
this.parserByMime = parserByMime;
|
|
this.parserMap = parserMap;
|
|
this.allowedContentTypes = allowedContentTypes;
|
|
this.Spec = Spec;
|
|
this.spec = new Spec();
|
|
}
|
|
}
|
|
|
|
module.exports = Receiver;
|