X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fpleroma%2Fweb%2Ftwitter_api%2Ftwitter_api_controller.ex;h=f2c893e96d3c5c08ef886471de614eb0a0de32c9;hb=8f43992121a726df2faaf04bf918f32f708d10f8;hp=1f0a547d0f9e11a3dbd45a03e9895bf8a26e39ad;hpb=ad303783afc0be046d0bcb4b70b3bce9aabac27f;p=akkoma diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex index 1f0a547d0..f2c893e96 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -4,18 +4,85 @@ defmodule Pleroma.Web.TwitterAPI.Controller do alias Pleroma.Web.TwitterAPI.Representers.{UserRepresenter, ActivityRepresenter} def verify_credentials(%{assigns: %{user: user}} = conn, _params) do - response = user |> UserRepresenter.to_json + response = user |> UserRepresenter.to_json(%{for: user}) conn |> json_reply(200, response) end def status_update(%{assigns: %{user: user}} = conn, status_data) do - {:ok, activity} = TwitterAPI.create_status(user, status_data) + media_ids = extract_media_ids(status_data) + {:ok, activity} = TwitterAPI.create_status(user, Map.put(status_data, "media_ids", media_ids )) conn |> json_reply(200, ActivityRepresenter.to_json(activity, %{user: user})) end + defp extract_media_ids(status_data) do + with media_ids when not is_nil(media_ids) <- status_data["media_ids"], + split_ids <- String.split(media_ids, ","), + clean_ids <- Enum.reject(split_ids, fn (id) -> String.length(id) == 0 end) + do + clean_ids + else _e -> [] + end + end + + def public_timeline(%{assigns: %{user: user}} = conn, params) do + statuses = TwitterAPI.fetch_public_statuses(user, params) + {:ok, json} = Poison.encode(statuses) + + conn + |> json_reply(200, json) + end + + def friends_timeline(%{assigns: %{user: user}} = conn, params) do + statuses = TwitterAPI.fetch_friend_statuses(user, params) + {:ok, json} = Poison.encode(statuses) + + conn + |> json_reply(200, json) + end + + def follow(%{assigns: %{user: user}} = conn, %{ "user_id" => followed_id }) do + { :ok, _user, follower, _activity } = TwitterAPI.follow(user, followed_id) + + response = follower |> UserRepresenter.to_json(%{for: user}) + + conn + |> json_reply(200, response) + end + + def unfollow(%{assigns: %{user: user}} = conn, %{ "user_id" => followed_id }) do + { :ok, user, follower } = TwitterAPI.unfollow(user, followed_id) + + response = follower |> UserRepresenter.to_json(%{for: user}) + + conn + |> json_reply(200, response) + end + + def fetch_status(%{assigns: %{user: user}} = conn, %{ "id" => id }) do + response = TwitterAPI.fetch_status(user, id) |> Poison.encode! + + conn + |> json_reply(200, response) + end + + def fetch_conversation(%{assigns: %{user: user}} = conn, %{ "id" => id }) do + id = String.to_integer(id) + response = TwitterAPI.fetch_conversation(user, id) |> Poison.encode! + + conn + |> json_reply(200, response) + end + + def upload(conn, %{"media" => media}) do + response = TwitterAPI.upload(media) + conn + |> put_resp_content_type("application/atom+xml") + |> send_resp(200, response) + end + defp json_reply(conn, status, json) do conn |> put_resp_content_type("application/json")