@@ -40,7 +40,7 @@ class O365Collector extends PawsCollector {
4040 super ( context , creds , packageJson . version , [ checkO365Subscriptions ] , [ ] ) ;
4141 this . o365_mgmnt_client = m_o365mgmnt . getO365ManagmentClient ( creds . pawsCreds ) ;
4242 }
43- pawsInitCollectionState ( event , callback ) {
43+ async pawsInitCollectionState ( event ) {
4444 let startTs = process . env . paws_collection_start_ts ?
4545 process . env . paws_collection_start_ts :
4646 moment ( ) . toISOString ( ) ;
@@ -68,23 +68,21 @@ class O365Collector extends PawsCollector {
6868 poll_interval_sec : 1
6969 }
7070 } ) ;
71- // bind the this to checkO365Subscriptions to acces the pawsCreds
72- const checkSubscriptions = checkO365Subscriptions . bind ( this ) ;
73- return checkSubscriptions ( ( err ) => {
74- return callback ( err , initialStates , 1 ) ;
75- } ) ;
71+ // bind the this to checkO365Subscriptions to access the pawsCreds
72+ await checkO365Subscriptions . call ( this ) ;
73+ return { state : initialStates , nextInvocationTimeout : 1 } ;
7674 }
7775
78- pawsGetRegisterParameters ( event , callback ) {
76+ async pawsGetRegisterParameters ( event ) {
7977 const regValues = {
8078 azureTenantId : process . env . paws_collector_param_string_1 ,
8179 azureStreams : process . env . collector_streams
8280 } ;
8381
84- callback ( null , regValues ) ;
82+ return regValues ;
8583 }
8684
87- pawsGetLogs ( state , callback ) {
85+ async pawsGetLogs ( state ) {
8886 let collector = this ;
8987 // This code can remove once exsisting code set collector_streams env variable
9088 if ( ! process . env . collector_streams ) {
@@ -97,7 +95,7 @@ class O365Collector extends PawsCollector {
9795 state . until = nextUntilMoment . toISOString ( ) ;
9896 state . nextPage = null ;
9997 state . poll_interval_sec = nextPollInterval ;
100- return callback ( null , [ ] , state , state . poll_interval_sec ) ;
98+ return [ [ ] , state , state . poll_interval_sec ] ;
10199 }
102100
103101 if ( moment ( ) . diff ( state . since , 'days' , true ) > 7 ) {
@@ -151,7 +149,7 @@ class O365Collector extends PawsCollector {
151149 const contentUriFun = ( { contentUri} ) => collector . o365_mgmnt_client . getPreFormedUrl ( contentUri ) ;
152150 const poolLimit = 20 ;
153151
154- return this . asyncPoolAll ( poolLimit , parsedBody , contentUriFun ) . then ( content => {
152+ return collector . asyncPoolAll ( poolLimit , parsedBody , contentUriFun ) . then ( content => {
155153 return {
156154 logs : content . reduce ( ( agg , { parsedBody} ) => [ ...parsedBody , ...agg ] , [ ] ) ,
157155 nextPage : nextPageUri
@@ -160,43 +158,40 @@ class O365Collector extends PawsCollector {
160158 } ) ;
161159
162160 // Now that we have all the content uri promises agregated, we can call them and collect the data
163- contentPromise . then ( ( { logs, nextPage} ) => {
161+ return contentPromise . then ( async ( { logs, nextPage} ) => {
164162 let newState ;
165163 if ( nextPage === undefined ) {
166- newState = this . _getNextCollectionState ( state ) ;
164+ newState = collector . _getNextCollectionState ( state ) ;
167165 } else {
168- newState = this . _getNextCollectionStateWithNextPage ( state , nextPage ) ;
166+ newState = collector . _getNextCollectionStateWithNextPage ( state , nextPage ) ;
169167 }
170168
171169 let uniqueLogs = [ ] ;
172- collector . removeDuplicatedItem ( logs , "Id" , ( err , res ) => {
173- if ( err ) {
174- return callback ( err ) ;
175- }
176- else {
177- if ( res . length > 0 ) {
178- uniqueLogs = [ ...res ] ;
179- }
180- return callback ( null , uniqueLogs , newState , newState . poll_interval_sec ) ;
181- }
182- } ) ;
170+ const res = await collector . removeDuplicatedItem ( logs , "Id" ) ;
171+ if ( res . length > 0 ) {
172+ uniqueLogs = [ ...res ] ;
173+ }
174+ return [ uniqueLogs , newState , newState . poll_interval_sec ] ;
183175 } ) . catch ( err => {
184176 // set errorCode to showcase client error on DDMetric
185- if ( typeof err === 'object' ) {
177+ if ( typeof err === 'object' && err !== null ) {
186178 err . errorCode = err . code ? err . code : ( err . statusCode ? err . statusCode : err . status ) ;
187179 }
188- let newState = this . _handleMSManagementApiError ( err , state ) ;
180+ let newState = collector . _handleMSManagementApiError ( err , state ) ;
189181 if ( newState ) {
190- return callback ( null , [ ] , newState , newState . poll_interval_sec ) ;
182+ return [ [ ] , newState , newState . poll_interval_sec ] ;
191183 }
192184
193185 if ( ! err . code && err . message ) {
194- const formatedError = this . _formatErrorMessage ( err ) ;
195- AlLogger . error ( `O365000003 Error in collection: ${ err . message } ` ) ;
196- return callback ( formatedError ) ;
186+ const formatedError = collector . _formatErrorMessage ( err ) ;
187+ AlLogger . error ( `O365000003 Error in collection: ${ formatedError . message || err . message } ` ) ;
188+ throw formatedError ;
189+ } else if ( typeof err === 'string' ) {
190+ // if error is a string, wrap it in Error
191+ throw new Error ( err ) ;
197192 } else {
198- // if error is string or don't have err.code in error object, then return complete error object/string.
199- return callback ( err ) ;
193+ // if error is already an Error object or object with details, throw as is
194+ throw err ;
200195 }
201196 } ) ;
202197 }
0 commit comments