adds failure logs + payload write

main
Laurent 8 months ago
parent 2d4ef7d69f
commit 9bfb0cf2d4
  1. 50
      pokeranalytics_backend/settings.py
  2. 21
      subscriptions/views.py

@ -12,6 +12,7 @@ https://docs.djangoproject.com/en/4.1/ref/settings/
from pathlib import Path
import os
import logging.config
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
@ -24,7 +25,6 @@ BASE_DIR = Path(__file__).resolve().parent.parent
SECRET_KEY = 'django-insecure-v9l*b^t^2eqp877kdrt%5g#y=8$e%e^sa!65(1@t+rp@avwx+@'
ASS_KEY_FILE = BASE_DIR / 'AppleRootCA-G3.cer'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
ALLOWED_HOSTS = ['*']
@ -128,4 +128,52 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
APNS_ENVIRONMENT_SANDBOX = False
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
'style': '{',
},
'simple': {
'format': '{levelname} {message}',
'style': '{',
},
},
'handlers': {
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'verbose',
},
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': os.path.join(BASE_DIR, 'logs/django.log'),
'formatter': 'verbose',
},
'rotating_file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(BASE_DIR, 'logs/django.log'),
'maxBytes': 10 * 1024 * 1024,
'backupCount': 10,
'formatter': 'verbose',
},
},
'loggers': {
'django': {
'handlers': ['console', 'file'],
'level': 'INFO',
'propagate': True,
},
'subscriptions': { # Replace with your app name
'handlers': ['console', 'file'],
'level': 'DEBUG',
'propagate': False,
},
},
}
from .settings_local import *

@ -14,6 +14,7 @@ from pokeranalytics_backend.settings import APNS_ENVIRONMENT_SANDBOX
import json, jwt
import base64
import os
import logging
import datetime
@ -43,10 +44,24 @@ def app_store_webhook(request):
fulljson = json.loads(decoded)
signedPayload = fulljson['signedPayload']
save_payload_file(signedPayload)
decodePayload(signedPayload)
return JsonResponse({'status': 'success'})
def save_payload_file(signedPayload):
tmp_dir = os.path.join(settings.BASE_DIR, 'tmp')
# Create the tmp directory if it doesn't exist
if not os.path.exists(tmp_dir):
os.makedirs(tmp_dir)
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
filename = os.path.join(tmp_dir, f'signedPayload_{timestamp}.txt')
with open(filename, 'w') as f:
f.write(signedPayload)
def decodePayload(signedPayload):
enable_online_checks = True
@ -65,7 +80,7 @@ def decodePayload(signedPayload):
data = payload.data
transaction_info = verifier.verify_and_decode_signed_transaction(data.signedTransactionInfo)
renewal_info = verifier.verify_and_decode_renewal_info(data.signedRenewalInfo)
# renewal_info = verifier.verify_and_decode_renewal_info(data.signedRenewalInfo)
signedDateTime = datetime.datetime.fromtimestamp(payload.signedDate / 1000)
expiresDateTime = datetime.datetime.fromtimestamp(transaction_info.expiresDate / 1000)
@ -127,8 +142,10 @@ def decodePayload(signedPayload):
except APIException as e:
print(e)
logger = logging.getLogger('subscriptions')
logger.exception("An error occurred during division")
return HttpResponse(renewal_info)
return HttpResponse('ok')
# def load_root_certificate():
# in_file = open("AppleRootCA-G3.cer", "rb") # opening for [r]eading as [b]inary

Loading…
Cancel
Save