| from urllib.parse import urlparse |
| def validate_webhooks_request(doctype, hmac_key, secret_key="secret"): |
| settings = frappe.get_doc(doctype) |
| if frappe.request and settings and settings.get(secret_key) and not frappe.flags.in_test: |
| settings.get(secret_key).encode("utf8"), frappe.request.data, hashlib.sha256 |
| if frappe.request.data and sig != bytes(frappe.get_request_header(hmac_key).encode()): |
| frappe.throw(_("Unverified Webhook Data")) |
| frappe.set_user(settings.modified_by) |
| def get_webhook_address(connector_name, method, exclude_uri=False, force_https=False): |
| endpoint = f"erpnext.erpnext_integrations.connectors.{connector_name}.{method}" |
| url = "http://localhost:8000" |
| scheme = "https" if force_https else url_data.scheme |
| server_url = f"{scheme}://{netloc}/api/method/{endpoint}" |
| def get_tracking_url(carrier, tracking_number): |
| # Return the formatted Tracking URL. |
| url_reference = frappe.get_value("Parcel Service", carrier, "url_reference") |
| tracking_url = frappe.render_template(url_reference, {"tracking_number": tracking_number}) |