Skip to content

Commit

Permalink
Refactor MeController to use Elides JsonApi classes
Browse files Browse the repository at this point in the history
  • Loading branch information
Brutus5000 committed Nov 4, 2019
1 parent 5410bb1 commit 503d483
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 91 deletions.
62 changes: 26 additions & 36 deletions src/main/java/com/faforever/api/user/MeController.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@
import com.faforever.api.data.domain.UserGroup;
import com.faforever.api.player.PlayerService;
import com.faforever.api.security.FafUserDetails;
import com.faforever.api.web.JsonApiSingleResource;
import com.google.common.collect.ImmutableMap;
import com.yahoo.elide.jsonapi.models.Data;
import com.yahoo.elide.jsonapi.models.JsonApiDocument;
import com.yahoo.elide.jsonapi.models.Resource;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import lombok.Builder;
Expand All @@ -16,6 +19,7 @@
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;

Expand All @@ -34,7 +38,7 @@ public MeController(PlayerService playerService) {
@ApiOperation("Returns the authentication object of the current user")
@ApiResponse(code = 200, message = "Success with JsonApi compliant MeResult")
@Secured("ROLE_USER")
public JsonApiSingleResource<MeResult> me(@AuthenticationPrincipal FafUserDetails authentication) {
public JsonApiDocument me(@AuthenticationPrincipal FafUserDetails authentication) {

Player player = playerService.getById(authentication.getId());
Set<String> grantedAuthorities = authentication.getAuthorities().stream()
Expand All @@ -45,41 +49,27 @@ public JsonApiSingleResource<MeResult> me(@AuthenticationPrincipal FafUserDetail
.map(UserGroup::getTechnicalName)
.collect(Collectors.toSet());

return MeResult.builder()
.userId(player.getId())
.userName(player.getLogin())
.email(player.getEmail())
.clan(player.getClan() == null ? null : Clan.builder()
.id(player.getClan().getId())
.membershipId(player.getClanMembership().getId())
.tag(player.getClan().getTag())
.name(player.getClan().getName())
.build()
return new JsonApiDocument(new Data<>(
new Resource("me",
"me",
ImmutableMap.<String, Object>builder()
.put("userId", player.getId())
.put("userName", player.getLogin())
.put("email", player.getEmail())
.put("clan", player.getClan() == null ? Optional.empty() : Clan.builder()
.id(player.getClan().getId())
.membershipId(player.getClanMembership().getId())
.tag(player.getClan().getTag())
.name(player.getClan().getName())
.build())
.put("groups", groups)
.put("permissions", grantedAuthorities)
.build(),
null,
null,
null
)
.groups(groups)
.permissions(grantedAuthorities)
.build()
.asJsonApi();
}

@Value
@Builder
public static class MeResult {
Integer userId;
String userName;
String email;
Clan clan;
Set<String> groups;
Set<String> permissions;

@SuppressWarnings("unchecked")
JsonApiSingleResource<MeResult> asJsonApi() {
return JsonApiSingleResource.ofProxy(
() -> "me",
() -> "me",
() -> this
);
}
));
}

@Value
Expand Down

This file was deleted.

This file was deleted.

19 changes: 0 additions & 19 deletions src/main/java/com/faforever/api/web/JsonApiSingleResource.java

This file was deleted.

0 comments on commit 503d483

Please sign in to comment.