[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:
Kieran 2024-05-27 11:07:23 -07:00 committed by GitHub
parent b2e16d50cd
commit 10880e9699
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 17 additions and 3 deletions

View file

@ -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

View file

@ -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} />

View file

@ -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