Skip to content

Commit

Permalink
Merge pull request #672 from bugsnag/v7-remove-client-request-prop
Browse files Browse the repository at this point in the history
V7: Remove client request prop
  • Loading branch information
bengourley committed Dec 16, 2019
2 parents 8f3aaff + e359574 commit cfe31a9
Show file tree
Hide file tree
Showing 7 changed files with 27 additions and 25 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
- Refactor `notify()` to not accept events (they go via `_notify()` instead). Consolidate `Event` static methods into a single `.create()` utility, used by all automatic error detection components. [#664](https://github.com/bugsnag/bugsnag-js/pull/664)
- Add methods to pause and resume sessions [#666](https://github.com/bugsnag/bugsnag-js/pull/666)
- Add `pauseSession()` and `resumeSession()` methods to `Client` [#666](https://github.com/bugsnag/bugsnag-js/pull/666)
- Remove `client.request` property [#672](https://github.com/bugsnag/bugsnag-js/pull/672)

## 6.4.3 (2019-10-21)

Expand Down
2 changes: 0 additions & 2 deletions packages/core/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ class BugsnagClient {
this.app = {}
this.context = undefined
this.device = undefined
this.request = undefined
this._user = {}

// callbacks:
Expand Down Expand Up @@ -225,7 +224,6 @@ class BugsnagClient {
event.app = { ...{ releaseStage }, ...event.app, ...this.app }
event.context = event.context || this.context || undefined
event.device = { ...event.device, ...this.device }
event.request = { ...event.request, ...this.request }
event._metadata = { ...event._metadata, ...this._metadata }
event._user = { ...event._user, ...this._user }
event.breadcrumbs = this.breadcrumbs.slice(0)
Expand Down
1 change: 0 additions & 1 deletion packages/core/lib/clone-client.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ module.exports = (client) => {
// so ensure they are are (shallow) cloned
clone.breadcrumbs = client.breadcrumbs.slice()
clone._metadata = { ...client._metadata }
clone.request = { ...client.request }
clone._user = { ...client._user }

clone._cbs = {
Expand Down
6 changes: 3 additions & 3 deletions packages/plugin-browser-request/test/request.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ describe('plugin: request', () => {
const payloads = []
client.use(plugin, window)

client.request = { url: 'foobar' }

client._setDelivery(client => ({ sendEvent: (payload) => payloads.push(payload) }))
client.notify(new Error('noooo'))
client.notify(new Error('noooo'), event => {
event.request.url = 'foobar'
})

expect(payloads.length).toEqual(1)
expect(payloads[0].events[0].request).toEqual({ url: 'foobar' })
Expand Down
14 changes: 8 additions & 6 deletions packages/plugin-express/src/express.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@ module.exports = {
// extract request info and pass it to the relevant bugsnag properties
const { request, metadata } = getRequestAndMetadataFromReq(req)
requestClient.addMetadata('request', metadata)
requestClient.request = request

// unhandled errors caused by this request
dom.on('error', (err) => {
const event = client.BugsnagEvent.create(err, false, handledState, 'express middleware', 1)
event.request = request
req.bugsnag._notify(event, () => {}, (e, event) => {
if (e) client._logger.error('Failed to send event to Bugsnag')
req.bugsnag._config.onUncaughtException(err, event, client._logger)
Expand All @@ -47,18 +47,20 @@ module.exports = {

const errorHandler = (err, req, res, next) => {
const event = client.BugsnagEvent.create(err, false, handledState, 'express middleware', 1)

const { metadata, request } = getRequestAndMetadataFromReq(req)
event.request = { ...event.request, ...request }
event.addMetadata('request', metadata)

if (req.bugsnag) {
req.bugsnag._notify(event)
} else {
client._logger.warn(
'req.bugsnag is not defined. Make sure the @bugsnag/plugin-express requestHandler middleware is added first.'
)
client._notify(event, (event) => {
const { metadata, request } = getRequestAndMetadataFromReq(req)
event.request = { ...request }
event.addMetadata('request', metadata)
})
client._notify(event)
}

next(err)
}

Expand Down
15 changes: 8 additions & 7 deletions packages/plugin-koa/src/koa.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@ module.exports = {
// extract request info and pass it to the relevant bugsnag properties
const { request, metadata } = getRequestAndMetadataFromCtx(ctx)
requestClient.addMetadata('request', metadata.request)
requestClient.request = request

try {
await next()
} catch (err) {
if (err.status === undefined || err.status >= 500) {
const event = client.BugsnagEvent.create(err, false, handledState, 'koa middleware', 1)
event.request = request
ctx.bugsnag._notify(event)
}
if (!ctx.response.headerSent) ctx.response.status = err.status || 500
Expand All @@ -53,13 +53,13 @@ module.exports = {
// extract request info and pass it to the relevant bugsnag properties
const { request, metadata } = getRequestAndMetadataFromCtx(this)
requestClient.addMetadata('request', metadata)
requestClient.request = request

try {
yield next
} catch (err) {
if (err.status === undefined || err.status >= 500) {
const event = client.BugsnagEvent.create(err, false, handledState, 'koa middleware', 1)
event.request = request
this.bugsnag._notify(event)
}
if (!this.headerSent) this.status = err.status || 500
Expand All @@ -68,15 +68,16 @@ module.exports = {

const errorHandler = (err, ctx) => {
const event = client.BugsnagEvent.create(err, false, handledState, 'koa middleware', 1)

const { metadata, request } = getRequestAndMetadataFromCtx(ctx)
event.request = { ...event.request, ...request }
event.addMetadata('request', metadata)

if (ctx.bugsnag) {
ctx.bugsnag._notify(event)
} else {
client._logger.warn('ctx.bugsnag is not defined. Make sure the @bugsnag/plugin-koa requestHandler middleware is added first.')
client._notify(event, (event) => {
const { metadata, request } = getRequestAndMetadataFromCtx(ctx)
event.request = { ...request }
event.addMetadata('request', metadata)
})
client._notify(event)
}
}

Expand Down
13 changes: 7 additions & 6 deletions packages/plugin-restify/src/restify.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ module.exports = {
// extract request info and pass it to the relevant bugsnag properties
const { request, metadata } = getRequestAndMetadataFromReq(req)
requestClient.addMetadata('request', metadata)
requestClient.request = request

// unhandled errors caused by this request
dom.on('error', (err) => {
const event = client.BugsnagEvent.create(err, false, handledState, 'restify middleware', 1)
event.request = request
req.bugsnag._notify(event, () => {}, (e, event) => {
if (e) client._logger.error('Failed to send event to Bugsnag')
req.bugsnag._config.onUncaughtException(err, event, client._logger)
Expand All @@ -50,18 +50,19 @@ module.exports = {

const errorHandler = (req, res, err, cb) => {
if (err.statusCode && err.statusCode < 500) return cb()

const event = client.BugsnagEvent.create(err, false, handledState, 'restify middleware', 1)
const { metadata, request } = getRequestAndMetadataFromReq(req)
event.request = { ...event.request, ...request }
event.addMetadata('request', metadata)

if (req.bugsnag) {
req.bugsnag._notify(event)
} else {
client._logger.warn(
'req.bugsnag is not defined. Make sure the @bugsnag/plugin-restify requestHandler middleware is added first.'
)
client._notify(event, (event) => {
const { metadata, request } = getRequestAndMetadataFromReq(req)
event.request = { ...request }
event.addMetadata('request', metadata)
})
client._notify(event)
}
cb()
}
Expand Down

0 comments on commit cfe31a9

Please sign in to comment.