aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRoger Braun <roger@rogerbraun.net>2017-04-30 12:36:47 +0200
committerRoger Braun <roger@rogerbraun.net>2017-04-30 12:36:47 +0200
commit18edc299b262974d3acb9d6f9c3758629b2c0968 (patch)
tree287ef0f921ced9ff959a12f7a737c882ccb407ed /lib
parent62607f37dcf3ab149baa09fe144959a25322be69 (diff)
downloadpleroma-18edc299b262974d3acb9d6f9c3758629b2c0968.tar.gz
Handle duplicates.
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/ostatus/ostatus.ex15
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/pleroma/web/ostatus/ostatus.ex b/lib/pleroma/web/ostatus/ostatus.ex
index 6f169af73..16b6ac421 100644
--- a/lib/pleroma/web/ostatus/ostatus.ex
+++ b/lib/pleroma/web/ostatus/ostatus.ex
@@ -3,7 +3,7 @@ defmodule Pleroma.Web.OStatus do
import Pleroma.Web.XML
require Logger
- alias Pleroma.{Repo, User, Web}
+ alias Pleroma.{Repo, User, Web, Object}
alias Pleroma.Web.ActivityPub.ActivityPub
alias Pleroma.Web.{WebFinger, Websub}
@@ -28,11 +28,9 @@ defmodule Pleroma.Web.OStatus do
case object_type do
'http://activitystrea.ms/schema/1.0/note' ->
- {:ok, activity} = handle_note(entry, doc)
- activity
+ with {:ok, activity} <- handle_note(entry, doc), do: activity
'http://activitystrea.ms/schema/1.0/comment' ->
- {:ok, activity} = handle_note(entry, doc)
- activity
+ with {:ok, activity} <- handle_note(entry, doc), do: activity
_ ->
Logger.error("Couldn't parse incoming document")
nil
@@ -86,7 +84,12 @@ defmodule Pleroma.Web.OStatus do
object
end
- ActivityPub.create(to, actor, context, object, %{}, date)
+ # TODO: Bail out sooner and use transaction.
+ if Object.get_by_ap_id(id) do
+ {:error, "duplicate activity"}
+ else
+ ActivityPub.create(to, actor, context, object, %{}, date)
+ end
end
def find_or_make_user(uri) do