13
13
# limitations under the License.
14
14
"""Internal utilities for Firebase Alert function types."""
15
15
16
- # pylint: disable=protected-access
16
+ # pylint: disable=protected-access,cyclic-import
17
17
import typing as _typing
18
- import datetime as _dt
19
18
import cloudevents .http as _ce
19
+ import util as _util
20
20
from firebase_functions .alerts import FirebaseAlertData
21
21
22
22
from functions_framework import logging as _logging
@@ -102,14 +102,10 @@ def new_nonfatal_issue_payload_from_ce_payload(payload: dict):
102
102
103
103
def regression_alert_payload_from_ce_payload (payload : dict ):
104
104
from firebase_functions .alerts .crashlytics_fn import RegressionAlertPayload
105
- return RegressionAlertPayload (
106
- type = payload ["type" ],
107
- issue = issue_from_ce_payload (payload ["issue" ]),
108
- resolve_time = _dt .datetime .strptime (
109
- payload ["resolveTime" ],
110
- "%Y-%m-%dT%H:%M:%S.%f%z" ,
111
- ),
112
- )
105
+ return RegressionAlertPayload (type = payload ["type" ],
106
+ issue = issue_from_ce_payload (payload ["issue" ]),
107
+ resolve_time = _util .timestamp_conversion (
108
+ payload ["resolveTime" ]))
113
109
114
110
115
111
def trending_issue_details_from_ce_payload (payload : dict ):
@@ -125,10 +121,7 @@ def trending_issue_details_from_ce_payload(payload: dict):
125
121
def stability_digest_payload_from_ce_payload (payload : dict ):
126
122
from firebase_functions .alerts .crashlytics_fn import StabilityDigestPayload
127
123
return StabilityDigestPayload (
128
- digest_date = _dt .datetime .strptime (
129
- payload ["digestDate" ],
130
- "%Y-%m-%dT%H:%M:%S.%f%z" ,
131
- ),
124
+ digest_date = _util .timestamp_conversion (payload ["digestDate" ]),
132
125
trending_issues = [
133
126
trending_issue_details_from_ce_payload (issue )
134
127
for issue in payload ["trendingIssues" ]
@@ -139,10 +132,7 @@ def velocity_alert_payload_from_ce_payload(payload: dict):
139
132
from firebase_functions .alerts .crashlytics_fn import VelocityAlertPayload
140
133
return VelocityAlertPayload (
141
134
issue = issue_from_ce_payload (payload ["issue" ]),
142
- create_time = _dt .datetime .strptime (
143
- payload ["createTime" ],
144
- "%Y-%m-%dT%H:%M:%S.%f%z" ,
145
- ),
135
+ create_time = _util .timestamp_conversion (payload ["createTime" ]),
146
136
crash_count = payload ["crashCount" ],
147
137
crash_percentage = payload ["crashPercentage" ],
148
138
first_version = payload ["firstVersion" ],
@@ -186,14 +176,9 @@ def firebase_alert_data_from_ce(event_dict: dict,) -> FirebaseAlertData:
186
176
_logging .warning (f"Unhandled Firebase Alerts alert type: { alert_type } " )
187
177
188
178
return FirebaseAlertData (
189
- create_time = _dt .datetime .strptime (
190
- event_dict ["createTime" ],
191
- "%Y-%m-%dT%H:%M:%S.%f%z" ,
192
- ),
193
- end_time = _dt .datetime .strptime (
194
- event_dict ["endTime" ],
195
- "%Y-%m-%dT%H:%M:%S.%f%z" ,
196
- ) if "endTime" in event_dict else None ,
179
+ create_time = _util .timestamp_conversion (event_dict ["createTime" ]),
180
+ end_time = _util .timestamp_conversion (event_dict ["endTime" ])
181
+ if "endTime" in event_dict else None ,
197
182
payload = alert_payload ,
198
183
)
199
184
@@ -204,25 +189,14 @@ def event_from_ce_helper(raw: _ce.CloudEvent, cls, app_id=True):
204
189
event_dict = {** event_data , ** event_attributes }
205
190
alert_type : str = event_dict ["alerttype" ]
206
191
event_kwargs = {
207
- "alert_type" :
208
- alert_type ,
209
- "data" :
210
- firebase_alert_data_from_ce (event_dict ),
211
- "id" :
212
- event_dict ["id" ],
213
- "source" :
214
- event_dict ["source" ],
215
- "specversion" :
216
- event_dict ["specversion" ],
217
- "subject" :
218
- event_dict ["subject" ] if "subject" in event_dict else None ,
219
- "time" :
220
- _dt .datetime .strptime (
221
- event_dict ["time" ],
222
- "%Y-%m-%dT%H:%M:%S.%f%z" ,
223
- ),
224
- "type" :
225
- event_dict ["type" ],
192
+ "alert_type" : alert_type ,
193
+ "data" : firebase_alert_data_from_ce (event_dict ),
194
+ "id" : event_dict ["id" ],
195
+ "source" : event_dict ["source" ],
196
+ "specversion" : event_dict ["specversion" ],
197
+ "subject" : event_dict ["subject" ] if "subject" in event_dict else None ,
198
+ "time" : _util .timestamp_conversion (event_dict ["time" ]),
199
+ "type" : event_dict ["type" ],
226
200
}
227
201
if app_id :
228
202
event_kwargs ["app_id" ] = event_dict .get ("appid" )
0 commit comments