:ok <- bookmarks(path, user),
{:ok, zip_path} <- :zip.create('#{path}.zip', @files, cwd: path),
{:ok, _} <- File.rm_rf(path) do
- {:ok, zip_path}
+ {:ok, :binary.list_to_bin(zip_path)}
end
end
- def actor(dir, user) do
+ def upload(zip_path) do
+ uploader = Pleroma.Config.get([Pleroma.Upload, :uploader])
+ file_name = zip_path |> String.split("/") |> List.last()
+ id = Ecto.UUID.generate()
+
+ upload = %Pleroma.Upload{
+ id: id,
+ name: file_name,
+ tempfile: zip_path,
+ content_type: "application/zip",
+ path: id <> "/" <> file_name
+ }
+
+ with :ok <- uploader.put_file(upload), :ok <- File.rm(zip_path) do
+ {:ok, upload}
+ end
+ end
+
+ defp actor(dir, user) do
with {:ok, json} <-
UserView.render("user.json", %{user: user})
|> Map.merge(%{"likes" => "likes.json", "bookmarks" => "bookmarks.json"})
end
end
- def bookmarks(dir, %{id: user_id} = _user) do
+ defp bookmarks(dir, %{id: user_id} = _user) do
Bookmark
|> where(user_id: ^user_id)
|> join(:inner, [b], activity in assoc(b, :activity))
|> write(dir, "bookmarks", fn a -> {:ok, "\"#{a.object}\""} end)
end
- def likes(dir, user) do
+ defp likes(dir, user) do
user.ap_id
|> Activity.Queries.by_actor()
|> Activity.Queries.by_type("Like")
|> write(dir, "likes", fn a -> {:ok, "\"#{a.object}\""} end)
end
- def statuses(dir, user) do
+ defp statuses(dir, user) do
opts =
%{}
|> Map.put(:type, ["Create", "Announce"])