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
daa8ec3d
Commit
daa8ec3d
authored
Nov 17, 2018
by
kaniini
Browse files
activitypub: factor out AP object fetching to it's own function and add ID-based containment
parent
a9609838
Changes
2
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/activity_pub/activity_pub.ex
View file @
daa8ec3d
...
...
@@ -732,16 +732,7 @@ def fetch_object_from_id(id) do
else
Logger
.
info
(
"Fetching
#{
id
}
via AP"
)
with
true
<-
String
.
starts_with?
(
id
,
"http"
),
{
:ok
,
%{
body:
body
,
status_code:
code
}}
when
code
in
200
..
299
<-
@httpoison
.
get
(
id
,
[
Accept:
"application/activity+json"
],
follow_redirect:
true
,
timeout:
10000
,
recv_timeout:
20000
),
{
:ok
,
data
}
<-
Jason
.
decode
(
body
),
with
{
:ok
,
data
}
<-
fetch_and_contain_remote_object_from_id
(
id
),
nil
<-
Object
.
normalize
(
data
),
params
<-
%{
"type"
=>
"Create"
,
...
...
@@ -771,6 +762,27 @@ def fetch_object_from_id(id) do
end
end
def
fetch_and_contain_remote_object_from_id
(
id
)
do
Logger
.
info
(
"Fetching
#{
id
}
via AP"
)
with
true
<-
String
.
starts_with?
(
id
,
"http"
),
{
:ok
,
%{
body:
body
,
status_code:
code
}}
when
code
in
200
..
299
<-
@httpoison
.
get
(
id
,
[
Accept:
"application/activity+json"
],
follow_redirect:
true
,
timeout:
10000
,
recv_timeout:
20000
),
{
:ok
,
data
}
<-
Jason
.
decode
(
body
),
:ok
<-
Transmogrifier
.
contain_origin_from_id
(
id
,
data
)
do
{
:ok
,
data
}
else
e
->
{
:error
,
e
}
end
end
def
is_public?
(
activity
)
do
"https://www.w3.org/ns/activitystreams#Public"
in
(
activity
.
data
[
"to"
]
++
(
activity
.
data
[
"cc"
]
||
[]))
...
...
lib/pleroma/web/activity_pub/transmogrifier.ex
View file @
daa8ec3d
...
...
@@ -50,6 +50,19 @@ def contain_origin(id, %{"actor" => actor} = params) do
end
end
def
contain_origin_from_id
(
id
,
%{
"id"
=>
nil
}),
do
:
:error
def
contain_origin_from_id
(
id
,
%{
"id"
=>
other_id
}
=
params
)
do
id_uri
=
URI
.
parse
(
id
)
other_uri
=
URI
.
parse
(
other_id
)
if
id_uri
.
host
==
other_uri
.
host
do
:ok
else
:error
end
end
@doc
"""
Modifies an incoming AP object (mastodon format) to our internal format.
"""
...
...
Write
Preview
Supports
Markdown
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