mirror of
https://github.com/simple-login/app.git
synced 2024-09-28 12:41:29 +02:00
Added Zendesk token
This commit is contained in:
parent
639d4412e1
commit
8120128a51
@ -414,3 +414,4 @@ PHONE_PROVIDER_2_HEADER = os.environ.get("PHONE_PROVIDER_2_HEADER")
|
|||||||
PHONE_PROVIDER_2_SECRET = os.environ.get("PHONE_PROVIDER_2_SECRET")
|
PHONE_PROVIDER_2_SECRET = os.environ.get("PHONE_PROVIDER_2_SECRET")
|
||||||
|
|
||||||
ZENDESK_HOST = os.environ.get("ZENDESK_HOST")
|
ZENDESK_HOST = os.environ.get("ZENDESK_HOST")
|
||||||
|
ZENDESK_API_TOKEN = os.environ.get("ZENDESK_API_TOKEN")
|
||||||
|
@ -11,7 +11,7 @@ from app.dashboard.base import dashboard_bp
|
|||||||
from app.extensions import limiter
|
from app.extensions import limiter
|
||||||
from app.log import LOG
|
from app.log import LOG
|
||||||
from app.models import Mailbox
|
from app.models import Mailbox
|
||||||
from app.config import ZENDESK_HOST
|
from app.config import ZENDESK_HOST, ZENDESK_API_TOKEN
|
||||||
|
|
||||||
VALID_MIME_TYPES = ["text/plain", "message/rfc822"]
|
VALID_MIME_TYPES = ["text/plain", "message/rfc822"]
|
||||||
|
|
||||||
@ -35,7 +35,9 @@ def check_zendesk_response_status(response_code: int) -> bool:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def upload_file_to_zendesk_and_get_upload_token(file: FileStorage) -> Union[None, str]:
|
def upload_file_to_zendesk_and_get_upload_token(
|
||||||
|
email: str, file: FileStorage
|
||||||
|
) -> Union[None, str]:
|
||||||
if file.mimetype not in VALID_MIME_TYPES and not file.mimetype.startswith("image/"):
|
if file.mimetype not in VALID_MIME_TYPES and not file.mimetype.startswith("image/"):
|
||||||
flash(
|
flash(
|
||||||
"File {} is not an image, text or an email".format(file.filename), "warning"
|
"File {} is not an image, text or an email".format(file.filename), "warning"
|
||||||
@ -44,7 +46,8 @@ def upload_file_to_zendesk_and_get_upload_token(file: FileStorage) -> Union[None
|
|||||||
escaped_filename = urllib.parse.urlencode({"filename": file.filename})
|
escaped_filename = urllib.parse.urlencode({"filename": file.filename})
|
||||||
url = "https://{}/api/v2/uploads?{}".format(ZENDESK_HOST, escaped_filename)
|
url = "https://{}/api/v2/uploads?{}".format(ZENDESK_HOST, escaped_filename)
|
||||||
headers = {"content-type": file.mimetype}
|
headers = {"content-type": file.mimetype}
|
||||||
response = requests.post(url, headers=headers, data=file.stream)
|
auth = ("{}/token".format(email), ZENDESK_API_TOKEN)
|
||||||
|
response = requests.post(url, headers=headers, data=file.stream, auth=auth)
|
||||||
if not check_zendesk_response_status(response.status_code):
|
if not check_zendesk_response_status(response.status_code):
|
||||||
return
|
return
|
||||||
data = response.json()
|
data = response.json()
|
||||||
@ -56,7 +59,7 @@ def create_zendesk_request(email: str, content: str, files: [FileStorage]) -> bo
|
|||||||
for file in files:
|
for file in files:
|
||||||
if not file.filename:
|
if not file.filename:
|
||||||
continue
|
continue
|
||||||
token = upload_file_to_zendesk_and_get_upload_token(file)
|
token = upload_file_to_zendesk_and_get_upload_token(email, file)
|
||||||
if token is None:
|
if token is None:
|
||||||
return False
|
return False
|
||||||
tokens.append(token)
|
tokens.append(token)
|
||||||
@ -72,7 +75,8 @@ def create_zendesk_request(email: str, content: str, files: [FileStorage]) -> bo
|
|||||||
}
|
}
|
||||||
url = "https://{}/api/v2/requests.json".format(ZENDESK_HOST)
|
url = "https://{}/api/v2/requests.json".format(ZENDESK_HOST)
|
||||||
headers = {"content-type": "application/json"}
|
headers = {"content-type": "application/json"}
|
||||||
response = requests.post(url, data=json.dumps(data), headers=headers)
|
auth = ("{}/token".format(email), ZENDESK_API_TOKEN)
|
||||||
|
response = requests.post(url, data=json.dumps(data), headers=headers, auth=auth)
|
||||||
if not check_zendesk_response_status(response.status_code):
|
if not check_zendesk_response_status(response.status_code):
|
||||||
return False
|
return False
|
||||||
LOG.debug("Ticket created")
|
LOG.debug("Ticket created")
|
||||||
|
Loading…
Reference in New Issue
Block a user