1
1
import { Parse } from 'parse/node' ;
2
2
import PromiseRouter from '../PromiseRouter' ;
3
- import rest from '../rest' ;
4
3
5
4
const Promise = Parse . Promise ;
6
- const INFO = 'info' ;
7
- const ERROR = 'error' ;
8
5
const MILLISECONDS_IN_A_DAY = 24 * 60 * 60 * 1000 ;
9
6
10
- // only allow request with master key
11
- let enforceSecurity = ( auth ) => {
12
- if ( ! auth || ! auth . isMaster ) {
13
- throw new Parse . Error (
14
- Parse . Error . OPERATION_FORBIDDEN ,
15
- 'Clients aren\'t allowed to perform the ' +
16
- 'get' + ' operation on logs.'
17
- ) ;
18
- }
7
+ export const LogLevel = {
8
+ INFO : 'info' ,
9
+ ERROR : 'error'
19
10
}
20
11
21
- // check that date input is valid
22
- let isValidDateTime = ( date ) => {
23
- if ( ! date || isNaN ( Number ( date ) ) ) {
24
- return false ;
25
- }
12
+ export const LogOrder = {
13
+ DESCENDING : 'desc' ,
14
+ ASCENDING : 'asc'
26
15
}
27
16
28
17
export class LoggerController {
29
-
30
- constructor ( loggerAdapter ) {
18
+
19
+ constructor ( loggerAdapter , loggerOptions ) {
31
20
this . _loggerAdapter = loggerAdapter ;
32
21
}
22
+
23
+ // check that date input is valid
24
+ static validDateTime ( date ) {
25
+ if ( ! date ) {
26
+ return null ;
27
+ }
28
+ date = new Date ( date ) ;
29
+
30
+ if ( ! isNaN ( date . getTime ( ) ) ) {
31
+ return date ;
32
+ }
33
+
34
+ return null ;
35
+ }
36
+
37
+ static parseOptions ( options = { } ) {
38
+ let from = LoggerController . validDateTime ( options . from ) ||
39
+ new Date ( Date . now ( ) - 7 * MILLISECONDS_IN_A_DAY ) ;
40
+ let until = LoggerController . validDateTime ( options . until ) || new Date ( ) ;
41
+ let size = Number ( options . size ) || 10 ;
42
+ let order = options . order || LogOrder . DESCENDING ;
43
+ let level = options . level || LogLevel . INFO ;
44
+
45
+ return {
46
+ from,
47
+ until,
48
+ size,
49
+ order,
50
+ level,
51
+ } ;
52
+ }
33
53
34
54
// Returns a promise for a {response} object.
35
55
// query params:
@@ -38,41 +58,21 @@ export class LoggerController {
38
58
// until (optional) End time for the search. Defaults to current time.
39
59
// order (optional) Direction of results returned, either “asc” or “desc”. Defaults to “desc”.
40
60
// size (optional) Number of rows returned by search. Defaults to 10
41
- handleGET ( req ) {
61
+ getLogs ( options = { } ) {
42
62
if ( ! this . _loggerAdapter ) {
43
63
throw new Parse . Error ( Parse . Error . PUSH_MISCONFIGURED ,
44
64
'Logger adapter is not availabe' ) ;
45
65
}
46
66
47
67
let promise = new Parse . Promise ( ) ;
48
- let from = ( isValidDateTime ( req . query . from ) && new Date ( req . query . from ) ) ||
49
- new Date ( Date . now ( ) - 7 * MILLISECONDS_IN_A_DAY ) ;
50
- let until = ( isValidDateTime ( req . query . until ) && new Date ( req . query . until ) ) || new Date ( ) ;
51
- let size = Number ( req . query . size ) || 10 ;
52
- let order = req . query . order || 'desc' ;
53
- let level = req . query . level || INFO ;
54
- enforceSecurity ( req . auth ) ;
55
- this . _loggerAdapter . query ( {
56
- from,
57
- until,
58
- size,
59
- order,
60
- level,
61
- } , ( result ) => {
62
- promise . resolve ( {
63
- response : result
64
- } ) ;
68
+
69
+ options = LoggerController . parseOptions ( options ) ;
70
+
71
+ this . _loggerAdapter . query ( options , ( result ) => {
72
+ promise . resolve ( result ) ;
65
73
} ) ;
66
74
return promise ;
67
75
}
68
-
69
- getExpressRouter ( ) {
70
- let router = new PromiseRouter ( ) ;
71
- router . route ( 'GET' , '/logs' , ( req ) => {
72
- return this . handleGET ( req ) ;
73
- } ) ;
74
- return router ;
75
- }
76
76
}
77
77
78
78
export default LoggerController ;
0 commit comments