aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRoger Braun <roger@rogerbraun.net>2017-04-26 08:56:18 +0200
committerRoger Braun <roger@rogerbraun.net>2017-04-26 08:56:18 +0200
commitc8447998228e401784a7c94031064d963fad693f (patch)
treef6cedf595ba18c995e8171a990ed785549c13cf8 /lib
parent7424310e148a5763776b2c5eb5129b54ec770afe (diff)
parent5a3be8ad1b76a2d9828d9991a8dd20d12673fd71 (diff)
downloadpleroma-c8447998228e401784a7c94031064d963fad693f.tar.gz
Merge branch 'develop' of ssh.gitgud.io:lambadalambda/pleroma into develop
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/user.ex1
-rw-r--r--lib/pleroma/web/twitter_api/twitter_api.ex16
-rw-r--r--lib/pleroma/web/twitter_api/twitter_api_controller.ex45
3 files changed, 38 insertions, 24 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index 3ce07d510..5e579dc44 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -63,6 +63,7 @@ defmodule Pleroma.User do
|> validate_confirmation(:password)
|> unique_constraint(:email)
|> unique_constraint(:nickname)
+ |> validate_format(:nickname, ~r/^[a-zA-Z\d]+$/)
if changeset.valid? do
hashed = Comeonin.Pbkdf2.hashpwsalt(changeset.changes[:password])
diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex
index 0f84cffbd..f2b2b4418 100644
--- a/lib/pleroma/web/twitter_api/twitter_api.ex
+++ b/lib/pleroma/web/twitter_api/twitter_api.ex
@@ -115,9 +115,9 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
end
end
- def follow(%User{} = follower, followed_id) do
- with %User{} = followed <- Repo.get(User, followed_id),
- { :ok, follower } <- User.follow(follower, followed),
+ def follow(%User{} = follower, params) do
+ with { :ok, %User{} = followed } <- get_user(params),
+ { :ok, follower } <- User.follow(follower, followed),
{ :ok, activity } <- ActivityPub.insert(%{
"type" => "Follow",
"actor" => follower.ap_id,
@@ -131,11 +131,11 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
end
end
- def unfollow(%User{} = follower, followed_id) do
- with %User{} = followed <- Repo.get(User, followed_id),
- { :ok, follower } <- User.unfollow(follower, followed)
+ def unfollow(%User{} = follower, params) do
+ with { :ok, %User{} = unfollowed } <- get_user(params),
+ { :ok, follower } <- User.unfollow(follower, unfollowed)
do
- { :ok, follower, followed }
+ { :ok, follower, unfollowed}
else
err -> err
end
@@ -266,7 +266,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
end
end
- def get_user(user, params) do
+ def get_user(user \\ nil, params) do
case params do
%{ "user_id" => user_id } ->
case target = Repo.get(User, user_id) do
diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex
index 8ea54852d..d9ff7e530 100644
--- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex
+++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex
@@ -12,11 +12,23 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
|> json_reply(200, response)
end
- def status_update(%{assigns: %{user: user}} = conn, status_data) do
- 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}))
+ def status_update(%{assigns: %{user: user}} = conn, %{"status" => status_text} = status_data) do
+ if status_text |> String.trim |> String.length != 0 do
+ 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}))
+ else
+ empty_status_reply(conn)
+ end
+ end
+
+ def status_update(conn, _status_data) do
+ empty_status_reply(conn)
+ end
+
+ defp empty_status_reply(conn) do
+ bad_request_reply(conn, "Client must provide a 'status' parameter with a value.")
end
defp extract_media_ids(status_data) do
@@ -65,8 +77,8 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
|> json_reply(200, json)
end
- def follow(%{assigns: %{user: user}} = conn, %{ "user_id" => followed_id }) do
- case TwitterAPI.follow(user, followed_id) do
+ def follow(%{assigns: %{user: user}} = conn, params) do
+ case TwitterAPI.follow(user, params) do
{ :ok, user, followed, _activity } ->
response = followed |> UserRepresenter.to_json(%{for: user})
conn
@@ -75,11 +87,10 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
end
end
- def unfollow(%{assigns: %{user: user}} = conn, %{ "user_id" => followed_id }) do
- case TwitterAPI.unfollow(user, followed_id) do
- { :ok, user, followed } ->
- response = followed |> UserRepresenter.to_json(%{for: user})
-
+ def unfollow(%{assigns: %{user: user}} = conn, params) do
+ case TwitterAPI.unfollow(user, params) do
+ { :ok, user, unfollowed, } ->
+ response = unfollowed |> UserRepresenter.to_json(%{for: user})
conn
|> json_reply(200, response)
{ :error, msg } -> forbidden_json_reply(conn, msg)
@@ -183,7 +194,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
end
defp bad_request_reply(conn, error_message) do
- json = Poison.encode!(%{"error" => error_message})
+ json = error_json(conn, error_message)
json_reply(conn, 400, json)
end
@@ -194,9 +205,11 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
end
defp forbidden_json_reply(conn, error_message) do
- json = %{"error" => error_message, "request" => conn.request_path}
- |> Poison.encode!
-
+ json = error_json(conn, error_message)
json_reply(conn, 403, json)
end
+
+ defp error_json(conn, error_message) do
+ %{"error" => error_message, "request" => conn.request_path} |> Poison.encode!
+ end
end