56 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| var axios = require("axios");
 | |
| var empty = require("is-empty");
 | |
| 
 | |
| const Constants = require("./constants.js");
 | |
| 
 | |
| function BinaryHTTPEmitter(config, headerByGetter, extensionPrefix){
 | |
|   this.config = JSON.parse(JSON.stringify(config));
 | |
|   this.headerByGetter = headerByGetter;
 | |
|   this.extensionPrefix = extensionPrefix;
 | |
| 
 | |
|   this.config[Constants.HEADERS] =
 | |
|     (!this.config[Constants.HEADERS]
 | |
|       ? {}
 | |
|       : this.config[Constants.HEADERS]);
 | |
| 
 | |
|   // default is json
 | |
|   if(!this.config[Constants.HEADERS][Constants.HEADER_CONTENT_TYPE]){
 | |
|     this.config[Constants.HEADERS][Constants.HEADER_CONTENT_TYPE] =
 | |
|       Constants.DEFAULT_CONTENT_TYPE;
 | |
|   }
 | |
| }
 | |
| 
 | |
| BinaryHTTPEmitter.prototype.emit = function(cloudevent) {
 | |
|   // Create new request object
 | |
|   var _config = JSON.parse(JSON.stringify(this.config));
 | |
| 
 | |
|   // Always set stuff in _config
 | |
|   var _headers = _config[Constants.HEADERS];
 | |
| 
 | |
|   Object.keys(this.headerByGetter)
 | |
|     .filter((getter) => cloudevent[getter]())
 | |
|     .forEach((getter) => {
 | |
|       let header = this.headerByGetter[getter];
 | |
|       _headers[header.name] =
 | |
|         header.parser(
 | |
|           cloudevent[getter]()
 | |
|         );
 | |
|     });
 | |
| 
 | |
|   // Set the cloudevent payload
 | |
|   _config[Constants.DATA_ATTRIBUTE] = cloudevent.format().data;
 | |
| 
 | |
|   // Have extensions?
 | |
|   var exts = cloudevent.getExtensions();
 | |
|   Object.keys(exts)
 | |
|     .filter((ext) => Object.hasOwnProperty.call(exts, ext))
 | |
|     .forEach((ext) => {
 | |
|       _headers[this.extensionPrefix + ext] = exts[ext];
 | |
|     });
 | |
| 
 | |
|   // Return the Promise
 | |
|   return axios.request(_config);
 | |
| };
 | |
| 
 | |
| module.exports = BinaryHTTPEmitter;
 |