1
- var utils = require ( './utils' ) ;
2
- var url = require ( 'url' ) ;
3
1
var cookie = require ( 'cookie' ) ;
2
+ var urlParser = require ( 'url' ) ;
3
+ var utils = require ( './utils' ) ;
4
4
5
5
module . exports . parseText = function parseText ( message , kwargs ) {
6
6
kwargs = kwargs || { } ;
7
- kwargs [ 'message' ] = message ;
7
+ kwargs . message = message ;
8
+
8
9
return kwargs ;
9
10
} ;
10
11
11
12
module . exports . parseError = function parseError ( err , kwargs , cb ) {
12
13
utils . parseStack ( err , function ( frames ) {
13
- kwargs [ ' message' ] = err . name + ': ' + ( err . message || '<no message>' ) ;
14
+ kwargs . message = err . name + ': ' + ( err . message || '<no message>' ) ;
14
15
kwargs [ 'sentry.interfaces.Exception' ] = {
15
16
type : err . name ,
16
17
value :err . message
@@ -28,13 +29,13 @@ module.exports.parseError = function parseError(err, kwargs, cb) {
28
29
}
29
30
}
30
31
if ( extraErrorProps ) {
31
- kwargs [ ' extra' ] = kwargs [ ' extra' ] || { } ;
32
- kwargs [ ' extra' ] [ err . name ] = extraErrorProps ;
32
+ kwargs . extra = kwargs . extra || { } ;
33
+ kwargs . extra [ err . name ] = extraErrorProps ;
33
34
}
34
35
35
36
for ( var n = frames . length - 1 ; n >= 0 ; n -- ) {
36
37
if ( frames [ n ] . in_app ) {
37
- kwargs [ ' culprit' ] = utils . getCulprit ( frames [ n ] ) ;
38
+ kwargs . culprit = utils . getCulprit ( frames [ n ] ) ;
38
39
break ;
39
40
}
40
41
}
@@ -45,7 +46,7 @@ module.exports.parseError = function parseError(err, kwargs, cb) {
45
46
46
47
module . exports . parseQuery = function parseQuery ( query , engine , kwargs ) {
47
48
kwargs = kwargs || { } ;
48
- kwargs [ ' message' ] = query ;
49
+ kwargs . message = query ;
49
50
kwargs [ 'sentry.interfaces.Query' ] = {
50
51
query : query ,
51
52
engine : engine
@@ -56,23 +57,97 @@ module.exports.parseQuery = function parseQuery(query, engine, kwargs) {
56
57
module . exports . parseRequest = function parseRequest ( req , kwargs ) {
57
58
kwargs = kwargs || { } ;
58
59
59
- // create absolute url
60
- var host = req . headers . host || '<no host>' ;
61
- var full_url = ( req . socket . encrypted || 'https' === req . headers [ 'x-forwarded-proto' ] ? 'https' : 'http' ) + '://' + host + req . url ;
60
+ // headers:
61
+ //
62
+ // node: req.headers
63
+ // express: req.headers
64
+ // koa: req.header
65
+ //
66
+ var headers = req . headers || req . header || { } ;
67
+
68
+ // method:
69
+ //
70
+ // node: req.method
71
+ // express: req.method
72
+ // koa: req.method
73
+ //
74
+ var method = req . method ;
75
+
76
+ // host:
77
+ //
78
+ // node: req.headers.host
79
+ // express: req.host
80
+ // koa: req.host
81
+ //
82
+ var host = req . host || headers . host || '<no host>' ;
83
+
84
+ // protocol:
85
+ //
86
+ // node: <n/a>
87
+ // express: req.protocol
88
+ // koa: req.protocol
89
+ //
90
+ var protocol = ( 'https' === req . protocol || true === req . secure || true === ( req . socket || { } ) . encrypted ) ? 'https' : 'http' ;
91
+
92
+ // url (including path and query string):
93
+ //
94
+ // node: req.originalUrl
95
+ // express: req.originalUrl
96
+ // koa: req.url
97
+ //
98
+ var originalUrl = req . originalUrl || req . url ;
62
99
100
+ // absolute url
101
+ var url = protocol + '://' + host + originalUrl ;
102
+
103
+ // query string
104
+ //
105
+ // node: req.url (raw)
106
+ // express: req.query
107
+ // koa: req.query
108
+ //
109
+ var query = req . query || urlParser . parse ( originalUrl || '' , true ) . query ;
110
+
111
+ // cookies:
112
+ //
113
+ // node: req.headers.cookie
114
+ // express: req.headers.cookie
115
+ // koa: req.headers.cookie
116
+ //
117
+ var cookies = cookie . parse ( headers . cookie || '' ) ;
118
+
119
+ // body data:
120
+ //
121
+ // node: req.body
122
+ // express: req.body
123
+ // koa: req.body
124
+ //
125
+ var data = req . body || '<unavailable>' ;
126
+
127
+ // client ip:
128
+ //
129
+ // node: req.connection.remoteAddress
130
+ // express: req.ip
131
+ // koa: req.ip
132
+ //
133
+ var ip = req . ip || ( req . connection || { } ) . remoteAddress ;
134
+
135
+ // http interface
63
136
var http = {
64
- method : req . method ,
65
- query_string : url . parse ( req . url ) . query ,
66
- headers : req . headers ,
67
- cookies : req . cookies || cookie . parse ( req . headers . cookies || '' ) ,
68
- data : req . body || '<unavailable>' ,
69
- url : full_url ,
137
+ method : method ,
138
+ query_string : query ,
139
+ headers : headers ,
140
+ cookies : cookies ,
141
+ data : data ,
142
+ url : url ,
70
143
env : process . env
71
144
} ;
72
145
73
- var ip = ( req . headers [ 'x-forwarded-for' ] || '' ) . split ( ',' ) [ 0 ] ||
74
- req . connection . remoteAddress ;
146
+ // add remote ip
75
147
http . env . REMOTE_ADDR = ip ;
148
+
149
+ // expose http interface
76
150
kwargs [ 'sentry.interfaces.Http' ] = http ;
151
+
77
152
return kwargs ;
78
153
} ;
0 commit comments