Merge pull request #24220 from open-craft/samuel/fix-youtube-metadata-api

SE-2634 Fix crashes in yt_video_metadata
This commit is contained in:
David Ormsbee
2020-06-19 12:24:28 -04:00
committed by GitHub
2 changed files with 14 additions and 1 deletions

View File

@@ -391,6 +391,10 @@ class VideoStudentViewHandlers(object):
runtime uses a similar REST API that's not an XBlock handler.
"""
from lms.djangoapps.courseware.views.views import load_metadata_from_youtube
if not self.youtube_id_1_0:
# TODO: more informational response to explain that yt_video_metadata not supported for non-youtube videos.
return Response('{}', status=400)
metadata, status_code = load_metadata_from_youtube(video_id=self.youtube_id_1_0, request=request)
response = Response(json.dumps(metadata), status=status_code)
response.content_type = 'application/json'

View File

@@ -308,7 +308,16 @@ def load_metadata_from_youtube(video_id, request):
yt_timeout = settings.YOUTUBE.get('TEST_TIMEOUT', 1500) / 1000 # converting milli seconds to seconds
headers = {}
http_referer = request.META.get('HTTP_REFERER')
http_referer = None
try:
# This raises an attribute error if called from the xblock yt_video_metadata handler, which passes
# a webob request instead of a django request.
http_referer = request.META.get('HTTP_REFERER')
except AttributeError:
# So here, let's assume it's a webob request and access the referer the webob way.
http_referer = request.referer
if http_referer:
headers['Referer'] = http_referer