Tinder-Clone/src/ru/charm/back/controller/rest/ProfileController.java
2026-02-24 06:03:42 +03:00

52 lines
2.0 KiB
Java

package ru.charm.back.controller.rest;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import jakarta.servlet.annotation.MultipartConfig;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import ru.charm.back.dto.ProfileGetDto;
import ru.charm.back.service.ProfileService;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Optional;
import static jakarta.servlet.http.HttpServletResponse.SC_NOT_FOUND;
import static ru.charm.back.utils.UrlUtils.REST_URL;
@WebServlet(REST_URL + "/profile")
@MultipartConfig
public class ProfileController extends HttpServlet {
private final ProfileService service = ProfileService.getInstance();
private final ObjectMapper objectMapper = JsonMapper.builder()
.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true)
.addModule(new JavaTimeModule())
.build();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
try (PrintWriter writer = resp.getWriter()) {
resp.setContentType("application/json");
resp.setCharacterEncoding("UTF-8");
String sId = req.getParameter("id");
if (sId != null) {
Optional<ProfileGetDto> optProfileDto = service.findById(Long.parseLong(sId));
if (optProfileDto.isPresent()) {
ProfileGetDto profileGetDto = optProfileDto.get();
objectMapper.writeValue(writer, profileGetDto);
} else {
resp.sendError(SC_NOT_FOUND);
}
} else {
objectMapper.writeValue(writer, service.findAll());
}
}
}
}