Fix uploads and favorites in twidere / twittnuker.

This commit is contained in:
Roger Braun 2017-04-14 16:13:34 +02:00
parent fa0c279139
commit 90b38fd51b
3 changed files with 31 additions and 13 deletions

View file

@ -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

View file

@ -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

View file

@ -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: %{