alias.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. from flask import g
  2. from flask import jsonify, request
  3. from flask_cors import cross_origin
  4. from app.api.base import api_bp, verify_api_key
  5. from app.dashboard.views.index import get_alias_info, AliasInfo
  6. from app.extensions import db
  7. from app.models import GenEmail
  8. @api_bp.route("/aliases")
  9. @cross_origin()
  10. @verify_api_key
  11. def get_aliases():
  12. """
  13. Get aliases
  14. Input:
  15. page_id: in query
  16. Output:
  17. - aliases: list of alias:
  18. - id
  19. - email
  20. - creation_date
  21. - creation_timestamp
  22. - nb_forward
  23. - nb_block
  24. - nb_reply
  25. """
  26. user = g.user
  27. try:
  28. page_id = int(request.args.get("page_id"))
  29. except (ValueError, TypeError):
  30. return jsonify(error="page_id must be provided in request query"), 400
  31. aliases: [AliasInfo] = get_alias_info(user.id, page_id=page_id)
  32. return (
  33. jsonify(
  34. aliases=[
  35. {
  36. "id": alias.id,
  37. "email": alias.gen_email.email,
  38. "creation_date": alias.gen_email.created_at.format(),
  39. "creation_timestamp": alias.gen_email.created_at.timestamp,
  40. "nb_forward": alias.nb_forward,
  41. "nb_block": alias.nb_blocked,
  42. "nb_reply": alias.nb_reply,
  43. }
  44. for alias in aliases
  45. ]
  46. ),
  47. 200,
  48. )
  49. @api_bp.route("/aliases/<int:alias_id>", methods=["DELETE"])
  50. @cross_origin()
  51. @verify_api_key
  52. def delete_alias(alias_id):
  53. """
  54. Delete alias
  55. Input:
  56. alias_id: in url
  57. Output:
  58. 200 if deleted successfully
  59. """
  60. user = g.user
  61. gen_email = GenEmail.get(alias_id)
  62. if gen_email.user_id != user.id:
  63. return jsonify(error="Forbidden"), 403
  64. GenEmail.delete(alias_id)
  65. db.session.commit()
  66. return jsonify(deleted=True), 200