Skip to main content
Glama
routes.cpython-311.pyc18.5 kB
� �d�h�8���ddlZddlZddlZddlmZmZmZmZddlmZm Z ddl m Z m Z m Z mZmZddlmZmZddlmZddlmZddlmZdd lmZeje��Ze��Ze��Ze��Z e��Z!ej"d ��d ���Z#ej"d ��d ���Z$ej"d��d���Z%d�Z&ej"ddg���e&d�����Z'ej"ddg���e&d�����Z(ej"ddg���e&d�����Z)ej"d��e&d�����Z*ej"d��e&d�����Z+ej"d��e&d�����Z,ej-d��d ���Z.ej-d!��d"���Z/dS)#�N)�render_template�request�jsonify�session)�app�db)�User�Wallet� Transaction� Portfolio�ProtocolPosition)�validate_api_key�validate_address)� DexOperations)�LendingOperations)�YieldFarmingOperations)�PortfolioManager�/c� �td��S)zMain landing pagez index.html�r��� /home/runner/workspace/routes.py�indexrs�� �<� (� (�(rz /dashboardc� �td��S)z(Dashboard for monitoring DeFi operationszdashboard.htmlrrrr� dashboardrs�� �+� ,� ,�,rz /api/docsc� �td��S)zAPI documentation pagez api_docs.htmlrrrr�api_docsrs�� �?� +� +�+rc�*���fd�}�j|_|S)Nc�$��tj�d��}|stddi��dfStj�|d������}|stddi��dfS|t_�|i|��S)Nz X-API-Key�errorzAPI key requiredi�T)�api_key� is_activezInvalid API key) r�headers�getrr �query� filter_by�first� current_user)�args�kwargsr"�user�fs �r�decorated_functionz+require_api_key.<locals>.decorated_function&s�����/�%�%�k�2�2��� ?��G�%7�8�9�9�3�>� >��z�#�#�G�t�#�D�D�J�J�L�L��� >��G�%6�7�8�8�#�=� =�#����q�$�!�&�!�!�!r)�__name__)r-r.s` r�require_api_keyr0%s/��� "� "� "� "� "�#$�*��� �rz /api/v1/swap�POST)�methodsc�� tj��}gd�}|D]}||vrtdd|��i��dfcS�tj�|dtjj|d������}|stddi��d fSt� |d|d|d |d |d |� d d��|� dd�����}|dr�ttjj|j|d|dd|� dd��|d |d |d |� d��d|� di���� � }tj�|��tj���t|��S#t"$rU}t$�dt)|������tdt)|��d���dfcYd}~Sd}~wwxYw)zExecute DEX swap operation)�wallet_address� blockchain�token_in� token_out� amount_inr!�Missing required field: �r4r5��address�user_idr5�%Wallet not found or not owned by user�r6r7r8�slippageg�?�protocol�uniswap)r5r4r6r7r8r@rA�success�tx_hash�swap�gas_used�pending�metadata) r=� wallet_idrDr5�operation_typerA�amountr6r7rF�statusrHzSwap operation failed: �Internal server error�r!�details��N)r�get_jsonrr r&r'r)�idr(�dex_ops� execute_swapr%r rr�add�commit� Exception�loggerr!�str)�data�required_fields�field�wallet�result�tx�es r�api_swapra5sy��5S���!�!��a�`�`��$� S� S�E��D� � ���)K�E�)K�)K�L�M�M�s�R�R�R�R�!���'�'��)�*��(�+��L�)�(� � � �%�'�'� � � T��G�%L�M�N�N�PS�S� S��%�%��L�)�� 0�1��*�%��;�'��;�'��X�X�j�#�.�.��X�X�j�)�4�4�&� � �� �)� � ���,�/� �)��y�)�� �-�%����*�i�8�8��K�(��j�)��{�+����J�/�/� ����J��3�3� � � �B� �J�N�N�2� � � � �J� � � � � ��v����� �S�S�S�� � �7�s�1�v�v�7�7�8�8�8��!8�S��V�V�L�L�M�M�s�R�R�R�R�R�R�R�����S���s+�6G!�A$G!�EG!�! I�+A H;�5I�;Iz /api/v1/lendc�R� tj��}gd�}|D]}||vrtdd|��i��dfcS�tj�|dtjj|d������}|stddi��d fSt� |d|d |d|d |d � ��}|d�r�ttjj|j|d|dd|d |d |d |� d��d|� di���� � }tj�|��t j�tjj|j|d d|d ������}|rAt#|j��}|t#|d ��z}t'|��|_n�t!tjj|j|d d|d |� dd��|d |d|� di���� � }tj�|��tj���t|��S#t*$rU} t,�dt'| ������tdt'| ��d���dfcYd} ~ Sd} ~ wwxYw)zExecute lending operation)r4r5rA�tokenrKr!r9r:r4r5r;r>r?rArcrK)r5rAr4rcrKrCrD�lendrFrGrH� r=rIrDr5rJrArKr6rFrLrH�lending)r=rIrA� position_type� token_address� token_symbol�� r=rIrArgrhrirKr5rHzLending operation failed: rMrNrPN)rrQrr r&r'r)rRr(� lending_ops� lend_assetr r%rrrUr �floatrKrYrVrWrXr!) rZr[r\r]r^r_�position�current_amount� new_amountr`s r�api_lendrrpsK��PS���!�!��Z�Y�Y��$� S� S�E��D� � ���)K�E�)K�)K�L�M�M�s�R�R�R�R�!���'�'��)�*��(�+��L�)�(� � � �%�'�'� � � T��G�%L�M�N�N�PS�S� S��'�'��L�)��*�%�� 0�1��w�-���>� (� � �� �)� �. ���,�/� �)��y�)�� �-�%��j�)��H�~��g�����J�/�/� ����J��3�3� � � �B� �J�N�N�2� � � �(�-�7�7��,�/� �)��j�)�'�"�7�m� 8��� �e�g�g� �� )�!&�x��!7�!7��+�e�D��N�.C�.C�C� �"%�j�/�/����,�#�0�3�$�i�!�*�-�"+�"&�w�-�!'���N�B�!?�!?���>�#�L�1�#�Z�Z� �B�7�7� � � ��� ���x�(�(�(� �J� � � � � ��v����� �S�S�S�� � �:�#�a�&�&�:�:�;�;�;��!8�S��V�V�L�L�M�M�s�R�R�R�R�R�R�R�����S���s+�6K�A$K�H(K� L&�A L!�L&�!L&z /api/v1/farmc��� tj��}gd�}|D]}||vrtdd|��i��dfcS�tj�|dtjj|d������}|stddi��d fSt� |d|d |d|d |d |d |d|d���}|d�r�ttjj|j|d|dd|d |d�d|d��|d �d|d ��|� d��d|� di���� � }tj�|��t!tjj|j|d d|d |� dd���d|� dd����|� dd��|d|d |d |d |d|dd ��!� � }tj�|��tj���t|��S#t$$rU}t&�d"t+|������td#t+|��d$���d%fcYd&}~Sd&}~wwxYw)'zExecute yield farming operation)r4r5rA�pool_id�token_a�token_b�amount_a�amount_br!r9r:r4r5r;r>r?rArtrurvrwrx)r5rAr4rtrurvrwrxrCrD�farm�,rFrGrHre�farming�token_a_symbolrj�-�token_b_symbol� lp_tokens�0)rtrurvrwrxrkz Yield farming operation failed: rMrNrPN)rrQrr r&r'r)rRr(� yield_ops� add_liquidityr r%rrrUr rVrWrXr!rY)rZr[r\r]r^r_ror`s r�api_farmr��sD��IS���!�!��@����$� S� S�E��D� � ���)K�E�)K�)K�L�M�M�s�R�R�R�R�!���'�'��)�*��(�+��L�)�(� � � �%�'�'� � � T��G�%L�M�N�N�PS�S� S��(�(��L�)��*�%�� 0�1���O���O���O��*�%��*�%�)�  �  �� �)� �$ ���,�/� �)��y�)�� �-�%��j�)��z�*�?�?�T�*�-=�?�?� ��O�?�?�d�9�o�?�?����J�/�/� ����J��3�3� � � �B� �J�N�N�2� � � �(��,�/� �)��j�)�'�"�9�o� &� � �+;�R� @� @�e�e�6�:�:�N^�`b�Cc�Cc�e�e��z�z�+�s�3�3�� �-�#�I��#�I��#�I�� $�Z� 0� $�Z� 0� �����H�" �J�N�N�8� $� $� $� �J� � � � � ��v����� �S�S�S�� � �@��A���@�@�A�A�A��!8�S��V�V�L�L�M�M�s�R�R�R�R�R�R�R�����S���s+�6J�A$J�G1J� K/�A K*�$K/�*K/z"/api/v1/portfolio/<wallet_address>c��� tj�|tjj������}|stddi��dfSt� ||j ��}t|��S#t$rU}t� dt|������tdt|��d���dfcYd }~Sd }~wwxYw) z&Get portfolio information for a wallet�r<r=r!r>r?zPortfolio fetch failed: rMrNrPN)r r&r'rr)rRr(r� portfolio_mgr� get_portfolior5rWrXr!rY)r4r]�portfolio_datar`s r� api_portfolior�s��S���'�'�"��(�+�(� � � �%�'�'� � � T��G�%L�M�N�N�PS�S� S�'�4�4�^�V�EV�W�W���~�&�&�&�� �S�S�S�� � �8��A���8�8�9�9�9��!8�S��V�V�L�L�M�M�s�R�R�R�R�R�R�R�����S���s%�AB�.B� C'�A C"�C'�"C'z"/api/v1/positions/<wallet_address>c��� tj�|tjj������}|stddi��dfStj�|j���� ��}g}|D]f}|� |j|j |j |j |j|j|j|j|j���|jd� ���gt||t+|��d���S#t,$rU}t.�dt3|������td t3|��d ���d fcYd }~Sd }~wwxYw) zGet DeFi positions for a walletr�r!r>r?�rI) rRrArgrirK�apy�rewards_earnedr5� created_atrH)r4� positions�total_positionszPositions fetch failed: rMrNrPN)r r&r'rr)rRr(rr �all�appendrArgrirKr�r�r5r�� isoformatrH�lenrWrXr!rY)r4r]r��positions_data�posr`s r� api_positionsr�,s���$S���'�'�"��(�+�(� � � �%�'�'� � � T��G�%L�M�N�N�PS�S� S�%�*�4�4�v�y�4�I�I�M�M�O�O� ���� � �C� � !� !��f��L�!$�!2� #� 0��*��w�"%�"4�!�n�!�n�6�6�8�8��L� #� #� � � � ��,�'�"�>�2�2� � � � � �� �S�S�S�� � �8��A���8�8�9�9�9��!8�S��V�V�L�L�M�M�s�R�R�R�R�R�R�R�����S���s&�AD�CD� E:�%A E5�/E:�5E:z%/api/v1/transactions/<wallet_address>c�d� tj�|tjj������}|stddi��dfStj� ddt���}tj� dd t���}tj�|j� ��� tj ������||d � ��}g}|jD]�}|�|j|j|j|j|j|j|j|j|j|j|j ���|jr|j���nd |jd� ����t|||||j|jd�d���S#t@$rU}tB�"dtG|������tdtG|��d���dfcYd }~Sd }~wwxYw)z$Get transaction history for a walletr�r!r>r?�page�)�type�per_page�2r�F)r�r�� error_outN) rRrDr5rJrArKr6r7rFrLr�� confirmed_atrH)r�r��total�pages)r4� transactions� paginationzTransactions fetch failed: rMrNrP)$r r&r'rr)rRr(rr*r%�intr �order_byr��desc�paginate�itemsr�rDr5rJrArKr6r7rFrLr�r�rHr�r�rWrXr!rY)r4r]r�r�r��tx_datar_r`s r�api_transactionsr�VsF��1S���'�'�"��(�+�(� � � �%�'�'� � � T��G�%L�M�N�N�PS�S� S��|�������4�4���<�#�#�J���#�=�=��"�(�2�2�V�Y�2�G�G� �X�k�,�1�1�3�3� 4� 4� �X�4�(�e�X� D� D� ����$� � �B� �N�N��e��:� �m�"$�"3��K��)��K��\��K��)� �m�5�5�7�7�?A�� X��� 9� 9� ;� ;� ;�TX��K��� � � � � �,�#��$�%�+�%�+� ��  �  �  �  � �� �S�S�S�� � �;�3�q�6�6�;�;�<�<�<��!8�S��V�V�L�L�M�M�s�R�R�R�R�R�R�R�����S���s&�AG�E6G� H/�A H*�$H/�*H/r?c�(�tddi��dfS)Nr!zEndpoint not foundr?�r�r!s r� not_foundr��s�� �G�1�2� 3� 3�S� 8�8rrPc�(�tddi��dfS)Nr!rMrPr�r�s r�internal_errorr��s�� �G�4�5� 6� 6�� ;�;r)0�os�json�logging�flaskrrrrrr�modelsr r r r r �utils.validationrr�defi_tools.dex_operationsr�defi_tools.lendingr�defi_tools.yield_farmingr�defi_tools.portfolior� getLoggerr/rXrSrlr�r��routerrrr0rarrr�r�r�r�� errorhandlerr�r�rrr�<module>r�sn�� � � � � � � � �����<�<�<�<�<�<�<�<�<�<�<�<���������I�I�I�I�I�I�I�I�I�I�I�I�I�I�?�?�?�?�?�?�?�?�3�3�3�3�3�3�0�0�0�0�0�0�;�;�;�;�;�;�1�1�1�1�1�1� �� �8� $� $�� �-�/�/����!�!� � "� "� $� $� � � �"�"� � ���3���)�)���)� ���<���-�-���-� ���;���,�,���,� ���  ���>�F�8�,�,�,��7S�7S���-�,�7S�r ���>�F�8�,�,�,��RS�RS���-�,�RS�h ���>�F�8�,�,�,��KS�KS���-�,�KS�Z ��� /�0�0��S�S���1�0�S�* ��� /�0�0��&S�&S���1�0�&S�P ��� 2�3�3��3S�3S���4�3�3S�j���#���9�9���9����#���<�<���<�<�<r

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/JMadhan1/OneDefi-MCP'

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