Metadata-Version: 2.1
Name: pyatn-client
Version: 0.0.6
Summary: Python ATN Client
Home-page: https://github.com/ATNIO/pyatn-client
Author: ovsoil
Author-email: huaxin.yu@atmatrix.org
License: UNKNOWN
Description: # pyatn-client
        
        **pyatn-client is Python ATN client, used to call DBot's API easily through payment channel**
        
        
        ## Install
        
        Python ATN client depends on python3.6+, simply use pip3 to install:
        
        ```bash
        pip3 install pyatn-client
        ```
        
        ## Usage
        
        Use `pyatn` to create an account and get some ATN if you don't have an account before.
        
        ```bash
        pyatn create_account
        pyatn get_atn
        ```
        
        It's simple to call a DBot's API with the python ATN client. An example could look like this.
        
        ```python
        from pyatn_client import Atn
        
        atn = Atn(
            pk_file='<path to key file>',
            pw_file='<path to password file>'
        )
        
        DBOTADDRESS = '0xfd4F504F373f0af5Ff36D9fbe1050E6300699230' # address of the DBot you want to test, use 'AI poetry' as example
        URI = '/reg'        # uri of the DBot's API endpoint which you want to call
        METHOD = 'POST'     # method of the DBot's API endpoint which you want to call
        requests_kwargs = {
            "data": {
                "theme": "中秋月更圆"
            }
        }
        
        # call DBot API 12 times
        for i in range(12):
            response = atn.call_dbot_api(dbot_address=DBOTADDRESS,
                                        uri=URI,
                                        method=METHOD,
                                        **requests_kwargs)
            print('Call {}:\n{}'.format(i + 1, response.text)
        
        # close the channel only when you do not need it any more,
        # the remain balance in the channel will be returned to your account
        atn.close_channel(DBOTADDRESS)
        
        ```
        
        
        In the example, channel will be auto created if no one between your account and the DBot, and will be topuped if the remain balance in the channel is not enough.
        
        The deposit value is determined by `deposit_strategy`, which is a callable function with price of endpoint as input parameter. The default deposit value is 10 times the price of endpoint.
        
        This behavior can be changed, You can pass in `deposit_strategy` when init class `Atn` or use `set_deposit_strategy` method to change it. It can be set `None` to disable auto create or topup the channel, then you should create or topup channel by yourself before call the `call_dbot_api` method. Here is an example.
        
        
        ```python
        from pyatn_client import Atn
        
        atn = Atn(
            pk_file='<path to keystore file>',
            pw_file='<path to password file>',
            deposit_strategy=None,              # disable auto create or topup channel
        )
        
        DBOTADDRESS = '0xfd4F504F373f0af5Ff36D9fbe1050E6300699230' # address of the DBot you want to test
        URI = '/reg'        # uri of the DBot's API endpoint which you want to call
        METHOD = 'POST'     # method of the DBot's API endpoint which you want to call
        requests_kwargs = {
            "data": {
                "theme": "中秋月更圆"
            }
        }
        
        # get price of the endpoint to be called
        price = atn.get_price(DBOTADDRESS, URI, METHOD)
        # open channel with the DBot, only one opened channel is allowed between two address
        # it will return the channel if one existed.
        channel = atn.open_channel(DBOTADDRESS, 10 * price)
        # wait DBot server sync channel info with the blockchain
        atn.wait_dbot_sync(DBOTADDRESS)
        if channel.deposit - channel.balance < price:
            atn.topup_channel(DBOTADDRESS, 10 * price)
            # wait DBot server sync channel info with the blockchain
            atn.wait_dbot_sync(DBOTADDRESS)
        
        # call DBot API 12 times
        for i in range(12)
            print('Call {}:'.format(call_count))
            # AtnException will raise when eleventh call for insufficient balance, catch it in a production environment
            response = atn.call_dbot_api(dbot_address=DBOTADDRESS,
                                        uri=URI,
                                        method=METHOD,
                                        **requests_kwargs)
            print('Call {}:\n{}'.format(i + 1, response.text)
        
        ```
        
        ## API Documentation
        
        [API Documentation](https://pyatn-client-doc.atnio.net)
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
