defmodule NullaWeb.FollowController do use NullaWeb, :controller alias Nulla.ActivityPub alias Nulla.Utils alias Nulla.Models.User alias Nulla.Models.InstanceSettings def following(conn, %{"username" => username, "page" => page_param}) do instance_settings = InstanceSettings.get_instance_settings!() domain = instance_settings.domain offset = instance_settings.offset user = User.get_user_by_username!(username) total = Utils.count_following_by_username!(user.username) page = case Integer.parse(page_param) do {int, _} when int > 0 -> int _ -> 1 end following_list = Utils.get_following_users_by_username!(user.username, page) conn |> put_resp_content_type("application/activity+json") |> json(ActivityPub.following(domain, user, total, following_list, page, offset)) end def following(conn, %{"username" => username}) do instance_settings = InstanceSettings.get_instance_settings!() domain = instance_settings.domain user = User.get_user_by_username!(username) total = Utils.count_following_by_username!(user.username) conn |> put_resp_content_type("application/activity+json") |> json(ActivityPub.following(domain, user, total)) end def followers(conn, %{"username" => username, "page" => page_param}) do instance_settings = InstanceSettings.get_instance_settings!() domain = instance_settings.domain offset = instance_settings.offset user = User.get_user_by_username!(username) total = Utils.count_followers_by_username!(user.username) page = case Integer.parse(page_param) do {int, _} when int > 0 -> int _ -> 1 end followers_list = Utils.get_followers_by_username!(user.username, page) conn |> put_resp_content_type("application/activity+json") |> json(ActivityPub.followers(domain, user, total, followers_list, page, offset)) end def followers(conn, %{"username" => username}) do instance_settings = InstanceSettings.get_instance_settings!() domain = instance_settings.domain user = User.get_user_by_username!(username) total = Utils.count_followers_by_username!(user.username) conn |> put_resp_content_type("application/activity+json") |> json(ActivityPub.followers(domain, user, total)) end end