Skip to main content

A Python module to parse Shopify webhook requests, tailored for Azure Functions.

Project description

Shopify Webhook Parser

The Shopify Webhook Parser is a versatile Python module designed for efficient parsing of Shopify webhook requests. While it includes a specific implementation for Azure Functions, its architecture is flexible, allowing it to be extended and adapted to various environments and requirements.

Features

  • Strategy Pattern: At the core of this module lies the Strategy pattern, enabling dynamic selection and interchangeability of parsing logic. This approach allows for the easy addition of new parsing strategies to accommodate different processing needs or webhook formats.
  • Extendable for Various Environments: Initially provided with an implementation for Azure Functions, the module is structured to be easily extendable to other platforms or frameworks.
  • Robust Error Handling: Incorporates comprehensive error handling to manage and log parsing exceptions, ensuring reliability and maintainability.
  • Customizable Parsing Strategies: Designed to cater to a range of webhook parsing needs, from simple to complex, the module is both customizable and scalable, fitting into different project sizes and complexities.

Implementing New Parsing Strategies

To integrate new parsing strategies, follow these guidelines:

  1. Strategy Function Signature:
    • Implement strategies as callables conforming to the following type: (HttpRequest) -> Tuple[bytes, Dict[str, Any]].
    • These functions should accept a webhook request and return a tuple with the request body in bytes and headers.
  2. Error Management:
    • Strategies should handle and log exceptions effectively.
    • Raise a ValueError with a descriptive message in case of processing failure.
  3. Seamless Integration:
    • Design strategies for easy integration with the parse_shopify_webhook_request function.
    • Ensure compatibility with expected input types.
  4. Comprehensive Testing:
    • Thoroughly test each strategy to accurately parse various webhook formats.
    • Include tests for edge cases and error handling scenarios.

Installation

pip install shopifywebhookparser

Usage

This module can be used in Azure Functions to parse Shopify webhook requests. The ParsedWebhook class is designed to be flexible, allowing direct instantiation with specific attributes or deriving them from provided webhook data.

Example

import azure.functions as func
from shopifywebhookparser import parse_shopify_webhook_request, azure_func_request_parse_strategy

def main(req: func.HttpRequest) -> func.HttpResponse:
    try:
        parsed_webhook = parse_shopify_webhook_request(
            req, azure_func_request_parse_strategy
        )
        # Access parsed data
        onlinestore_name = parsed_webhook.onlinestore_name
        # Further processing of the parsed data
        return func.HttpResponse(f"Processed webhook for store: {onlinestore_name}", status_code=200)
    except ValueError as e:
        return func.HttpResponse(f"Error: {e}", status_code=400)

Development and Contributions

Feel free to contribute to the improvement of this module by submitting pull requests or reporting issues.

Logging

The module uses Python's built-in logging to provide insights into its operations and error conditions.

License

MIT, for details see LICENSE

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

shopifywebhookparser-0.1.23.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

shopifywebhookparser-0.1.23-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file shopifywebhookparser-0.1.23.tar.gz.

File metadata

  • Download URL: shopifywebhookparser-0.1.23.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.6 Linux/6.2.0-1016-azure

File hashes

Hashes for shopifywebhookparser-0.1.23.tar.gz
Algorithm Hash digest
SHA256 167f0771cfb150eb4cea4ba0b3ac7adc5c6885be408763ba14c8944b94cb477a
MD5 c775cf08285478ffe5eb8c1a0e9fff9f
BLAKE2b-256 0eb9b828922e65b4f6781ddc504653fb9cc99d4d8320746fa27c5c43da1ffd97

See more details on using hashes here.

File details

Details for the file shopifywebhookparser-0.1.23-py3-none-any.whl.

File metadata

File hashes

Hashes for shopifywebhookparser-0.1.23-py3-none-any.whl
Algorithm Hash digest
SHA256 bc67cadb9fdb01c174842a2ee4d9e54392a7539d6775e72829a5a6245e39a342
MD5 52314a9ba09a69091a1c0f9959c87de2
BLAKE2b-256 3732248e68928a52abb27631a520ba1f2adb677c3df1d0ea067bc0a6769d428a

See more details on using hashes here.

Supported by

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