@Controller("/users")
public class UsersController {
private final String domain;
private final UsersRepository usersRepository;
public UsersController(@Value("${fediphoto.domain}") String domain, UsersRepository usersRepository) {
this.domain = domain;
this.usersRepository = usersRepository;
}
@Get(value = "/{username}", produces = "application/activity+json")
public HttpResponse<?> getActor(String username) {
var user = usersRepository.getUser(username);
if (user == null) {
return HttpResponse.notFound();
}
var publicKeyRecord = new PublicKeyRecord(
"https://" + domain + "/users/" + username + "#main-key",
"https://" + domain + "/users/" + username,
user.pubKey()
);
var actor = new Actor(
"https://www.w3.org/ns/activitystreams",
"Person",
"https://" + domain + "/users/" + username,
username,
"https://" + domain + "/users/" + username + "/inbox",
"https://" + domain + "/users/" + username + "/outbox",
publicKeyRecord);
return HttpResponse.ok(actor);
}
}