@@ -119,9 +119,53 @@ async def get_metrics(request: Request) -> DetailedMetricsResponse:
119119
120120 # Cache miss - fetch from service
121121 metrics = await get_detailed_metrics ()
122- cache_analytics (cache_key , metrics )
123122
124- return DetailedMetricsResponse (** metrics )
123+ # Process top breaches (convert Entity objects to dicts)
124+ top_breaches = []
125+ for breach in metrics ["top_breaches" ]:
126+ top_breaches .append (
127+ {
128+ "breachid" : breach .key .id_or_name ,
129+ "logo" : breach .get ("logo" ),
130+ "description" : breach .get ("xposure_desc" ),
131+ "count" : breach .get ("xposed_records" ),
132+ }
133+ )
134+
135+ # Process recent breaches (convert Entity objects to dicts)
136+ recent_breaches = []
137+ for breach in metrics ["recent_breaches" ]:
138+ timestamp = breach .get ("timestamp" )
139+ if hasattr (timestamp , "strftime" ):
140+ formatted_timestamp = timestamp .strftime ("%a, %d %b %Y %H:%M:%S GMT" )
141+ else :
142+ formatted_timestamp = datetime .datetime .utcnow ().strftime (
143+ "%a, %d %b %Y %H:%M:%S GMT"
144+ )
145+ recent_breaches .append (
146+ {
147+ "breachid" : breach .key .id_or_name ,
148+ "timestamp" : formatted_timestamp ,
149+ "logo" : breach .get ("logo" ),
150+ "description" : breach .get ("xposure_desc" ),
151+ "count" : breach .get ("xposed_records" ),
152+ }
153+ )
154+
155+ # Transform to response format before caching
156+ response_data = {
157+ "Breaches_Count" : metrics ["breaches_count" ],
158+ "Breaches_Records" : metrics ["breaches_total_records" ],
159+ "Pastes_Count" : str (metrics ["pastes_count" ]),
160+ "Pastes_Records" : metrics ["pastes_total_records" ],
161+ "Yearly_Breaches_Count" : metrics ["yearly_count" ],
162+ "Industry_Breaches_Count" : metrics ["industry_breaches_count" ],
163+ "Top_Breaches" : top_breaches ,
164+ "Recent_Breaches" : recent_breaches ,
165+ }
166+ cache_analytics (cache_key , response_data )
167+
168+ return DetailedMetricsResponse (** response_data )
125169 except Exception as e :
126170 await send_exception_email (
127171 api_route = "GET /v1/analytics/metrics" ,
0 commit comments