forked from AkkomaGang/akkoma
Fix uploads and favorites in twidere / twittnuker.
This commit is contained in:
parent
fa0c279139
commit
90b38fd51b
3 changed files with 31 additions and 13 deletions
|
@ -39,6 +39,8 @@ def user_fetcher(username) do
|
||||||
post "/friendships/create", TwitterAPI.Controller, :follow
|
post "/friendships/create", TwitterAPI.Controller, :follow
|
||||||
post "/friendships/destroy", TwitterAPI.Controller, :unfollow
|
post "/friendships/destroy", TwitterAPI.Controller, :unfollow
|
||||||
post "/statusnet/media/upload", TwitterAPI.Controller, :upload
|
post "/statusnet/media/upload", TwitterAPI.Controller, :upload
|
||||||
|
post "/media/upload", TwitterAPI.Controller, :upload_json
|
||||||
post "/favorites/create/:id", TwitterAPI.Controller, :favorite
|
post "/favorites/create/:id", TwitterAPI.Controller, :favorite
|
||||||
|
post "/favorites/create", TwitterAPI.Controller, :favorite
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -137,25 +137,35 @@ def favorite(%User{} = user, %Activity{data: %{"object" => object}} = activity)
|
||||||
{:ok, status}
|
{:ok, status}
|
||||||
end
|
end
|
||||||
|
|
||||||
def upload(%Plug.Upload{} = file) do
|
def upload(%Plug.Upload{} = file, format \\ "xml") do
|
||||||
{:ok, object} = ActivityPub.upload(file)
|
{:ok, object} = ActivityPub.upload(file)
|
||||||
|
|
||||||
url = List.first(object.data["url"])
|
url = List.first(object.data["url"])
|
||||||
href = url["href"]
|
href = url["href"]
|
||||||
type = url["mediaType"]
|
type = url["mediaType"]
|
||||||
|
|
||||||
# Fake this as good as possible...
|
case format do
|
||||||
"""
|
"xml" ->
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
# Fake this as good as possible...
|
||||||
<rsp stat="ok" xmlns:atom="http://www.w3.org/2005/Atom">
|
"""
|
||||||
<mediaid>#{object.id}</mediaid>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<media_id>#{object.id}</media_id>
|
<rsp stat="ok" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||||
<media_id_string>#{object.id}</media_id_string>
|
<mediaid>#{object.id}</mediaid>
|
||||||
<media_url>#{href}</media_url>
|
<media_id>#{object.id}</media_id>
|
||||||
<mediaurl>#{href}</mediaurl>
|
<media_id_string>#{object.id}</media_id_string>
|
||||||
<atom:link rel="enclosure" href="#{href}" type="#{type}"></atom:link>
|
<media_url>#{href}</media_url>
|
||||||
</rsp>
|
<mediaurl>#{href}</mediaurl>
|
||||||
"""
|
<atom:link rel="enclosure" href="#{href}" type="#{type}"></atom:link>
|
||||||
|
</rsp>
|
||||||
|
"""
|
||||||
|
"json" ->
|
||||||
|
%{
|
||||||
|
media_id: object.id,
|
||||||
|
media_id_string: "#{object.id}}",
|
||||||
|
media_url: href,
|
||||||
|
size: 0
|
||||||
|
} |> Poison.encode!
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def parse_mentions(text) do
|
def parse_mentions(text) do
|
||||||
|
|
|
@ -84,6 +84,12 @@ def upload(conn, %{"media" => media}) do
|
||||||
|> send_resp(200, response)
|
|> send_resp(200, response)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def upload_json(conn, %{"media" => media}) do
|
||||||
|
response = TwitterAPI.upload(media, "json")
|
||||||
|
conn
|
||||||
|
|> json_reply(200, response)
|
||||||
|
end
|
||||||
|
|
||||||
def config(conn, _params) do
|
def config(conn, _params) do
|
||||||
response = %{
|
response = %{
|
||||||
site: %{
|
site: %{
|
||||||
|
|
Loading…
Reference in a new issue