Slight cleanup.
authorRoger Braun <roger@rogerbraun.net>
Thu, 7 Sep 2017 06:58:10 +0000 (08:58 +0200)
committerRoger Braun <roger@rogerbraun.net>
Thu, 7 Sep 2017 06:58:10 +0000 (08:58 +0200)
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
lib/pleroma/web/mastodon_api/views/user_view.ex [new file with mode: 0644]
lib/pleroma/web/oauth/app.ex [moved from lib/pleroma/app.ex with 95% similarity]
lib/pleroma/web/oauth/authorization.ex
lib/pleroma/web/oauth/oauth_controller.ex
lib/pleroma/web/oauth/token.ex
lib/pleroma/web/router.ex
lib/pleroma/web/twitter_api/controllers/util_controller.ex

index 89e37d6ab1896d7f28eedfeff1cf4215d07b514f..62522439c2674e9bfb3c1c8182b172ad3173a7ab 100644 (file)
@@ -1,6 +1,9 @@
 defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
   use Pleroma.Web, :controller
-  alias Pleroma.{Repo, App}
+  alias Pleroma.{Repo}
+  alias Pleroma.Web.OAuth.App
+  alias Pleroma.Web
+  alias Pleroma.Web.MastodonAPI.AccountView
 
   def create_app(conn, params) do
     with cs <- App.register_changeset(%App{}, params) |> IO.inspect,
@@ -16,17 +19,18 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
   end
 
   def verify_credentials(%{assigns: %{user: user}} = conn, params) do
