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:
- 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.
- Implement strategies as callables conforming to the following type:
- Error Management:
- Strategies should handle and log exceptions effectively.
- Raise a
ValueError
with a descriptive message in case of processing failure.
- Seamless Integration:
- Design strategies for easy integration with the
parse_shopify_webhook_request
function. - Ensure compatibility with expected input types.
- Design strategies for easy integration with the
- 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
To use this module in an Azure Function, import and call the parse_shopify_webhook_request function with the appropriate parsing strategy.
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:
onlinestore_name, data_bytes, headers, hmac_sha256 = parse_shopify_webhook_request(
req, azure_func_request_parse_strategy
)
# 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file shopifywebhookparser-0.1.9.tar.gz
.
File metadata
- Download URL: shopifywebhookparser-0.1.9.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2b5863b3aa67f2204d46f3d99b01e1d6671a4030e372b944d1bfe484b8eac45 |
|
MD5 | ed0de583ac5ecfc7b309d08a79ed82f0 |
|
BLAKE2b-256 | d6a0f700163384ace9a98104d35faabce6e8aa0794b71d3a8602c94019922a49 |
File details
Details for the file shopifywebhookparser-0.1.9-py3-none-any.whl
.
File metadata
- Download URL: shopifywebhookparser-0.1.9-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dac9db02c030583180b37736c3b3cfb59dd1f279d7cb9d8a954acfb245d921d3 |
|
MD5 | 7c0eb7ea4e96d624ce43063318fae3f1 |
|
BLAKE2b-256 | 047f7debb0368386ce2b5717c49d5d97a77dd06d7ccfb4a81d7c9f2dcbb6352e |