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.1.tar.gz (9.7 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.1-py2.py3-none-any.whl (7.2 kB view details)

Uploaded Python 2Python 3

File details

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

File metadata

  • Download URL: fastpusher-0.1.1.tar.gz
  • Upload date:
  • Size: 9.7 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.1.tar.gz
Algorithm Hash digest
SHA256 3d069d98af7080167f1292e9317f571661c0e6b63da552d7834a45c1f6dfb982
MD5 9c384e07c52652c5267a0750334aabc6
BLAKE2b-256 6791cf757486075940f4f83e053b6956070b1394bb5f7b6eb80711deb4524c72

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fastpusher-0.1.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.2 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.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 759f385a4e4de36e29ff227ed0c0271ef6be9098be18cffb895677686fb8efbf
MD5 d9513813345f75d5dafc6bb72945a163
BLAKE2b-256 530bf9cc5ad2002c7df0e4b6ceec1a817a89c61b015a1b4e2cc941e0b282c0fa

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