74 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
| # Pleroma: A lightweight social networking server
 | |
| # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
 | |
| # SPDX-License-Identifier: AGPL-3.0-only
 | |
| 
 | |
| defmodule Pleroma.Web.EmbedView do
 | |
|   use Pleroma.Web, :view
 | |
| 
 | |
|   alias Calendar.Strftime
 | |
|   alias Pleroma.Activity
 | |
|   alias Pleroma.Emoji.Formatter
 | |
|   alias Pleroma.Object
 | |
|   alias Pleroma.User
 | |
|   alias Pleroma.Web.Gettext
 | |
|   alias Pleroma.Web.MediaProxy
 | |
|   alias Pleroma.Web.Metadata.Utils
 | |
|   alias Pleroma.Web.Router.Helpers
 | |
| 
 | |
|   use Phoenix.HTML
 | |
| 
 | |
|   @media_types ["image", "audio", "video"]
 | |
| 
 | |
|   defp fetch_media_type(%{"mediaType" => mediaType}) do
 | |
|     Utils.fetch_media_type(@media_types, mediaType)
 | |
|   end
 | |
| 
 | |
|   defp open_content? do
 | |
|     Pleroma.Config.get(
 | |
|       [:frontend_configurations, :collapse_message_with_subjects],
 | |
|       true
 | |
|     )
 | |
|   end
 | |
| 
 | |
|   defp full_nickname(user) do
 | |
|     %{host: host} = URI.parse(user.ap_id)
 | |
|     "@" <> user.nickname <> "@" <> host
 | |
|   end
 | |
| 
 | |
|   defp status_title(%Activity{object: %Object{data: %{"name" => name}}}) when is_binary(name),
 | |
|     do: name
 | |
| 
 | |
|   defp status_title(%Activity{object: %Object{data: %{"summary" => summary}}})
 | |
|        when is_binary(summary),
 | |
|        do: summary
 | |
| 
 | |
|   defp status_title(_), do: nil
 | |
| 
 | |
|   defp activity_content(%Activity{object: %Object{data: %{"content" => content}}}) do
 | |
|     content |> Pleroma.HTML.filter_tags() |> raw()
 | |
|   end
 | |
| 
 | |
|   defp activity_content(_), do: nil
 | |
| 
 | |
|   defp activity_url(%User{local: true}, activity) do
 | |
|     Helpers.o_status_url(Pleroma.Web.Endpoint, :notice, activity)
 | |
|   end
 | |
| 
 | |
|   defp activity_url(%User{local: false}, %Activity{object: %Object{data: data}}) do
 | |
|     data["url"] || data["external_url"] || data["id"]
 | |
|   end
 | |
| 
 | |
|   defp attachments(%Activity{object: %Object{data: %{"attachment" => attachments}}}) do
 | |
|     attachments
 | |
|   end
 | |
| 
 | |
|   defp sensitive?(%Activity{object: %Object{data: %{"sensitive" => sensitive}}}) do
 | |
|     sensitive
 | |
|   end
 | |
| 
 | |
|   defp published(%Activity{object: %Object{data: %{"published" => published}}}) do
 | |
|     published
 | |
|     |> NaiveDateTime.from_iso8601!()
 | |
|     |> Strftime.strftime!("%B %d, %Y, %l:%M %p")
 | |
|   end
 | |
| end
 | 
