[Enhancement] Added link to local stream on media item show page (#265)
* Adds link for opening local stream * Put conditional on correct element
This commit is contained in:
@@ -85,6 +85,7 @@ defmodule PinchflatWeb.MediaItems.MediaItemController do
|
|||||||
|> put_resp_header("accept-ranges", "bytes")
|
|> put_resp_header("accept-ranges", "bytes")
|
||||||
|> put_resp_header("content-range", "bytes #{start_pos}-#{end_pos}/#{file_size}")
|
|> put_resp_header("content-range", "bytes #{start_pos}-#{end_pos}/#{file_size}")
|
||||||
|> put_resp_header("content-length", to_string(length))
|
|> put_resp_header("content-length", to_string(length))
|
||||||
|
|> put_resp_header("content-disposition", "inline; filename=\"#{media_item.title}\"")
|
||||||
|> send_file(206, media_item.media_filepath, start_pos, length)
|
|> send_file(206, media_item.media_filepath, start_pos, length)
|
||||||
|
|
||||||
{:error, :invalid_range} ->
|
{:error, :invalid_range} ->
|
||||||
@@ -92,8 +93,10 @@ defmodule PinchflatWeb.MediaItems.MediaItemController do
|
|||||||
|
|
||||||
conn
|
conn
|
||||||
|> put_resp_content_type(mime_type)
|
|> put_resp_content_type(mime_type)
|
||||||
|> put_resp_header("content-length", to_string(file_size))
|
|
||||||
|> put_resp_header("accept-ranges", "bytes")
|
|> put_resp_header("accept-ranges", "bytes")
|
||||||
|
|> put_resp_header("content-range", "bytes 0-#{file_size - 1}/#{file_size}")
|
||||||
|
|> put_resp_header("content-length", to_string(file_size))
|
||||||
|
|> put_resp_header("content-disposition", "inline; filename=\"#{media_item.title}\"")
|
||||||
|> send_file(200, media_item.media_filepath)
|
|> send_file(200, media_item.media_filepath)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -32,8 +32,16 @@
|
|||||||
</div>
|
</div>
|
||||||
<aside class="mt-4 xl:mt-0">
|
<aside class="mt-4 xl:mt-0">
|
||||||
<div>Uploaded: <%= @media_item.upload_date %></div>
|
<div>Uploaded: <%= @media_item.upload_date %></div>
|
||||||
<div :if={URI.parse(@media_item.original_url).scheme =~ "http"}>
|
<div>
|
||||||
<.subtle_link href={@media_item.original_url} target="_blank">Open Original</.subtle_link>
|
<span :if={URI.parse(@media_item.original_url).scheme =~ "http"}>
|
||||||
|
<.subtle_link href={@media_item.original_url} target="_blank">Open Original</.subtle_link>
|
||||||
|
<span class="mx-2">or</span>
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<.subtle_link href={~p"/media/#{@media_item.uuid}/stream"} target="_blank">
|
||||||
|
Open Local Stream
|
||||||
|
</.subtle_link>
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-4 text-bodydark">
|
<div class="mt-4 text-bodydark">
|
||||||
<.break_on_newline text={@media_item.description} />
|
<.break_on_newline text={@media_item.description} />
|
||||||
|
|||||||
@@ -166,6 +166,7 @@ defmodule PinchflatWeb.MediaItemControllerTest do
|
|||||||
assert conn.status == 206
|
assert conn.status == 206
|
||||||
assert {"content-range", "bytes 0-100/#{filesize}"} in conn.resp_headers
|
assert {"content-range", "bytes 0-100/#{filesize}"} in conn.resp_headers
|
||||||
assert {"content-length", "101"} in conn.resp_headers
|
assert {"content-length", "101"} in conn.resp_headers
|
||||||
|
assert {"content-disposition", "inline; filename=\"#{media_item.title}\""} in conn.resp_headers
|
||||||
end
|
end
|
||||||
|
|
||||||
test "streams the specified range", %{conn: conn, media_item: media_item} do
|
test "streams the specified range", %{conn: conn, media_item: media_item} do
|
||||||
@@ -241,6 +242,8 @@ defmodule PinchflatWeb.MediaItemControllerTest do
|
|||||||
|
|
||||||
assert conn.status == 200
|
assert conn.status == 200
|
||||||
assert {"content-length", to_string(filesize)} in conn.resp_headers
|
assert {"content-length", to_string(filesize)} in conn.resp_headers
|
||||||
|
assert {"content-range", "bytes 0-#{filesize - 1}/#{filesize}"} in conn.resp_headers
|
||||||
|
assert {"content-disposition", "inline; filename=\"#{media_item.title}\""} in conn.resp_headers
|
||||||
end
|
end
|
||||||
|
|
||||||
test "streams the entire file", %{conn: conn, media_item: media_item} do
|
test "streams the entire file", %{conn: conn, media_item: media_item} do
|
||||||
|
|||||||
Reference in New Issue
Block a user