Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Pleroma
pleroma
Commits
18edc299
Commit
18edc299
authored
Apr 30, 2017
by
lain
Browse files
Handle duplicates.
parent
62607f37
Changes
2
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/ostatus/ostatus.ex
View file @
18edc299
...
...
@@ -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 @@ def handle_incoming(xml_string) 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 @@ def handle_note(entry, doc \\ nil) 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
...
...
test/web/ostatus/ostatus_test.exs
View file @
18edc299
...
...
@@ -2,6 +2,12 @@ defmodule Pleroma.Web.OStatusTest do
use
Pleroma
.
DataCase
alias
Pleroma
.
Web
.
OStatus
test
"don't insert create notes twice"
do
incoming
=
File
.
read!
(
"test/fixtures/incoming_note_activity.xml"
)
{
:ok
,
[
_activity
]}
=
OStatus
.
handle_incoming
(
incoming
)
assert
{
:ok
,
[{
:error
,
"duplicate activity"
}]}
==
OStatus
.
handle_incoming
(
incoming
)
end
test
"handle incoming note - GS, Salmon"
do
incoming
=
File
.
read!
(
"test/fixtures/incoming_note_activity.xml"
)
{
:ok
,
[
activity
]}
=
OStatus
.
handle_incoming
(
incoming
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment