webHook.py 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import datetime
  2. import logging
  3. import os
  4. import traceback
  5. import requests
  6. from flask import json, jsonify # To read json data
  7. from flask import request # To receive headers
  8. from flask import Flask # To be able to start the application
  9. from werkzeug.utils import secure_filename
  10. from Apietl.constant.ConfConstant import ConfConstant
  11. from Apietl.kwai_etl.report.AccountReport import AccountReport
  12. from Apietl.bytedance_etl.report.AdvertiserReport import AdvertiserReport
  13. from Apietl.utlis.EtlFirstDeliveryValidMaterials import EtlFirstDeliveryValidMaterials
  14. from Apietl.utlis.UpLoadFile import UpLoadFile
  15. app = Flask(__name__)
  16. @app.route('/')
  17. def api_root():
  18. return 'Welcome guys'
  19. @app.route('/webhook/account_report', methods=['POST'])
  20. def api_webhook_messages():
  21. print(json.loads(request.data))
  22. my_info = json.loads(request.data)
  23. account_id = my_info["account_id"]
  24. start_date = my_info["start_date"]
  25. end_date = my_info["end_date"]
  26. date_type = my_info["date_type"]
  27. AccountReport().handler(date_type, account_id, start_date, end_date)
  28. return '200'
  29. @app.route('/webhook/bytedance_account_report', methods=['POST'])
  30. def api_webhook_bytedance_messages():
  31. print(json.loads(request.data))
  32. my_info = json.loads(request.data)
  33. account_id = my_info["advertiser_id"]
  34. start_date = my_info["start_date"]
  35. end_date = my_info["end_date"]
  36. date_type = my_info["date_type"]
  37. AdvertiserReport().handler(date_type, account_id, start_date, end_date)
  38. return '200'
  39. @app.route('/webhook/get_file', methods=['POST'])
  40. def api_webhook_get_file():
  41. payload = {}
  42. headers = {
  43. 'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
  44. 'Accept': '*/*',
  45. 'Host': 'api.tjyourong.com.cn',
  46. 'Connection': 'keep-alive'
  47. }
  48. if 'file' not in request.files:
  49. url = "http://api.tjyourong.com.cn/jeecg-boot/first/delivery/excelCallBack?msg={msg}".format(msg='error')
  50. response = requests.request("GET", url, headers=headers, data=payload)
  51. print(response.text, 'error1')
  52. return '200'
  53. file = request.files['file']
  54. if file.filename == '':
  55. url = "http://api.tjyourong.com.cn/jeecg-boot/first/delivery/excelCallBack?msg={msg}".format(msg='error')
  56. response = requests.request("GET", url, headers=headers, data=payload)
  57. print(response.text, 'error2')
  58. return '200'
  59. try:
  60. file.save('/home/excel/' + 'upload.csv')
  61. status = UpLoadFile.uploadFile('upload.csv')
  62. if status == 0:
  63. url = "http://api.tjyourong.com.cn/jeecg-boot/first/delivery/excelCallBack?msg={msg}".format(msg='success')
  64. requests.request("GET", url, headers=headers, data=payload)
  65. else:
  66. url = "http://api.tjyourong.com.cn/jeecg-boot/first/delivery/excelCallBack?msg={msg}".format(msg='error')
  67. requests.request("GET", url, headers=headers, data=payload)
  68. material_status = EtlFirstDeliveryValidMaterials().handler()
  69. if material_status == 0:
  70. url = "http://api.tjyourong.com.cn/jeecg-boot/first/delivery/excelCallBack?msg={msg}".format(msg='success')
  71. requests.request("GET", url, headers=headers, data=payload)
  72. else:
  73. url = "http://api.tjyourong.com.cn/jeecg-boot/first/delivery/excelCallBack?msg={msg}".format(msg='error')
  74. requests.request("GET", url, headers=headers, data=payload)
  75. os.remove('/data/excel/' + 'upload.csv')
  76. return '200'
  77. except Exception as e:
  78. url = "http://api.tjyourong.com.cn/jeecg-boot/first/delivery/excelCallBack?msg={msg}".format(msg='error')
  79. response = requests.request("GET", url, headers=headers, data=payload)
  80. print(response.text, 'error3')
  81. return '200'
  82. if __name__ == '__main__':
  83. app.run(port=8765, host=ConfConstant.URL, debug=True)