projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add default favicon
[akkoma]
/
lib
/
pleroma
/
upload.ex
diff --git
a/lib/pleroma/upload.ex
b/lib/pleroma/upload.ex
index 6547113514b15fe3d74770f2fde3869930265223..9bf8e03df49aab6c7b1fb64952ee6befd10168a0 100644
(file)
--- a/
lib/pleroma/upload.ex
+++ b/
lib/pleroma/upload.ex
@@
-23,6
+23,9
@@
defmodule Pleroma.Upload do
is once created permanent and changing it (especially in uploaders) is probably a bad idea!
* `:tempfile` - path to the temporary file. Prefer in-place changes on the file rather than changing the
path as the temporary file is also tracked by `Plug.Upload{}` and automatically deleted once the request is over.
is once created permanent and changing it (especially in uploaders) is probably a bad idea!
* `:tempfile` - path to the temporary file. Prefer in-place changes on the file rather than changing the
path as the temporary file is also tracked by `Plug.Upload{}` and automatically deleted once the request is over.
+ * `:width` - width of the media in pixels
+ * `:height` - height of the media in pixels
+ * `:blurhash` - string hash of the image encoded with the blurhash algorithm (https://blurha.sh/)
Related behaviors:
Related behaviors:
@@
-32,6
+35,8
@@
defmodule Pleroma.Upload do
"""
alias Ecto.UUID
alias Pleroma.Config
"""
alias Ecto.UUID
alias Pleroma.Config
+ alias Pleroma.Maps
+ alias Pleroma.Web.ActivityPub.Utils
require Logger
@type source ::
require Logger
@type source ::
@@
-53,9
+58,12
@@
defmodule Pleroma.Upload do
name: String.t(),
tempfile: String.t(),
content_type: String.t(),
name: String.t(),
tempfile: String.t(),
content_type: String.t(),
+ width: integer(),
+ height: integer(),
+ blurhash: String.t(),
path: String.t()
}
path: String.t()
}
- defstruct [:id, :name, :tempfile, :content_type, :path]
+ defstruct [:id, :name, :tempfile, :content_type, :
width, :height, :blurhash, :
path]
defp get_description(opts, upload) do
case {opts[:description], Pleroma.Config.get([Pleroma.Upload, :default_description])} do
defp get_description(opts, upload) do
case {opts[:description], Pleroma.Config.get([Pleroma.Upload, :default_description])} do
@@
-81,6
+89,7
@@
defmodule Pleroma.Upload do
{:ok, url_spec} <- Pleroma.Uploaders.Uploader.put_file(opts.uploader, upload) do
{:ok,
%{
{:ok, url_spec} <- Pleroma.Uploaders.Uploader.put_file(opts.uploader, upload) do
{:ok,
%{
+ "id" => Utils.generate_object_id(),
"type" => opts.activity_type,
"mediaType" => upload.content_type,
"url" => [
"type" => opts.activity_type,
"mediaType" => upload.content_type,
"url" => [
@@
-89,9
+98,12
@@
defmodule Pleroma.Upload do
"mediaType" => upload.content_type,
"href" => url_from_spec(upload, opts.base_url, url_spec)
}
"mediaType" => upload.content_type,
"href" => url_from_spec(upload, opts.base_url, url_spec)
}
+ |> Maps.put_if_present("width", upload.width)
+ |> Maps.put_if_present("height", upload.height)
],
"name" => description
],
"name" => description
- }}
+ }
+ |> Maps.put_if_present("blurhash", upload.blurhash)}
else
{:description_limit, _} ->
{:error, :description_too_long}
else
{:description_limit, _} ->
{:error, :description_too_long}
@@
-225,7
+237,7
@@
defmodule Pleroma.Upload do
case uploader do
Pleroma.Uploaders.Local ->
case uploader do
Pleroma.Uploaders.Local ->
- upload_base_url || Pleroma.Web.
base_
url() <> "/media/"
+ upload_base_url || Pleroma.Web.
Endpoint.
url() <> "/media/"
Pleroma.Uploaders.S3 ->
bucket = Config.get([Pleroma.Uploaders.S3, :bucket])
Pleroma.Uploaders.S3 ->
bucket = Config.get([Pleroma.Uploaders.S3, :bucket])
@@
-251,7
+263,7
@@
defmodule Pleroma.Upload do
end
_ ->
end
_ ->
- public_endpoint || upload_base_url || Pleroma.Web.
base_
url() <> "/media/"
+ public_endpoint || upload_base_url || Pleroma.Web.
Endpoint.
url() <> "/media/"
end
end
end
end
end
end