Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F85158256
announcement_controller.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
2 KB
Referenced Files
None
Subscribers
None
announcement_controller.ex
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.Web.AdminAPI.AnnouncementController
do
use
Pleroma.Web
,
:controller
alias
Pleroma.Announcement
alias
Pleroma.Web.ControllerHelper
alias
Pleroma.Web.Plugs.OAuthScopesPlug
plug
(
Pleroma.Web.ApiSpec.CastAndValidate
)
plug
(
OAuthScopesPlug
,
%{
scopes
:
[
"admin:write"
]}
when
action
in
[
:create
,
:delete
,
:change
])
plug
(
OAuthScopesPlug
,
%{
scopes
:
[
"admin:read"
]}
when
action
in
[
:index
,
:show
])
action_fallback
(
Pleroma.Web.AdminAPI.FallbackController
)
defdelegate
open_api_operation
(
action
),
to
:
Pleroma.Web.ApiSpec.Admin.AnnouncementOperation
defp
default_limit
,
do
:
20
def
index
(
conn
,
params
)
do
limit
=
Map
.
get
(
params
,
:limit
,
default_limit
())
offset
=
Map
.
get
(
params
,
:offset
,
0
)
announcements
=
Announcement
.
list_paginated
(%{
limit
:
limit
,
offset
:
offset
})
render
(
conn
,
"index.json"
,
announcements
:
announcements
)
end
def
show
(
conn
,
%{
id
:
id
}
=
_params
)
do
announcement
=
Announcement
.
get_by_id
(
id
)
if
is_nil
(
announcement
)
do
{
:error
,
:not_found
}
else
render
(
conn
,
"show.json"
,
announcement
:
announcement
)
end
end
def
create
(%{
body_params
:
params
}
=
conn
,
_params
)
do
with
{
:ok
,
announcement
}
<-
Announcement
.
add
(
change_params
(
params
))
do
render
(
conn
,
"show.json"
,
announcement
:
announcement
)
else
_
->
{
:error
,
400
}
end
end
def
change_params
(
orig_params
)
do
data
=
%{}
|>
Pleroma.Maps
.
put_if_present
(
"content"
,
orig_params
,
&
Map
.
fetch
(
&1
,
:content
))
|>
Pleroma.Maps
.
put_if_present
(
"all_day"
,
orig_params
,
&
Map
.
fetch
(
&1
,
:all_day
))
orig_params
|>
Map
.
merge
(%{
data
:
data
})
end
def
change
(%{
body_params
:
params
}
=
conn
,
%{
id
:
id
}
=
_params
)
do
with
announcement
<-
Announcement
.
get_by_id
(
id
),
{
:exists
,
true
}
<-
{
:exists
,
not
is_nil
(
announcement
)},
{
:ok
,
announcement
}
<-
Announcement
.
update
(
announcement
,
change_params
(
params
))
do
render
(
conn
,
"show.json"
,
announcement
:
announcement
)
else
{
:exists
,
false
}
->
{
:error
,
:not_found
}
_
->
{
:error
,
400
}
end
end
def
delete
(
conn
,
%{
id
:
id
}
=
_params
)
do
case
Announcement
.
delete_by_id
(
id
)
do
:ok
->
conn
|>
ControllerHelper
.
json_response
(
:ok
,
%{})
_
->
{
:error
,
:not_found
}
end
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Sun, Jun 28, 5:53 AM (15 h, 17 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1548382
Default Alt Text
announcement_controller.ex (2 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment