Skip to main content
Glama

URL Reputation and Validity Checker

by prismon
cache.cpython-313.pyc7.57 kB
� ��7h���\�SrSSKrSSKrSSKJrJrJr SSKJrJr SSK J r "SS5r g)z-Caching utilities for URL reputation checker.�N)�Optional�Any�Dict)�datetime� timedelta)�Redisc���\rSrSrSrSS\4SjjrSrSrSr S\S \S \4S jr S \S \ \ \\ 44S jrS \S\ \\ 4S\4SjrS\S \ \ \\ 44SjrS\S\ \\ 44SjrS \ \\44SjrSrSrg)� CacheManager� z*Manage caching for URL validation results.� redis_urlc�H�XlSUlSUlSUlSUlg)Ni�Qii�: )r �redis� ttl_valid� ttl_invalid� ttl_history)�selfr s �S/home/josh/Projects/reputation-and-validity-checker/url_reputation_checker/cache.py�__init__�CacheManager.__init__s%��"��&*�� �������!���c���# �[R"UR5UlURR 5IShv�N gN![ a SUlgf=f7f)zConnect to Redis.N)r�from_urlr r�ping� Exception�rs r�connect�CacheManager.connectsG��� �������7�D�J��*�*�/�/�#� #� #��� ��D�J� �s;�A%�AA�A �A� A%� A�A"�A%�!A"�"A%c��\# �URcUR5IShv�N ggN7f)z Ensure we're connected to Redis.N)rrrs r�_ensure_connected�CacheManager._ensure_connecteds&��� �:�:� ��,�,�.� � � � �s �!,�*�,c��x# �UR(a#URR5IShv�N ggN7f)zDisconnect from Redis.N)r�closers r� disconnect�CacheManager.disconnect#s*��� �:�:��*�*�"�"�$� $� $� � $�s �/:�8�:�prefix� identifier�returnc��[U5S:�a2[R"UR55R 5nSUSU3$)zGenerate cache key.��zurl_reputation:�:)�len�hashlib�md5�encode� hexdigest)rr%r&s r�_get_cache_key�CacheManager._get_cache_key(sC�� �z�?�S� � ���Z�%6�%6�%8�9�C�C�E�J� ����*��6�6r�urlc���# �UR(dgURSU5nURRU5IShv�N nU(a[R"U5$gN#![ a gf=f7f)zGet cached validation result.N� validation�rr0�get�json�loadsr)rr2�key�datas r�get_validation_result�"CacheManager.get_validation_result/sr����z�z�� ��%�%�l�C�8�C�������,�,�D���z�z�$�'�'�� � -��� � �� ��:�A<�0A,�A*� A,�'A<�*A,�, A9�6A<�8A9�9A<�result�is_validc��v# �UR(dgURSU5nU(a URO URn[R "5R 5US'URRUU[R"U55IShv�N gN![a gf=f7f)zCache validation result.Nr4� cached_at) rr0rrr�utcnow� isoformat�setexr7�dumpsr)rr2r>r?r9�ttls r�set_validation_result�"CacheManager.set_validation_result>s�����z�z� � ��%�%�l�C�8�C�$,�$�.�.�$�2B�2B�C�#+�/�/�"3�"=�"=�"?�F�;� ��*�*�"�"���� � �6�"�� � �� � � � �s;�B9�B B)�!B'�"B)�&B9�'B)�) B6�3B9�5B6�6B9�domainc���# �UR(dgURSU5nURRU5IShv�N nU(a[R"U5$gN#![ a gf=f7f)zGet cached domain history.N�historyr5)rrIr9r:s r�get_domain_history�CacheManager.get_domain_historyRsr����z�z�� ��%�%�i��8�C�������,�,�D���z�z�$�'�'�� � -��� � �� �r=rKc��L# �UR(dgURSU5n[R"5R 5US'URR UUR [R"U55IShv�N gN![a gf=f7f)zCache domain history.NrKrA) rr0rrBrCrDrr7rEr)rrIrKr9s r�set_domain_history�CacheManager.set_domain_historyas�����z�z� � ��%�%�i��8�C�$,�?�?�#4�#>�#>�#@�G�K� ��*�*�"�"��� � �� � �7�#�� � �� � � � �s;�B$�A6B� B� B�B$�B� B!�B$� B!�!B$c��# �UR5IShv�N UR(dSS0$URRS5IShv�N nURRS5IShv�N nS[U5[U5[U5[U5-S.$N�NWN6![a SS0s$f=f7f)zGet cache statistics.N�enabledFzurl_reputation:validation:*zurl_reputation:history:*T)rR�validation_entries�history_entries� total_entries)rr�keysr+r)r�validation_keys� history_keyss r� get_stats�CacheManager.get_statsts�����$�$�&�&�&��z�z��u�%� %� &�$(�J�J�O�O�4Q�$R�R�O�!%�����1K�!L�L�L� �&)�/�&:�#&�|�#4�!$�_�!5��L�8I�!I� � � '� S�L��� &��u�%� %� &�sV�B?�B%�B?�B+�B'�"B+�2B)�31B+�$B?�'B+�)B+�+B<�9B?�;B<�<B?c��&# �UR5IShv�N UR(dgURRS5IShv�N nU(a"URR"U6IShv�N ggNdN0N ![a gf=f7f)zClear all cache entries.Nzurl_reputation:*)rrrV�deleter)rrVs r� clear_cache�CacheManager.clear_cache�sz����$�$�&�&�&��z�z� � ������);�<�<�D���j�j�'�'��.�.�.�� '� =�.��� � � �sV�B�A;�B�B� A=� 'B�4A?�5B�9B�=B�?B� B� B� B�B)rr rrrN)zredis://localhost:6379)�__name__� __module__� __qualname__�__firstlineno__�__doc__�strrrrr#r0rrrr;�boolrGrLrO�intrYr]�__static_attributes__�rrr r s���4�"�#�"��!� %� 7�S�7�c�7�c�7� �s� �x��S�#�X��7O� ��s��D��c��N��VZ��( �s� �x��S�#�X��7O� ��s��T�#�s�(�^��&&��c�3�h��&�& rr ) rcr7r,�typingrrrrr� redis.asynciorr rhrr�<module>rks&��3� ��&�&�(��G�Gr

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/prismon/reputation-checker-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server