core/src/redis_client.cr:27: @connection_mutex = Mutex.new core/src/redis_client.cr:51: @connection_mutex.synchronize do core/src/redis_client.cr:62: rescue ex : Redis::ConnectionError | IO::Error core/src/redis_client.cr:64: Log.warn("redis", "Connection error (attempt #{attempts}/#{RETRY_ATTEMPTS}): #{ex.message}") core/src/redis_client.cr:67: @redis.close rescue nil core/src/redis_client.cr:69: rescue conn_ex core/src/redis_client.cr:70: Log.warn("redis", "Failed to reconnect: #{conn_ex.message}") core/src/redis_client.cr:73: Log.error("redis", "Operation failed after #{RETRY_ATTEMPTS} attempts: #{ex.message}") core/src/redis_client.cr:196: @connection_mutex.synchronize do core/src/redis_client.cr:298: rescue core/src/redis_client.cr:306: rescue core/src/redis_client.cr:1061: rescue ex core/src/redis_client.cr:1062: Log.error("redis", "Migration error: #{ex.message}") core/src/handlers/substance_handler.cr:17: def handle(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/substance_handler.cr:91: def handle_datasets(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/substance_handler.cr:103: def handle_alcohol(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/substance_handler.cr:120: def handle_list_substances(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/substance_handler.cr:179: private def handle_alcohol_lookup(response : HTTP::Server::Response, brand_name : String) core/src/handlers/substance_handler.cr:202: private def handle_alcohol_categories(response : HTTP::Server::Response) core/src/handlers/substance_handler.cr:228: private def handle_alcohol_calculate(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/substance_handler.cr:251: rescue ex core/src/handlers/substance_handler.cr:253: response.print({"error" => "Invalid request: #{ex.message}"}.to_json) core/src/handlers/substance_handler.cr:281: private def handle_alcohol_info(response : HTTP::Server::Response, brand_name : String, brand_data : JSON::Any) core/src/handlers/substance_handler.cr:301: private def handle_alcohol_dosage_info(response : HTTP::Server::Response, brand_name : String, brand_data : JSON::Any) core/src/handlers/substance_handler.cr:328: private def handle_substance_dosage(response : HTTP::Server::Response, substance_key : String, substance_data) core/src/handlers/substance_handler.cr:347: private def handle_substance_onset(response : HTTP::Server::Response, substance_key : String, substance_data) core/src/handlers/substance_handler.cr:362: private def handle_substance_duration(response : HTTP::Server::Response, substance_key : String, substance_data) core/src/handlers/substance_handler.cr:377: private def handle_substance_effects(response : HTTP::Server::Response, substance_key : String, substance_data) core/src/handlers/substance_handler.cr:392: private def handle_substance_aftereffects(response : HTTP::Server::Response, substance_key : String, substance_data) core/src/handlers/substance_handler.cr:407: private def handle_substance_info(response : HTTP::Server::Response, substance_key : String, substance_data) core/src/handlers/substance_handler.cr:430: private def handle_substances_data(response : HTTP::Server::Response) core/src/handlers/substance_handler.cr:435: private def handle_interactions_data(response : HTTP::Server::Response) core/src/handlers/interaction_handler.cr:36: def handle(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/log_handler.cr:27: private def validate_timestamp(timestamp : String, response : HTTP::Server::Response) : Bool core/src/handlers/log_handler.cr:42: rescue core/src/handlers/log_handler.cr:92: rescue ex core/src/handlers/log_handler.cr:93: Log.debug("log_handler", "Failed to calculate local timestamp: #{ex.message}") core/src/handlers/log_handler.cr:98: private def authorize_user(user_id : String, authenticated_user : String?, response : HTTP::Server::Response) : Bool core/src/handlers/log_handler.cr:109: def handle(request : HTTP::Request, response : HTTP::Server::Response, authenticated_user : String? = nil) core/src/handlers/log_handler.cr:181: def handle_legacy(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/log_handler.cr:207: private def handle_log_substance(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/log_handler.cr:357: # Check if substance is an injectable medication (ml -> mg conversion) core/src/handlers/log_handler.cr:461: rescue JSON::ParseException core/src/handlers/log_handler.cr:464: rescue ex core/src/handlers/log_handler.cr:466: response.print({"error" => "Failed to log substance: #{ex.message}"}.to_json) core/src/handlers/log_handler.cr:470: private def handle_annotate_last_dose(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/log_handler.cr:505: rescue JSON::ParseException core/src/handlers/log_handler.cr:508: rescue ex core/src/handlers/log_handler.cr:510: response.print({"error" => "Failed to add annotation: #{ex.message}"}.to_json) core/src/handlers/log_handler.cr:514: private def handle_log_vitals(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/log_handler.cr:563: rescue JSON::ParseException core/src/handlers/log_handler.cr:566: rescue ex core/src/handlers/log_handler.cr:568: response.print({"error" => "Failed to log vitals: #{ex.message}"}.to_json) core/src/handlers/log_handler.cr:572: private def handle_log_labs(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/log_handler.cr:616: rescue JSON::ParseException core/src/handlers/log_handler.cr:619: rescue ex core/src/handlers/log_handler.cr:621: response.print({"error" => "Failed to log lab result: #{ex.message}"}.to_json) core/src/handlers/log_handler.cr:625: private def handle_all_logs(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/log_handler.cr:669: rescue ex core/src/handlers/log_handler.cr:671: response.print({"error" => "Failed to fetch logs from Redis: #{ex.message}"}.to_json) core/src/handlers/log_handler.cr:675: private def handle_logs_by_year(request : HTTP::Request, response : HTTP::Server::Response, year : String) core/src/handlers/log_handler.cr:722: rescue ex core/src/handlers/log_handler.cr:724: response.print({"error" => "Failed to fetch logs from Redis: #{ex.message}"}.to_json) core/src/handlers/log_handler.cr:728: private def handle_get_vitals(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/log_handler.cr:772: rescue ex core/src/handlers/log_handler.cr:774: response.print({"error" => "Failed to fetch vitals from Redis: #{ex.message}"}.to_json) core/src/handlers/log_handler.cr:778: private def handle_get_labs(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/log_handler.cr:827: rescue ex core/src/handlers/log_handler.cr:829: response.print({"error" => "Failed to fetch labs from Redis: #{ex.message}"}.to_json) core/src/handlers/log_handler.cr:833: private def handle_csv_export(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/log_handler.cr:875: rescue ex core/src/handlers/log_handler.cr:877: response.print("Error generating CSV export: #{ex.message}") core/src/handlers/log_handler.cr:881: private def handle_csv_import(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/log_handler.cr:978: rescue ex core/src/handlers/log_handler.cr:979: Log.warn("log_handler", "Import error: #{ex.message}") core/src/handlers/log_handler.cr:992: rescue ex core/src/handlers/log_handler.cr:994: response.print({"error" => "Import failed: #{ex.message}"}.to_json) core/src/handlers/log_handler.cr:1011: rescue ex core/src/handlers/log_handler.cr:1012: Log.warn("log_handler", "Could not load pretty name from drugs.json: #{ex.message}") core/src/handlers/log_handler.cr:1028: rescue ex core/src/handlers/log_handler.cr:1029: Log.warn("log_handler", "Could not load categories from drugs.json: #{ex.message}") core/src/handlers/log_handler.cr:1068: rescue ex core/src/handlers/log_handler.cr:1069: Log.warn("log_handler", "Could not classify dose: #{ex.message}") core/src/handlers/log_handler.cr:1242: private def handle_get_dose(request : HTTP::Request, response : HTTP::Server::Response, timestamp : String) core/src/handlers/log_handler.cr:1266: rescue ex core/src/handlers/log_handler.cr:1268: response.print({"error" => "Failed to get dose: #{ex.message}"}.to_json) core/src/handlers/log_handler.cr:1272: private def handle_update_dose(request : HTTP::Request, response : HTTP::Server::Response, timestamp : String) core/src/handlers/log_handler.cr:1352: rescue JSON::ParseException core/src/handlers/log_handler.cr:1355: rescue ex core/src/handlers/log_handler.cr:1357: response.print({"error" => "Failed to update dose: #{ex.message}"}.to_json) core/src/handlers/log_handler.cr:1361: private def handle_delete_dose(request : HTTP::Request, response : HTTP::Server::Response, timestamp : String) core/src/handlers/log_handler.cr:1392: rescue JSON::ParseException core/src/handlers/log_handler.cr:1395: rescue ex core/src/handlers/log_handler.cr:1397: response.print({"error" => "Failed to delete dose: #{ex.message}"}.to_json) core/src/handlers/log_handler.cr:1401: private def handle_undose_substance(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/log_handler.cr:1435: rescue JSON::ParseException core/src/handlers/log_handler.cr:1438: rescue ex core/src/handlers/log_handler.cr:1440: response.print({"error" => "Failed to remove dose entry: #{ex.message}"}.to_json) core/src/handlers/auth_handler.cr:29: def handle(request : HTTP::Request, response : HTTP::Server::Response, authenticated_user : String? = nil) core/src/handlers/auth_handler.cr:68: private def handle_oauth_start(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/auth_handler.cr:102: private def handle_oauth_callback(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/auth_handler.cr:180: private def handle_list_keys(request : HTTP::Request, response : HTTP::Server::Response, authenticated_user : String?) core/src/handlers/auth_handler.cr:203: private def handle_create_key(request : HTTP::Request, response : HTTP::Server::Response, authenticated_user : String?) core/src/handlers/auth_handler.cr:206: data = JSON.parse(body) rescue nil core/src/handlers/auth_handler.cr:225: data = JSON.parse(body) rescue nil core/src/handlers/auth_handler.cr:249: private def handle_revoke_key(request : HTTP::Request, response : HTTP::Server::Response, authenticated_user : String?) core/src/handlers/auth_handler.cr:292: rescue ex core/src/handlers/auth_handler.cr:293: Log.error("auth", "Error exchanging Discord code: #{ex.message}") core/src/handlers/auth_handler.cr:312: rescue ex core/src/handlers/auth_handler.cr:313: Log.error("auth", "Error fetching Discord user: #{ex.message}") core/src/handlers/auth_handler.cr:327: private def method_not_allowed(response : HTTP::Server::Response) core/src/handlers/auth_handler.cr:332: private def show_error_page(response : HTTP::Server::Response, message : String) core/src/handlers/auth_handler.cr:357: private def show_success_page(response : HTTP::Server::Response, api_key : String, user_id : String, from : String) core/src/handlers/auth_handler.cr:414: private def handle_irc_request(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/auth_handler.cr:416: data = JSON.parse(body) rescue nil core/src/handlers/auth_handler.cr:447: private def handle_irc_verify(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/auth_handler.cr:449: data = JSON.parse(body) rescue nil core/src/handlers/auth_handler.cr:481: private def handle_irc_status(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/auth_handler.cr:509: private def handle_irc_complete(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/auth_handler.cr:511: data = JSON.parse(body) rescue nil core/src/handlers/auth_handler.cr:547: private def handle_link_accounts(request : HTTP::Request, response : HTTP::Server::Response, authenticated_user : String?) core/src/handlers/auth_handler.cr:549: data = JSON.parse(body) rescue nil core/src/handlers/auth_handler.cr:594: private def handle_get_linked(request : HTTP::Request, response : HTTP::Server::Response, authenticated_user : String?) core/src/handlers/alias_handler.cr:8: def handle(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/alias_handler.cr:34: private def handle_create(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/alias_handler.cr:64: rescue ex : JSON::ParseException core/src/handlers/alias_handler.cr:66: response.print({"error" => "Invalid JSON: #{ex.message}"}.to_json) core/src/handlers/alias_handler.cr:70: private def handle_get(request : HTTP::Request, response : HTTP::Server::Response, user_id : String, alias_name : String) core/src/handlers/alias_handler.cr:91: private def handle_list(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/alias_handler.cr:118: private def handle_delete(request : HTTP::Request, response : HTTP::Server::Response, user_id : String, alias_name : String) core/src/handlers/reminder_handler.cr:18: def handle(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/reminder_handler.cr:42: private def handle_create(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/reminder_handler.cr:57: response.print({"error" => "Missing required fields: user_id, message, trigger_time, channel_id, discord_user_id, callback_url"}.to_json) core/src/handlers/reminder_handler.cr:95: rescue ex : JSON::ParseException core/src/handlers/reminder_handler.cr:97: response.print({"error" => "Invalid JSON: #{ex.message}"}.to_json) core/src/handlers/reminder_handler.cr:101: private def handle_list(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/reminder_handler.cr:128: private def handle_delete(request : HTTP::Request, response : HTTP::Server::Response, reminder_id : String) core/src/handlers/reminder_handler.cr:154: rescue ex core/src/handlers/reminder_handler.cr:155: Log.error("reminder", "Error processing reminders: #{ex.message}") core/src/handlers/reminder_handler.cr:182: rescue ex core/src/handlers/reminder_handler.cr:183: Log.error("reminder", "Failed to send webhook: #{ex.message}") core/src/handlers/reminder_handler.cr:194: rescue core/src/handlers/timezone_handler.cr:12: def handle(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/timezone_handler.cr:22: private def handle_lookup(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/metric_handler.cr:40: rescue ex core/src/handlers/metric_handler.cr:41: Log.error("metric", "Failed to call wrapped service: #{ex.message}") core/src/handlers/metric_handler.cr:63: rescue ex core/src/handlers/metric_handler.cr:64: Log.error("metric", "Failed to call wrapped-cr service: #{ex.message}") core/src/handlers/metric_handler.cr:137: private def authorize_user(user_id : String, response : HTTP::Server::Response) : Bool core/src/handlers/metric_handler.cr:169: rescue core/src/handlers/metric_handler.cr:174: rescue core/src/handlers/metric_handler.cr:195: def handle(request : HTTP::Request, response : HTTP::Server::Response, authenticated_user : String? = nil) core/src/handlers/metric_handler.cr:231: def handle_analytics(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/metric_handler.cr:242: private def handle_substance_metrics(response : HTTP::Server::Response, year : String?) core/src/handlers/metric_handler.cr:283: rescue ex core/src/handlers/metric_handler.cr:284: response.print({"error" => "Failed to fetch substance metrics from Redis: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:288: private def handle_timeline_metrics(response : HTTP::Server::Response) core/src/handlers/metric_handler.cr:304: private def handle_route_metrics(response : HTTP::Server::Response) core/src/handlers/metric_handler.cr:333: rescue ex core/src/handlers/metric_handler.cr:335: response.print({"error" => "Failed to fetch route metrics from Redis: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:339: private def handle_dose_statistics(response : HTTP::Server::Response, substance : String, route : String) core/src/handlers/metric_handler.cr:417: rescue ex core/src/handlers/metric_handler.cr:419: response.print({"error" => "Failed to fetch dose statistics from Redis: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:423: private def handle_recent_metrics(response : HTTP::Server::Response) core/src/handlers/metric_handler.cr:462: rescue ex core/src/handlers/metric_handler.cr:464: response.print({"error" => "Failed to fetch recent metrics from Redis: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:468: private def handle_user_metrics_endpoint(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/metric_handler.cr:565: private def handle_user_lastdose(response : HTTP::Server::Response, user_id : String, n : Int32) core/src/handlers/metric_handler.cr:593: rescue ex core/src/handlers/metric_handler.cr:595: response.print({"error" => "Failed to fetch user dose data: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:599: private def handle_user_listdose(response : HTTP::Server::Response, user_id : String, n : Int32) core/src/handlers/metric_handler.cr:621: rescue ex core/src/handlers/metric_handler.cr:623: response.print({"error" => "Failed to fetch user dose list: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:627: private def handle_user_last_substance(response : HTTP::Server::Response, user_id : String, substance : String) core/src/handlers/metric_handler.cr:648: rescue ex core/src/handlers/metric_handler.cr:650: response.print({"error" => "Failed to fetch user substance data: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:654: private def handle_user_grepdose(response : HTTP::Server::Response, user_id : String, substance : String, n : Int32? = nil, roa : String? = nil) core/src/handlers/metric_handler.cr:709: rescue ex core/src/handlers/metric_handler.cr:711: response.print({"error" => "Failed to fetch user substance data: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:715: private def handle_user_howhighami(response : HTTP::Server::Response, user_id : String) core/src/handlers/metric_handler.cr:835: rescue ex core/src/handlers/metric_handler.cr:836: Log.warn("metric", "Could not load drugs.json: #{ex.message}") core/src/handlers/metric_handler.cr:863: rescue Time::Format::Error core/src/handlers/metric_handler.cr:888: rescue core/src/handlers/metric_handler.cr:1069: rescue Time::Format::Error core/src/handlers/metric_handler.cr:1106: rescue ex core/src/handlers/metric_handler.cr:1108: response.print({"error" => "Failed to fetch user howhighami data: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:1112: private def handle_user_doseslogged(response : HTTP::Server::Response, user_id : String) core/src/handlers/metric_handler.cr:1128: rescue ex core/src/handlers/metric_handler.cr:1130: response.print({"error" => "Failed to fetch user doses logged data: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:1134: private def handle_user_listdrugs(response : HTTP::Server::Response, user_id : String) core/src/handlers/metric_handler.cr:1169: rescue core/src/handlers/metric_handler.cr:1187: rescue ex core/src/handlers/metric_handler.cr:1189: response.print({"error" => "Failed to fetch user substances data: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:1193: private def handle_user_tally(response : HTTP::Server::Response, user_id : String, substance : String) core/src/handlers/metric_handler.cr:1275: rescue ex core/src/handlers/metric_handler.cr:1277: response.print({"error" => "Failed to fetch user tally data: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:1281: private def handle_wrapped_endpoint(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/metric_handler.cr:1339: private def handle_wrapped_year(response : HTTP::Server::Response, user_id : String, year : Int32) core/src/handlers/metric_handler.cr:1379: rescue Time::Format::Error core/src/handlers/metric_handler.cr:1411: rescue ex core/src/handlers/metric_handler.cr:1413: response.print({"error" => "Failed to generate wrapped data: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:1417: private def handle_wrapped_alltime(response : HTTP::Server::Response, user_id : String) core/src/handlers/metric_handler.cr:1457: rescue Time::Format::Error core/src/handlers/metric_handler.cr:1490: rescue ex core/src/handlers/metric_handler.cr:1492: response.print({"error" => "Failed to generate alltime wrapped data: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:1496: private def handle_wrapped_image(response : HTTP::Server::Response, user_id : String, year : Int32?) core/src/handlers/metric_handler.cr:1538: rescue ex core/src/handlers/metric_handler.cr:1540: response.print({"error" => "Failed to generate wrapped image: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:1550: private def handle_vwrapped_endpoint(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/metric_handler.cr:1574: private def handle_vwrapped_async_request(request : HTTP::Request, response : HTTP::Server::Response, user_id : String, year : Int32) core/src/handlers/metric_handler.cr:1623: rescue ex : JSON::ParseException core/src/handlers/metric_handler.cr:1626: rescue ex core/src/handlers/metric_handler.cr:1628: response.print({"error" => "Failed to start async processing: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:1652: rescue ex core/src/handlers/metric_handler.cr:1655: Log.error("metric", "Async vwrapped failed: #{ex.message}") core/src/handlers/metric_handler.cr:1656: send_vwrapped_callback(callback_url, request_id, "error", {"error" => ex.message || "Unknown error"}) core/src/handlers/metric_handler.cr:1676: rescue ex core/src/handlers/metric_handler.cr:1677: Log.error("metric", "Failed to send callback: #{ex.message}") core/src/handlers/metric_handler.cr:1681: private def handle_vwrapped_video(response : HTTP::Server::Response, user_id : String, year : Int32) core/src/handlers/metric_handler.cr:1736: rescue ex core/src/handlers/metric_handler.cr:1740: response.print({"error" => "Failed to generate wrapped video: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:1744: private def handle_wrapped_async_request(request : HTTP::Request, response : HTTP::Server::Response, user_id : String, year_or_image : String?, image_flag : String?) core/src/handlers/metric_handler.cr:1788: rescue JSON::ParseException core/src/handlers/metric_handler.cr:1791: rescue ex core/src/handlers/metric_handler.cr:1793: response.print({"error" => "Failed to start async processing: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:1823: rescue ex core/src/handlers/metric_handler.cr:1824: Log.error("metric", "Async wrapped image processing failed: #{ex.message}") core/src/handlers/metric_handler.cr:1830: "error" => "Internal server error: #{ex.message}", core/src/handlers/metric_handler.cr:1850: rescue ex core/src/handlers/metric_handler.cr:1851: Log.error("metric", "Failed to send callback: #{ex.message}") core/src/handlers/metric_handler.cr:1887: rescue core/src/handlers/metric_handler.cr:1918: rescue core/src/handlers/metric_handler.cr:1950: rescue core/src/handlers/metric_handler.cr:1971: rescue core/src/handlers/metric_handler.cr:2021: private def handle_analytics_wrapped(request : HTTP::Request, response : HTTP::Server::Response) core/src/handlers/metric_handler.cr:2061: rescue Time::Format::Error core/src/handlers/metric_handler.cr:2095: rescue core/src/handlers/metric_handler.cr:2161: rescue core/src/handlers/metric_handler.cr:2197: rescue core/src/handlers/metric_handler.cr:2213: rescue core/src/handlers/metric_handler.cr:2322: rescue core/src/handlers/metric_handler.cr:2384: rescue ex core/src/handlers/metric_handler.cr:2386: response.print({"error" => "Failed to generate wrapped analytics: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:2446: rescue core/src/handlers/metric_handler.cr:2486: rescue core/src/handlers/metric_handler.cr:2504: rescue core/src/handlers/metric_handler.cr:2609: rescue core/src/handlers/metric_handler.cr:2704: private def handle_user_active_bars(response : HTTP::Server::Response, user_id : String) core/src/handlers/metric_handler.cr:2766: rescue core/src/handlers/metric_handler.cr:2775: rescue ex core/src/handlers/metric_handler.cr:2777: response.print({"error" => "Failed to fetch active substances bars: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:2782: private def handle_user_categories(response : HTTP::Server::Response, user_id : String) core/src/handlers/metric_handler.cr:2825: rescue ex core/src/handlers/metric_handler.cr:2827: Log.warn("metric", "Error loading drugs.json: #{ex.message}") core/src/handlers/metric_handler.cr:2843: rescue ex core/src/handlers/metric_handler.cr:2844: Log.error("metric", "Exception in handle_user_categories: #{ex.message}") core/src/handlers/metric_handler.cr:2846: response.print({"error" => "Failed to fetch category counts: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:2851: private def handle_user_substances(response : HTTP::Server::Response, user_id : String) core/src/handlers/metric_handler.cr:2892: rescue ex core/src/handlers/metric_handler.cr:2893: Log.error("metric", "Exception in handle_user_substances: #{ex.message}") core/src/handlers/metric_handler.cr:2895: response.print({"error" => "Failed to fetch user substance counts: #{ex.message}"}.to_json) core/src/handlers/metric_handler.cr:2900: private def handle_user_recent_frequency(response : HTTP::Server::Response, user_id : String) core/src/handlers/metric_handler.cr:2924: rescue core/src/handlers/metric_handler.cr:2942: rescue ex core/src/handlers/metric_handler.cr:2944: response.print({"error" => "Failed to fetch recent frequency: #{ex.message}"}.to_json) core/src/router.cr:58: def handle_request(context : HTTP::Server::Context) core/src/router.cr:180: rescue ex core/src/router.cr:183: context.response.print({"error" => "Internal server error: #{ex.message}"}.to_json) core/src/router.cr:210: private def authenticate(request : HTTP::Request, response : HTTP::Server::Response) : Bool core/src/router.cr:248: private def handle_health(request : HTTP::Request, response : HTTP::Server::Response) core/src/router.cr:251: rescue ex core/src/router.cr:252: "error: #{ex.message}" core/src/router.cr:262: private def handle_api_root(request : HTTP::Request, response : HTTP::Server::Response) core/src/router.cr:266: "version" => "1.0.0", core/src/router.cr:283: private def handle_info(request : HTTP::Request, response : HTTP::Server::Response) core/src/router.cr:287: "version" => "1.0.0", core/src/router.cr:301: private def handle_openapi_spec(request : HTTP::Request, response : HTTP::Server::Response) core/src/router.cr:307: rescue ex core/src/router.cr:310: response.print({"error" => "OpenAPI spec not found: #{ex.message}"}.to_json) core/src/router.cr:314: private def handle_swagger_ui(request : HTTP::Request, response : HTTP::Server::Response) core/src/router.cr:320: rescue ex core/src/router.cr:323: response.print({"error" => "Swagger UI not found: #{ex.message}"}.to_json) core/src/router.cr:327: private def handle_static_logo(request : HTTP::Request, response : HTTP::Server::Response) core/src/router.cr:334: rescue ex core/src/router.cr:337: response.print({"error" => "Logo not found: #{ex.message}"}.to_json) core/src/router.cr:341: private def handle_acme_challenge(request : HTTP::Request, response : HTTP::Server::Response) core/src/router.cr:354: private def authorize_user(user_id : String, response : HTTP::Server::Response) : Bool core/src/router.cr:365: private def handle_user_routes(request : HTTP::Request, response : HTTP::Server::Response) core/src/router.cr:395: rescue ex : JSON::ParseException core/src/router.cr:397: response.print({"error" => "Invalid JSON: #{ex.message}"}.to_json) core/src/router.cr:423: private def handle_get_user_data_stats(user_id : String, response : HTTP::Server::Response) core/src/router.cr:441: private def handle_delete_user_data(user_id : String, response : HTTP::Server::Response) core/src/migrator.cr:44: rescue ex core/src/migrator.cr:45: Log.error("migrator", "Error processing #{dose_key}: #{ex.message}") core/src/migrator.cr:313: rescue core/src/migrator.cr:347: rescue core/src/rate_limiter.cr:29: @mutex = Mutex.new core/src/rate_limiter.cr:36: @mutex.synchronize do core/src/rate_limiter.cr:58: @mutex.synchronize do core/src/rate_limiter.cr:72: @mutex.synchronize do core/src/rate_limiter.cr:87: @mutex.synchronize do core/src/rate_limiter.cr:103: @mutex.synchronize do