[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:
parent
b2e16d50cd
commit
10880e9699
3 changed files with 17 additions and 3 deletions
|
|
@ -85,6 +85,7 @@ defmodule PinchflatWeb.MediaItems.MediaItemController do
|
|||
|> put_resp_header("accept-ranges", "bytes")
|
||||
|> put_resp_header("content-range", "bytes #{start_pos}-#{end_pos}/#{file_size}")
|
||||
|> 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)
|
||||
|
||||
{:error, :invalid_range} ->
|
||||
|
|
@ -92,8 +93,10 @@ defmodule PinchflatWeb.MediaItems.MediaItemController do
|
|||
|
||||
conn
|
||||
|> put_resp_content_type(mime_type)
|
||||
|> put_resp_header("content-length", to_string(file_size))
|
||||
|> 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)
|
||||
end
|
||||
else
|
||||
|
|
|
|||
|
|
@ -32,8 +32,16 @@
|
|||
</div>
|
||||
<aside class="mt-4 xl:mt-0">
|
||||
<div>Uploaded: <%= @media_item.upload_date %></div>
|
||||
<div :if={URI.parse(@media_item.original_url).scheme =~ "http"}>
|
||||
<.subtle_link href={@media_item.original_url} target="_blank">Open Original</.subtle_link>
|
||||
<div>
|
||||
<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 class="mt-4 text-bodydark">
|
||||
<.break_on_newline text={@media_item.description} />
|
||||
|
|
|
|||
|
|
@ -166,6 +166,7 @@ defmodule PinchflatWeb.MediaItemControllerTest do
|
|||
assert conn.status == 206
|
||||
assert {"content-range", "bytes 0-100/#{filesize}"} 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
|
||||
|
||||
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 {"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
|
||||
|
||||
test "streams the entire file", %{conn: conn, media_item: media_item} do
|
||||
|
|
|
|||
Loading…
Reference in a new issue