Types.URI: New
authorHaelwenn (lanodan) Monnier <contact@hacktivis.me>
Thu, 9 Apr 2020 11:01:35 +0000 (13:01 +0200)
committerHaelwenn (lanodan) Monnier <contact@hacktivis.me>
Fri, 10 Apr 2020 04:20:02 +0000 (06:20 +0200)
lib/pleroma/user.ex
lib/pleroma/web/activity_pub/object_validators/note_validator.ex
lib/pleroma/web/activity_pub/object_validators/types/object_id.ex
lib/pleroma/web/activity_pub/object_validators/types/uri.ex [new file with mode: 0644]

index 0adea42ec41e4d9b83fa0799d3450c793f761a09..027386a225cd1e27d405472b375cb66de829987c 100644 (file)
@@ -28,6 +28,7 @@ defmodule Pleroma.User do
   alias Pleroma.UserRelationship
   alias Pleroma.Web
   alias Pleroma.Web.ActivityPub.ActivityPub
+  alias Pleroma.Web.ActivityPub.ObjectValidators.Types
   alias Pleroma.Web.ActivityPub.Utils
   alias Pleroma.Web.CommonAPI
   alias Pleroma.Web.CommonAPI.Utils, as: CommonUtils
@@ -113,7 +114,7 @@ defmodule Pleroma.User do
     field(:show_role, :boolean, default: true)
     field(:settings, :map, default: nil)
     field(:magic_key, :string, default: nil)
-    field(:uri, :string, default: nil)
+    field(:uri, Types.Uri, default: nil)
     field(:hide_followers_count, :boolean, default: false)
     field(:hide_follows_count, :boolean, default: false)
     field(:hide_followers, :boolean, default: false)
index c95b622e48e77f6b1045171d51e63cee4c10d64a..462a5620a239aece445d324f3ac07a99e1d11fb0 100644 (file)
@@ -35,6 +35,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator do
     field(:like_count, :integer, default: 0)
     field(:announcement_count, :integer, default: 0)
     field(:inRepyTo, :string)
+    field(:uri, Types.Uri)
 
     field(:likes, {:array, :string}, default: [])
     field(:announcements, {:array, :string}, default: [])
index f6e749b337249db0c71e0d1b5b0ebc7dcbababd5..f71f763704be08664ec3b3b0c3461d7c6c008e9c 100644 (file)
@@ -15,15 +15,9 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.Types.ObjectID do
 
   def cast(%{"id" => object}), do: cast(object)
 
-  def cast(_) do
-    :error
-  end
+  def cast(_), do: :error
 
-  def dump(data) do
-    {:ok, data}
-  end
+  def dump(data), do: {:ok, data}
 
-  def load(data) do
-    {:ok, data}
-  end
+  def load(data), do: {:ok, data}
 end
diff --git a/lib/pleroma/web/activity_pub/object_validators/types/uri.ex b/lib/pleroma/web/activity_pub/object_validators/types/uri.ex
new file mode 100644 (file)
index 0000000..24845bc
--- /dev/null
@@ -0,0 +1,20 @@
+defmodule Pleroma.Web.ActivityPub.ObjectValidators.Types.Uri do
+  use Ecto.Type
+
+  def type, do: :string
+
+  def cast(uri) when is_binary(uri) do
+    case URI.parse(uri) do
+      %URI{host: nil} -> :error
+      %URI{host: ""} -> :error
+      %URI{scheme: scheme} when scheme in ["https", "http"] -> {:ok, uri}
+      _ -> :error
+    end
+  end
+
+  def cast(_), do: :error
+
+  def dump(data), do: {:ok, data}
+
+  def load(data), do: {:ok, data}
+end