add: webhook

This commit is contained in:
h z
2025-03-17 13:54:53 +00:00
parent acb1e2260f
commit 864b78641b
23 changed files with 473 additions and 43 deletions

View File

@@ -1,12 +1,13 @@
from flask import Blueprint, request, jsonify
from sqlalchemy import or_
import api
from api import limiter
from api import require_auth, etag_response
from contexts.RequestContext import RequestContext
from db import get_db
from db.models.Markdown import Markdown
from events import markdown_created, markdown_updated, markdown_deleted
import api
import logging
from api import limiter
logger = logging.getLogger(__name__)
markdown_bp = Blueprint('markdown', __name__, url_prefix='/api/markdown')
@@ -79,6 +80,7 @@ def create_markdown():
return jsonify({"error": "duplicate shortcut"}), 400
session.add(new_markdown)
session.commit()
markdown_created.send(None, new_markdown.to_dict())
return jsonify(new_markdown.to_dict()), 201
except Exception as e:
logger.error(f"failed to create markdown: {e}")
@@ -118,6 +120,7 @@ def update_markdown(markdown_id):
if 'shortcut' in data:
markdown.shortcut = data.get('shortcut')
session.commit()
markdown_updated.send(None, markdown.to_dict())
return jsonify(markdown.to_dict()), 200
@markdown_bp.route('/<int:markdown_id>', methods=['DELETE'])
@@ -130,8 +133,10 @@ def delete_markdown(markdown_id):
logger.error(f"failed to delete markdown: {markdown_id}")
errno = RequestContext.get_error_id()
return jsonify({"error": f"file not found - {errno}"}), 404
md = markdown.to_dict()
session.delete(markdown)
session.commit()
markdown_deleted.send(None, md)
return jsonify({"message": "deleted"}), 200
@@ -150,6 +155,7 @@ def move_forward(markdown_id):
previous_markdown = siblings[current_index - 1]
markdown.order, previous_markdown.order = previous_markdown.order, markdown.order
session.commit()
markdown_updated.send(None, markdown.to_dict())
return jsonify(markdown.to_dict()), 200
@@ -167,8 +173,9 @@ def move_backward(markdown_id):
return jsonify({"error": "already at the last position"}), 400
next_markdown = siblings[current_index + 1]
markdown.order, next_markdown.order = next_markdown.order, next_markdown.order
markdown.order, next_markdown.order = next_markdown.order, markdown.order
session.commit()
markdown_updated.send(None, markdown.to_dict())
return jsonify(markdown.to_dict()), 200
@markdown_bp.route('/search/<string:keyword>', methods=['GET'])