1 | const payload = require('@bugsnag/core/lib/json-payload')
|
2 | const { isoDate } = require('@bugsnag/core/lib/es-utils')
|
3 | const request = require('./request')
|
4 |
|
5 | module.exports = () => ({
|
6 | sendReport: (logger, config, report, cb = () => {}) => {
|
7 | const _cb = err => {
|
8 | if (err) logger.error(`Report failed to send…\n${(err && err.stack) ? err.stack : err}`, err)
|
9 | cb(err)
|
10 | }
|
11 |
|
12 | try {
|
13 | request({
|
14 | url: config.endpoints.notify,
|
15 | headers: {
|
16 | 'Content-Type': 'application/json',
|
17 | 'Bugsnag-Api-Key': report.apiKey || config.apiKey,
|
18 | 'Bugsnag-Payload-Version': '4',
|
19 | 'Bugsnag-Sent-At': isoDate()
|
20 | },
|
21 | body: payload.report(report, config.filters),
|
22 | agent: config.agent
|
23 | }, (err, body) => _cb(err))
|
24 | } catch (e) {
|
25 | _cb(e)
|
26 | }
|
27 | },
|
28 | sendSession: (logger, config, session, cb = () => {}) => {
|
29 | const _cb = err => {
|
30 | if (err) logger.error(`Session failed to send…\n${(err && err.stack) ? err.stack : err}`, err)
|
31 | cb(err)
|
32 | }
|
33 |
|
34 | try {
|
35 | request({
|
36 | url: config.endpoints.sessions,
|
37 | headers: {
|
38 | 'Content-Type': 'application/json',
|
39 | 'Bugsnag-Api-Key': config.apiKey,
|
40 | 'Bugsnag-Payload-Version': '1',
|
41 | 'Bugsnag-Sent-At': isoDate()
|
42 | },
|
43 | body: payload.session(session, config.filters),
|
44 | agent: config.agent
|
45 | }, err => _cb(err))
|
46 | } catch (e) {
|
47 | _cb(e)
|
48 | }
|
49 | }
|
50 | })
|