defmodule NullaWeb.UserController do use NullaWeb, :controller def show(conn, %{"username" => username}) do accept = get_req_header(conn, "accept") |> List.first() || "" if String.contains?(accept, "application/activity+json") or String.contains?(accept, "application/ld+json") do conn |> put_resp_content_type("application/activity+json") |> json(%{ id: "https://localhost/@#{username}", type: "Person", following: "https://localhost/@#{username}/following", followers: "https://localhost/@#{username}/followers", inbox: "https://localhost/@#{username}/inbox", outbox: "https://localhost/@#{username}/outbox", featured: "https://localhost/@#{username}/collections/featured", preferredUsername: "miraikumiko", name: "Mirai Kumiko", summary: "Lol Kek Cheburek", url: "https://localhost/@#{username}", manuallyApprovesFollowers: false, discoverable: true, indexable: true, published: "2025-05-05T00:00:00Z", memorial: false, publicKey: %{ id: "https://localhost/@#{username}#main-key", owner: "https://localhost/@#{username}", publicKeyPem: "public key" }, tag: [ %{ type: "Hashtag", href: "https://localhost/tags/linux", name: "#linux" } ], attachment: [ %{ type: "PropertyValue", name: "Website", value: "https://miraikumiko.com" } ], endpoints: %{ sharedInbox: "https://localhost/inbox" }, icon: %{ type: "Image", mediaType: "image/jpeg", url: "url" }, image: %{ type: "Image", mediaType: "image/jpeg", url: "url" } }) else render(conn, :show, username: username, layout: false) end end end