<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def validate(self, api_key=None):
 		""" 		The original contents of the Event message must be confirmed by 		refetching it and comparing the fetched data with the original data. 		This function makes an API call to Stripe to redownload the Event data 		and returns whether or not it matches the WebhookEventTrigger data. 		"""


		local_data = self.json_body
		if "id" not in local_data or "livemode" not in local_data:
			return False

		if self.is_test_event:
			logger.info("Test webhook received: {}".format(local_data))
			return False

		if djstripe_settings.WEBHOOK_VALIDATION is None:
			# validation disabled
			return True
		elif (
			djstripe_settings.WEBHOOK_VALIDATION == "verify_signature"
			and djstripe_settings.WEBHOOK_SECRET
		):
			try:
				stripe.WebhookSignature.verify_header(
					self.body,
					self.headers.get("stripe-signature"),
					djstripe_settings.WEBHOOK_SECRET,
					djstripe_settings.WEBHOOK_TOLERANCE,
				)
			except stripe.error.SignatureVerificationError:
				return False
			else:
				return True

		livemode = local_data["livemode"]
		api_key = api_key or djstripe_settings.get_default_api_key(livemode)

		# Retrieve the event using the api_version specified in itself
		with stripe_temporary_api_version(local_data["api_version"], validate=False):
			remote_data = Event.stripe_class.retrieve(id=local_data["id"], api_key=api_key)

		return local_data["data"] == remote_data["data"]