package io.kaif.web.v1;
import static io.kaif.model.clientapp.ClientAppScope.USER;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.kaif.model.account.Account;
import io.kaif.model.clientapp.ClientAppScope;
import io.kaif.model.clientapp.ClientAppUserAccessToken;
import io.kaif.service.AccountService;
import io.kaif.web.v1.dto.V1UserBasicDto;
@Api(tags = "user", description = "User profile")
@RestController
@RequestMapping(value = "/v1/user", produces = MediaType.APPLICATION_JSON_VALUE)
public class V1UserResource {
@Autowired
private AccountService accountService;
@ApiOperation(value = "[user] Get my basic information",
notes = "Get authorized user basic information.")
@RequiredScope(USER)
@RequestMapping(value = "/basic", method = RequestMethod.GET)
public V1UserBasicDto basic(ClientAppUserAccessToken accessToken) {
Account account = accountService.findMe(accessToken).get();
return new V1UserBasicDto(account.getUsername(),
account.getDescription(),
Date.from(account.getCreateTime()));
}
@ApiOperation(value = "[public] Get basic information of the user",
notes = "Get other user's basic information.")
@RequiredScope(ClientAppScope.PUBLIC)
@RequestMapping(value = "/{username}/basic", method = RequestMethod.GET)
public V1UserBasicDto basicByUsername(ClientAppUserAccessToken accessToken,
@PathVariable("username") String username) {
Account account = accountService.loadAccount(username);
return new V1UserBasicDto(account.getUsername(),
account.getDescription(),
Date.from(account.getCreateTime()));
}
}