jcloude/press/commands.py
2025-12-23 21:34:08 +08:00

52 lines
1.3 KiB
Python

from __future__ import absolute_import
import click
import jingrow
from jingrow.commands import get_site, pass_context
@click.command("ngrok-webhook")
@pass_context
def start_ngrok_and_set_webhook(context):
from pyngrok import ngrok
from jcloude.api.billing import get_stripe
site = get_site(context)
jingrow.init(site=site)
jingrow.connect()
# Set ngrok auth token
auth_token = jingrow.db.get_single_value("Jcloude Settings", "ngrok_auth_token")
if auth_token:
ngrok.set_auth_token(auth_token)
port = jingrow.conf.http_port or jingrow.conf.webserver_port
tunnel = ngrok.connect(port, host_header=site)
public_url = tunnel.public_url
print()
print(f"{public_url} -> http://{site}:{port}")
print(f"Inspect logs at {tunnel.api_url}")
stripe = get_stripe()
url = f"{public_url}/api/method/jcloude.jcloude.pagetype.stripe_webhook_log.stripe_webhook_log.stripe_webhook_handler"
stripe.WebhookEndpoint.modify(
jingrow.db.get_single_value("Jcloude Settings", "stripe_webhook_endpoint_id"), url=url
)
print("Updated Stripe Webhook Endpoint")
ngrok_process = ngrok.get_ngrok_process()
try:
# Block until CTRL-C or some other terminating event
ngrok_process.proc.wait()
except KeyboardInterrupt:
print("Shutting down server...")
jingrow.destroy()
ngrok.kill()
commands = [
start_ngrok_and_set_webhook,
]