-    account = %{
-      id: user.id,
-      username: user.nickname,
-      acct: user.nickname,
-      display_name: user.name,
-      locked: false,
-      created_at: user.inserted_at,
-      note: user.bio,
-      url: ""
+    account = AccountView.render("account.json", %{user: user})
+    json(conn, account)
+  end
+
+  def masto_instance(conn, _params) do
+    response = %{
+      uri: Web.base_url,
+      title: Web.base_url,
+      description: "A Pleroma instance, an alternative fediverse server",
+      version: "Pleroma Dev"
     }
 
-    json(conn, account)
+    json(conn, response)
   end
 end
diff --git a/lib/pleroma/web/mastodon_api/views/user_view.ex b/lib/pleroma/web/mastodon_api/views/user_view.ex
new file mode 100644 (file)
index 0000000..88e32d6
--- /dev/null
@@ -0,0 +1,27 @@
+defmodule Pleroma.Web.MastodonAPI.AccountView do
+  use Pleroma.Web, :view
+  alias Pleroma.User
+
+  def render("account.json", %{user: user}) do
+    image = User.avatar_url(user)
+    user_info = User.user_info(user)
+
+    %{
+      id: user.id,
+      username: user.nickname,
+      acct: user.nickname,
+      display_name: user.name,
+      locked: false,
+      created_at: user.inserted_at,
+      followers_count: user_info.follower_count,
+      following_count: user_info.following_count,
+      statuses_count: user_info.note_count,
+      note: user.bio,
+      url: user.ap_id,
+      avatar: image,
+      avatar_static: image,
+      header: "",
+      header_static: ""
+    }
+  end
+end
similarity index 95%
rename from lib/pleroma/app.ex
rename to lib/pleroma/web/oauth/app.ex
index d467595ea6881cf478bb6dde06d2ebeaae6f2d0b..ff52ba82e63d90b40421e801993c3607b6e2314d 100644 (file)
@@ -1,4 +1,4 @@
-defmodule Pleroma.App do
+defmodule Pleroma.Web.OAuth.App do
   use Ecto.Schema
   import Ecto.{Changeset}
 
index 9423c9632b6570b7c6ff67fcf509a5c432fcd36e..c4728945546b9fdc77cb08f827a1b89af446e0ac 100644 (file)
@@ -1,8 +1,8 @@
 defmodule Pleroma.Web.OAuth.Authorization do
   use Ecto.Schema
 
-  alias Pleroma.{App, User, Repo}
-  alias Pleroma.Web.OAuth.Authorization
+  alias Pleroma.{User, Repo}
+  alias Pleroma.Web.OAuth.{Authorization, App}
 
   schema "oauth_authorizations" do
     field :token, :string
index f0e091ac299502895c1f32c05c777b0a503caa23..a6a411573ce37f53dc92517efa117d998f4c05c5 100644 (file)
@@ -1,8 +1,8 @@
 defmodule Pleroma.Web.OAuth.OAuthController do
   use Pleroma.Web, :controller
 
-  alias Pleroma.Web.OAuth.{Authorization, Token}
-  alias Pleroma.{Repo, User, App}
+  alias Pleroma.Web.OAuth.{Authorization, Token, App}
+  alias Pleroma.{Repo, User}
   alias Comeonin.Pbkdf2
 
   def authorize(conn, params) do
@@ -17,7 +17,7 @@ defmodule Pleroma.Web.OAuth.OAuthController do
   def create_authorization(conn, %{"authorization" => %{"name" => name, "password" => password, "client_id" => client_id}} = params) do
     with %User{} = user <- User.get_cached_by_nickname(name),
          true <- Pbkdf2.checkpw(password, user.password_hash),
-         %App{} = app <- Pleroma.Repo.get_by(Pleroma.App, client_id: client_id),
+         %App{} = app <- Repo.get_by(App, client_id: client_id),
          {:ok, auth} <- Authorization.create_authorization(app, user) do
       render conn, "results.html", %{
         auth: auth
index 49e72428c808fa4e99dc3a70fe758b4c6f301848..da723d6d6597711731fff623a542be2c7bb3afe3 100644 (file)
@@ -1,8 +1,8 @@
 defmodule Pleroma.Web.OAuth.Token do
   use Ecto.Schema
 
-  alias Pleroma.{App, User, Repo}
-  alias Pleroma.Web.OAuth.Token
+  alias Pleroma.{User, Repo}
+  alias Pleroma.Web.OAuth.{Token, App}
 
   schema "oauth_tokens" do
     field :token, :string
index 6081016d68de1f4da0e7d05d809125b18f4a6852..a8577c30b32d20750d5c98c6aba43ea4d56e5cd6 100644 (file)
@@ -28,10 +28,6 @@ defmodule Pleroma.Web.Router do
     plug :accepts, ["json", "xml"]
   end
 
-  pipeline :masto_config do
-    plug :accepts, ["json"]
-  end
-
   pipeline :oauth do
     plug :accepts, ["html", "json"]
   end
@@ -42,11 +38,10 @@ defmodule Pleroma.Web.Router do
     post "/token", OAuthController, :token_exchange
   end
 
-  scope "/api/v1", Pleroma.Web do
-    pipe_through :masto_config
-    # TODO: Move this
-    get "/instance", TwitterAPI.UtilController, :masto_instance
-    post "/apps", MastodonAPI.MastodonAPIController, :create_app
+  scope "/api/v1", Pleroma.Web.MastodonAPI do
+    pipe_through :api
+    get "/instance", MastodonAPO.Controller, :masto_instance
+    post "/apps", MastodonAPIController, :create_app
   end
 
   scope "/api/v1", Pleroma.Web.MastodonAPI do
index 285b4d105d8db7cbf09bdf9143e05087cfce88ca..41881e742c98e0fd6bc4174ea784f1b6b9eb246e 100644 (file)
@@ -42,16 +42,4 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
       _ -> json(conn, "Pleroma Dev")
     end
   end
-
-  # TODO: Move this
-  def masto_instance(conn, _params) do
-    response = %{
-      uri: Web.base_url,
-      title: Web.base_url,
-      description: "A Pleroma instance, an alternative fediverse server",
-      version: "dev"
-    }
-
-    json(conn, response)
-  end
 end