Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update readme #6

Merged
merged 1 commit into from
Sep 8, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
184 changes: 184 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,82 @@ order_response = tron_energy.place_order(
print(order_response)
```

## Asynchronous Usage

In addition to the synchronous interface, Tron-Energy also provides an asynchronous version for use in applications that require non-blocking I/O operations. The asynchronous class, AsyncTronEnergy, allows you to make API requests without blocking your event loop.

## Asynchronous Example
Here’s an example of how to use the asynchronous AsyncTronEnergy class:

```python
import asyncio
from async_tron_energy import AsyncTronEnergy

async def main():
# Initialize the AsyncTronEnergy client
tron_energy = AsyncTronEnergy(api_key='your-api-key', api_secret='your-api-secret')

try:
# Retrieve public data
public_data = await tron_energy.get_public_data()
print(public_data)

# Estimate the cost of an energy order
estimate = await tron_energy.estimate_order(
energy_amount=100_000,
period='1H'
)
print(estimate)

# Place the energy order
order_response = await tron_energy.place_order(
receive_address="TR7NHnXw5423f8j766h899234567890",
energy_amount=100_000,
period='1H'
)
print(order_response)
finally:
# Close the session to clean up resources
await tron_energy.close()

# Run the asynchronous main function
asyncio.run(main())

```

Or use the python context manager:

```python
import asyncio
from async_tron_energy import AsyncTronEnergy

async def main():
# Initialize the AsyncTronEnergy client
async with AsyncTronEnergy(api_key='your-api-key', api_secret='your-api-secret') as tron_energy:
# Retrieve public data
public_data = await tron_energy.get_public_data()
print(public_data)

# Estimate the cost of an energy order
estimate = await tron_energy.estimate_order(
energy_amount=100_000,
period='1H'
)
print(estimate)

# Place the energy order
order_response = await tron_energy.place_order(
receive_address="TR7NHnXw5423f8j766h899234567890",
energy_amount=100_000,
period='1H'
)
print(order_response)

# Run the asynchronous main function
asyncio.run(main())

```

## API Reference

### `TronEnergy`
Expand All @@ -89,6 +165,114 @@ print(order_response)
- **`verify_signature(self, signature: str, timestamp: str, data: dict) -> bool`**
- Verifies the authenticity of a signature.



from tron_energy import TronEnergy

# Create an instance of TronEnergy
tron_energy = TronEnergy(api_key='your-api-key', api_secret='your-api-secret')

# Retrieve public data
public_data = tron_energy.get_public_data()
print(public_data)

# Place an energy order
order_response = tron_energy.place_order(
receive_address="TR7NHnXw5423f8j766h899234567890",
energy_amount=100_000
)
print(order_response)
```

### Example

Here’s an example of how you might use Tron-Energy to estimate the cost of an energy order and then place the order:

```python
from tron_energy import TronEnergy

# Initialize the TronEnergy client
tron_energy = TronEnergy(api_key='your-api-key', api_secret='your-api-secret')

# Estimate the cost of an energy order
estimate = tron_energy.estimate_order(
energy_amount=100_000,
period='1H'
)
print(estimate)

# Place the energy order
order_response = tron_energy.place_order(
receive_address="TR7NHnXw5423f8j766h899234567890",
energy_amount=100_000,
period='1H'
)
print(order_response)
```

### Asynchronous Example

Here’s an example of how to use the asynchronous `AsyncTronEnergy` class:

```python
import asyncio
from async_tron_energy import AsyncTronEnergy

async def main():
# Initialize the AsyncTronEnergy client
tron_energy = AsyncTronEnergy(api_key='your-api-key', api_secret='your-api-secret')

try:
# Retrieve public data
public_data = await tron_energy.get_public_data()
print(public_data)

# Estimate the cost of an energy order
estimate = await tron_energy.estimate_order(
energy_amount=100_000,
period='1H'
)
print(estimate)

# Place the energy order
order_response = await tron_energy.place_order(
receive_address="TR7NHnXw5423f8j766h899234567890",
energy_amount=100_000,
period='1H'
)
print(order_response)
finally:
# Close the session to clean up resources
await tron_energy.close()

# Run the asynchronous main function
asyncio.run(main())
```

### API Reference for Asynchronous Class

#### `AsyncTronEnergy`

- **`__init__(self, api_key: str, api_secret: str)`**
- Initializes the `AsyncTronEnergy` object with the given API key and secret.

- **`get_public_data(self) -> dict`**
- Asynchronously retrieves public data from the TronEnergy API.

- **`place_order(self, receive_address: TronAddress, energy_amount: int, period: str = '1H', out_trade_no: str = None, callback_url: str = None) -> dict`**
- Asynchronously places an energy order on the TronEnergy API.

- **`estimate_order(self, energy_amount: int, period: str = '1H') -> dict`**
- Asynchronously estimates the cost of an energy order.

- **`make_request(self, method: str, url: str, data: dict = None) -> dict`**
- Asynchronously makes a request to the TronEnergy API.

- **`verify_signature(self, signature: str, timestamp: str, data: dict) -> bool`**
- Verifies the authenticity of a signature asynchronously.

- **`close(self)`**
- Asynchronously closes the client session to clean up resources.

## Testing

Expand Down
Loading