Send frontend through phoenix.
[akkoma] / lib / pleroma / web / twitter_api / twitter_api.ex
index 58f8bc1d3b7a14a715c9d67fc16535f85d7f350c..735d88832e5bf962c7e46c1cc4d44fca78dd7047 100644 (file)
@@ -1,7 +1,7 @@
 defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
   alias Pleroma.{User, Activity, Repo, Object}
   alias Pleroma.Web.ActivityPub.ActivityPub
-  alias Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter
+  alias Pleroma.Web.TwitterAPI.Representers.{ActivityRepresenter, UserRepresenter}
 
   import Ecto.Query
 
@@ -13,6 +13,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
     context = ActivityPub.generate_context_id
 
     content = HtmlSanitizeEx.strip_tags(data["status"])
+    |> String.replace("\n", "<br>")
 
     mentions = parse_mentions(content)
 
@@ -227,6 +228,28 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
     end
   end
 
+  def register_user(params) do
+    params = %{
+      nickname: params["nickname"],
+      name: params["fullname"],
+      bio: params["bio"],
+      email: params["email"],
+      password: params["password"],
+      password_confirmation: params["confirm"]
+    }
+
+    changeset = User.register_changeset(%User{}, params)
+
+    with {:ok, user} <- Repo.insert(changeset) do
+      {:ok, UserRepresenter.to_map(user)}
+    else
+      {:error, changeset} ->
+        errors = Ecto.Changeset.traverse_errors(changeset, fn {msg, opts} -> msg end)
+        |> Poison.encode!
+        {:error, %{error: errors}}
+    end
+  end
+
   defp activities_to_statuses(activities, opts) do
     Enum.map(activities, fn(activity) ->
       activity_to_status(activity, opts)