Skip to main content

A fast and efficient push notification library

Project description

🚀 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 URL
  • token (str): Authentication token
  • timeout (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/ID
  • data (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 names
  • data (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

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/new-feature)
  3. Make your changes
  4. Add tests for new functionality
  5. Run the test suite (python -m pytest)
  6. Commit your changes (git commit -am 'Add new feature')
  7. Push to the branch (git push origin feature/new-feature)
  8. Create a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

👥 Authors

🔗 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! 🚀

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastpusher-0.1.3.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastpusher-0.1.3-py2.py3-none-any.whl (7.3 kB view details)

Uploaded Python 2Python 3

File details

Details for the file fastpusher-0.1.3.tar.gz.

File metadata

  • Download URL: fastpusher-0.1.3.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for fastpusher-0.1.3.tar.gz
Algorithm Hash digest
SHA256 71a2c6d477e18d6fb9caccd5d1e0f55546191e672885ec89667f8021f350cf12
MD5 961335bc0de2a1f639724af195662d42
BLAKE2b-256 d23236b1291854663330874c0678039d6bc11eba1a857c3216adee7642948be8

See more details on using hashes here.

File details

Details for the file fastpusher-0.1.3-py2.py3-none-any.whl.

File metadata

  • Download URL: fastpusher-0.1.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for fastpusher-0.1.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 251af560d0e59bfebcb5c4fc165db21d135ce5a1a1910f7acc7d64e79b0433e9
MD5 6119e1d45acd6f26566eb74686fe0fda
BLAKE2b-256 959964f6f16821675590fdf16f685a0f7a35c308203b064198c553259892441a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page