mhdzumair commited on
Commit
6ea5eed
·
1 Parent(s): 5427152

Fix streaming header & status issue

Browse files
Files changed (1) hide show
  1. mediaflow_proxy/handlers.py +12 -2
mediaflow_proxy/handlers.py CHANGED
@@ -49,10 +49,15 @@ async def handle_hls_stream_proxy(request: Request, destination: str, headers: d
49
 
50
  headers.update({"accept-ranges": headers.get("range", "bytes=0-")})
51
  # clean up the headers to only include the necessary headers and remove acl headers
52
- response_headers = {k: v for k, v in response.headers.items() if k.lower() in SUPPORTED_RESPONSE_HEADERS}
 
 
 
 
53
 
54
  return StreamingResponse(
55
  streamer.stream_content(destination, headers),
 
56
  headers=response_headers,
57
  background=BackgroundTask(streamer.close),
58
  )
@@ -107,15 +112,20 @@ async def handle_stream_request(method: str, video_url: str, headers: dict):
107
  try:
108
  response = await streamer.head(video_url, headers)
109
  # clean up the headers to only include the necessary headers and remove acl headers
110
- response_headers = {k: v for k, v in response.headers.items() if k.lower() in SUPPORTED_RESPONSE_HEADERS}
 
 
111
 
112
  if method == "HEAD":
113
  await streamer.close()
114
  return Response(headers=response_headers, status_code=response.status_code)
115
  else:
 
 
116
  return StreamingResponse(
117
  streamer.stream_content(video_url, headers),
118
  headers=response_headers,
 
119
  background=BackgroundTask(streamer.close),
120
  )
121
  except httpx.HTTPStatusError as e:
 
49
 
50
  headers.update({"accept-ranges": headers.get("range", "bytes=0-")})
51
  # clean up the headers to only include the necessary headers and remove acl headers
52
+ response_headers = {
53
+ k.title(): v for k, v in response.headers.items() if k.lower() in SUPPORTED_RESPONSE_HEADERS
54
+ }
55
+ # set chunked transfer encoding for streaming
56
+ response_headers["Transfer-Encoding"] = "chunked"
57
 
58
  return StreamingResponse(
59
  streamer.stream_content(destination, headers),
60
+ status_code=response.status_code,
61
  headers=response_headers,
62
  background=BackgroundTask(streamer.close),
63
  )
 
112
  try:
113
  response = await streamer.head(video_url, headers)
114
  # clean up the headers to only include the necessary headers and remove acl headers
115
+ response_headers = {
116
+ k.title(): v for k, v in response.headers.items() if k.lower() in SUPPORTED_RESPONSE_HEADERS
117
+ }
118
 
119
  if method == "HEAD":
120
  await streamer.close()
121
  return Response(headers=response_headers, status_code=response.status_code)
122
  else:
123
+ # set chunked transfer encoding for streaming
124
+ response_headers["Transfer-Encoding"] = "chunked"
125
  return StreamingResponse(
126
  streamer.stream_content(video_url, headers),
127
  headers=response_headers,
128
+ status_code=206,
129
  background=BackgroundTask(streamer.close),
130
  )
131
  except httpx.HTTPStatusError as e: