Pass the referer from the client to the YouTube API
This fixes the errors when the API key is configured to require a referer for all the requests.
This commit is contained in:
@@ -385,7 +385,7 @@ 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
|
||||
metadata, status_code = load_metadata_from_youtube(video_id=self.youtube_id_1_0)
|
||||
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'
|
||||
return response
|
||||
|
||||
@@ -284,11 +284,11 @@ def yt_video_metadata(request):
|
||||
:return: youtube video metadata
|
||||
"""
|
||||
video_id = request.GET.get('id', None)
|
||||
metadata, status_code = load_metadata_from_youtube(video_id)
|
||||
metadata, status_code = load_metadata_from_youtube(video_id, request)
|
||||
return Response(metadata, status=status_code, content_type='application/json')
|
||||
|
||||
|
||||
def load_metadata_from_youtube(video_id):
|
||||
def load_metadata_from_youtube(video_id, request):
|
||||
"""
|
||||
Get metadata about a YouTube video.
|
||||
|
||||
@@ -301,9 +301,15 @@ def load_metadata_from_youtube(video_id):
|
||||
yt_api_key = settings.YOUTUBE_API_KEY
|
||||
yt_metadata_url = settings.YOUTUBE['METADATA_URL']
|
||||
yt_timeout = settings.YOUTUBE.get('TEST_TIMEOUT', 1500) / 1000 # converting milli seconds to seconds
|
||||
|
||||
headers = {}
|
||||
http_referer = request.META.get('HTTP_REFERER')
|
||||
if http_referer:
|
||||
headers['Referer'] = http_referer
|
||||
|
||||
payload = {'id': video_id, 'part': 'contentDetails', 'key': yt_api_key}
|
||||
try:
|
||||
res = requests.get(yt_metadata_url, params=payload, timeout=yt_timeout)
|
||||
res = requests.get(yt_metadata_url, params=payload, timeout=yt_timeout, headers=headers)
|
||||
status_code = res.status_code
|
||||
if res.status_code == 200:
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user