🚀 FastPusher
FastPusher is a simple and efficient Python library for sending push notifications via REST API. It provides an easy-to-use interface for sending messages to channels with built-in error handling, retry logic, and bulk messaging support.
✨ Features
- Simple API: Clean and intuitive interface for sending notifications
- Error Handling: Comprehensive exception handling with specific error types
- Retry Logic: Automatic retry mechanism for failed requests
- Bulk Messaging: Send messages to multiple channels at once
- Connection Testing: Built-in health check functionality
- Session Management: Efficient HTTP session handling
- Logging Support: Configurable logging with debug mode
- Type Hints: Full Python type hints support
📦 Installation
pip install fastpusher
Or install from source:
git clone https://github.com/javohir/fastpusher.git
cd fastpusher
pip install -e .
🚀 Quick Start
Basic Usage
from fastpusher import FastPusher
# Create FastPusher instance
pusher = FastPusher(
url="http://your-api-server.com",
token="your_api_token"
)
# Send a simple message
result = pusher.push(
channel="admin",
data={
"title": "Hello World!",
"body": "This is a test message."
}
)
print(f"Message sent: {result}")
# Always close the session when done
pusher.close()
Advanced Configuration
from fastpusher import FastPusher, ValidationError, ConnectionError
# Create pusher with custom settings
pusher = FastPusher(
url="http://your-api-server.com",
token="your_api_token",
timeout=30, # Request timeout in seconds
retry_attempts=3, # Number of retry attempts
debug=True # Enable debug logging
)
try:
result = pusher.push(
channel="notifications",
data={
"title": "Important Update",
"body": "Your account has been updated successfully.",
"priority": "high",
"timestamp": "2025-10-08T10:30:00Z"
}
)
print("✅ Message sent successfully!")
except ValidationError as e:
print(f"❌ Validation error: {e}")
except ConnectionError as e:
print(f"❌ Connection error: {e}")
finally:
pusher.close()
📚 API Reference
FastPusher Class
__init__(url, token, timeout=10, retry_attempts=3, debug=False)
Initialize FastPusher instance.
Parameters:
url(str): API server URLtoken(str): Authentication tokentimeout(int): Request timeout in seconds (default: 10)retry_attempts(int): Number of retry attempts on failure (default: 3)debug(bool): Enable debug mode (default: False)
push(channel, data)
Send message to a single channel.
Parameters:
channel(str): Channel name/IDdata(dict): Message data to send
Returns: API response as dictionary
Example:
result = pusher.push("admin", {
"title": "System Alert",
"body": "Server maintenance scheduled for tonight."
})
push_bulk(channels, data)
Send message to multiple channels.
Parameters:
channels(List[str]): List of channel namesdata(dict): Message data to send
Returns: List of results for each channel
Example:
channels = ["admin", "users", "moderators"]
results = pusher.push_bulk(channels, {
"title": "General Announcement",
"body": "New features are now available!"
})
for result in results:
if result["success"]:
print(f"✅ {result['channel']}: Success")
else:
print(f"❌ {result['channel']}: {result['error']}")
test_connection()
Test connection to the API server.
Returns: True if connection is successful, False otherwise
Example:
if pusher.test_connection():
print("✅ Server is reachable")
else:
print("❌ Cannot connect to server")
close()
Close the HTTP session. Always call this when finished.
📋 Message Structure
The data parameter should be a dictionary containing your message payload:
data = {
"title": "Message Title", # Required or body required
"body": "Message content", # Required or title required
"priority": "normal", # Optional: "normal" or "high"
"timestamp": "2025-10-08T10:30:00Z", # Optional
"custom_field": "custom_value" # Any additional fields
}
🧪 Testing
Run the test suite:
# Run all tests
python -m pytest tests/ -v
# Run with coverage
python -m pytest tests/ --cov=fastpusher --cov-report=html
# Run specific test
python -m pytest tests/test_pusher.py::TestFastPusher::test_push_success -v
🔧 Development
Setup Development Environment
# Clone repository
git clone https://github.com/javohir/fastpusher.git
cd fastpusher
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# or
.venv\Scripts\activate # Windows
# Install in development mode
pip install -e .
# Install development dependencies
pip install pytest pytest-cov
Running Examples
python fastpusher/examples.py
🤝 Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/new-feature) - Make your changes
- Add tests for new functionality
- Run the test suite (
python -m pytest) - Commit your changes (
git commit -am 'Add new feature') - Push to the branch (
git push origin feature/new-feature) - Create a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
👥 Authors
- Rustamov Javohir - rustamovj366@gmail.com
🔗 Links
📝 Changelog
v0.1.0
- Initial release
- Basic push notification functionality
- Bulk messaging support
- Error handling and retry logic
- Connection testing
- Comprehensive test suite
FastPusher - Send push notifications fast and reliably! 🚀
Metadata
Release files for fastpusher 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fastpusher-0.1.3.tar.gz | 9.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fastpusher-0.1.3-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 17.2 kB
Release files / fastpusher-0.1.3.tar.gz
| Download URL | fastpusher-0.1.3.tar.gz |
|---|---|
| Size | 9.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
71a2c6d477e18d6fb9caccd5d1e0f55546191e672885ec89667f8021f350cf12
|
|
BLAKE2b-256 checksum How to use checksums |
d23236b1291854663330874c0678039d6bc11eba1a857c3216adee7642948be8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.3
|
Release files / fastpusher-0.1.3-py2.py3-none-any.whl
| Download URL | fastpusher-0.1.3-py2.py3-none-any.whl |
|---|---|
| Size | 7.3 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
251af560d0e59bfebcb5c4fc165db21d135ce5a1a1910f7acc7d64e79b0433e9
|
|
BLAKE2b-256 checksum How to use checksums |
959964f6f16821675590fdf16f685a0f7a35c308203b064198c553259892441a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.3
|