@@ -29,66 +29,63 @@ npm install cloudevents
29
29
30
30
#### Receiving Events
31
31
32
- You can choose almost any popular web framework for port binding. Use a
33
- ` Receiver ` to process the incoming HTTP request. The receiver accepts
34
- binary and structured events in either the 1.0 or 0.3 protocol formats .
32
+ You can choose any popular web framework for port binding. A ` CloudEvent `
33
+ object can be created by simply providing the ` HTTP ` protocol binding
34
+ the incoming headers and request body .
35
35
36
36
``` js
37
37
const app = require (" express" )();
38
- const {Receiver } = require (" cloudevents" );
38
+ const { HTTP } = require (" cloudevents" );
39
39
40
40
app .post (" /" , (req , res ) => {
41
41
// body and headers come from an incoming HTTP request, e.g. express.js
42
- const receivedEvent = Receiver . accept ( req .headers , req .body );
42
+ const receivedEvent = HTTP . toEvent ({ headers : req .headers , body : req .body } );
43
43
console .log (receivedEvent);
44
44
});
45
45
```
46
46
47
47
#### Emitting Events
48
48
49
- You can send events over HTTP in either binary or structured format.
50
-
51
- By default, the ` Emitter ` will emit events over HTTP POST using the
52
- binary transport protocol. The ` Emitter ` will examine the ` specversion `
53
- of the event being sent, and use the appropriate protocol version. To send
54
- structured events, add ` Protocol.HTTPStructured ` as a parameter to
55
- ` emitter.send() ` .
49
+ You can send events over HTTP in either binary or structured format
50
+ using the ` HTTP ` binding to create a ` Message ` which has properties
51
+ for ` headers ` and ` body ` .
56
52
57
53
``` js
58
- const { CloudEvent , Emitter , Protocol , Version } = require (" cloudevents" );
54
+ const axios = require (' axios' ).default ;
55
+ const { HTTP } = require (" cloudevents" );
59
56
60
- // With only an endpoint URL, this creates a v1 emitter
61
- const emitter = new Emitter ({
62
- url: " https://cloudevents.io/example"
63
- });
64
- const event = new CloudEvent ({
65
- type, source, data
57
+
58
+ const ce = new CloudEvent ({ type, source, data })
59
+ const message = HTTP .binary (ce); // Or HTTP.structured(ce)
60
+
61
+ axios ({
62
+ method: ' post' ,
63
+ url: ' ...' ,
64
+ data: message .body ,
65
+ headers: message .headers ,
66
66
});
67
+ ```
68
+
69
+ You may also use the ` emitterFor() ` function as a convenience.
67
70
68
- // By default, the emitter will send binary events
69
- emitter .send (event ).then ((response ) => {
70
- // handle the response
71
- }).catch (console .error );
72
-
73
- // To send a structured event, just add that as an option
74
- emitter .send (event , { protocol: Protocol .HTTPStructured })
75
- .then ((response ) => {
76
- // handle the response
77
- }).catch (console .error );
78
-
79
- // To send an event to an alternate URL, add that as an option
80
- emitter .send (event , { url: " https://alternate.com/api" })
81
- .then ((response ) => {
82
- // handle the response
83
- }).catch (console .error );
84
-
85
- // Sending a v0.3 event works the same, If your event has a
86
- // specversion property of Version.V03, then it will be sent
87
- // using the 0.3 transport protocol
88
- emitter .send (new CloudEvent ({ specversion: Version .V03 , source, type }))
89
- .then ((response ) => {
90
- // handle the response
91
- }).catch (console .error );
71
+ ``` js
72
+ const axios = require (' axios' ).default ;
73
+ const { emitterFor , Mode } = require (" cloudevents" );
74
+
75
+ function sendWithAxios (message ) {
76
+ // Do what you need with the message headers
77
+ // and body in this function, then send the
78
+ // event
79
+ axios ({
80
+ method: ' post' ,
81
+ url: ' ...' ,
82
+ data: message .body ,
83
+ headers: message .headers ,
84
+ });
85
+ }
86
+
87
+ const emit = emitterFor (sendWithAxios, { mode: Mode .BINARY });
88
+ emit (new CloudEvent ({ type, source, data }));
92
89
```
93
90
94
91
## CloudEvent Objects
0 commit comments