Skip to content

Commit

Permalink
Merge pull request #29 from GeorgiyDemo/dev
Browse files Browse the repository at this point in the history
Версия 1.1
  • Loading branch information
GeorgiyDemo authored Apr 22, 2021
2 parents 0cdbd13 + be13b4d commit 482ec93
Show file tree
Hide file tree
Showing 53 changed files with 947 additions and 191 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,17 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
* The type Demkaserver application.
*/
@SpringBootApplication
public class DemkaserverApplication {

/**
* The entry point of application.
*
* @param args the input arguments
*/
public static void main(String[] args) {
SpringApplication.run(DemkaserverApplication.class, args);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,20 @@

import java.util.List;

/**
* The type My error configuration.
*/
@Configuration
public class MyErrorConfiguration {

/**
* Нужен, чтоб кастомный ErrorController использовать
* А он в свою очередь нужен, чтоб доп атрибут result при ошибке выводить
*
* @param errorAttributes the error attributes
* @param serverProperties the server properties
* @param errorViewResolversProvider the error view resolvers provider
* @return the my error controller
*/
@Bean
public MyErrorController ErrorController(ErrorAttributes errorAttributes, ServerProperties serverProperties, ObjectProvider<List<ErrorViewResolver>> errorViewResolversProvider) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,19 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
* The type My initializing bean.
*/
@Component
public class MyInitializingBean implements InitializingBean {

private final LongPollService longPollService;

/**
* Instantiates a new My initializing bean.
*
* @param longPollService the long poll service
*/
@Autowired
public MyInitializingBean(LongPollService longPollService) {
this.longPollService = longPollService;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,17 @@
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.CommonsRequestLoggingFilter;

/**
* The type My request logging config.
*/
@Configuration
public class MyRequestLoggingConfig {

/**
* Нужно для того, чтоб было доп логирование всех запросов,
* которые приходят на сервер
*
* @return the commons request logging filter
*/
@Bean
public CommonsRequestLoggingFilter logFilter() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@
import java.time.Instant;
import java.util.*;

/**
* The type Long poll controller.
*/
@RestController
@RequestMapping("/longpoll")
public class LongPollController {
Expand All @@ -29,6 +32,14 @@ public class LongPollController {
private final RoomService roomService;


/**
* Instantiates a new Long poll controller.
*
* @param messageService the message service
* @param userService the user service
* @param longPollService the long poll service
* @param roomService the room service
*/
@Autowired
public LongPollController(MessageService messageService, UserService userService, LongPollService longPollService, RoomService roomService) {
this.messageService = messageService;
Expand All @@ -41,7 +52,7 @@ public LongPollController(MessageService messageService, UserService userService
* Получение данных лонгпула для указанного ключа
*
* @param key - ключ пользователя
* @return
* @return long poll server
*/
@GetMapping(value = "/getServer")
public ResponseEntity<Map<String, Object>> getLongPollServer(@RequestParam String key) {
Expand Down Expand Up @@ -82,8 +93,8 @@ public ResponseEntity<Map<String, Object>> getLongPollServer(@RequestParam Strin
* @param url - URL лонгпула
* @param key - ключ ЛОНГПУЛА (не пользователя)
* @param ts - значение ts, пполученное через /getServer
* @return
* @throws InterruptedException
* @return response entity
* @throws InterruptedException the interrupted exception
*/
@GetMapping(value = "/updates/{url}")
public ResponseEntity<Map<String, Object>> longPoll(@PathVariable String url, @RequestParam String key, @RequestParam Long ts) throws InterruptedException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
import java.util.Map;
import java.util.Optional;

/**
* The type Message controller.
*/
@RestController
@RequestMapping("/messages")
public class MessageController {
Expand All @@ -24,6 +27,13 @@ public class MessageController {
private final UserService userService;
private final MessageService messageService;

/**
* Instantiates a new Message controller.
*
* @param roomService the room service
* @param userService the user service
* @param messageService the message service
*/
@Autowired
public MessageController(RoomService roomService, UserService userService, MessageService messageService) {
this.roomService = roomService;
Expand All @@ -34,11 +44,8 @@ public MessageController(RoomService roomService, UserService userService, Messa
/**
* Отправка сообщения в опеределенную комнату roomId
*
* @param data - данные в JSON. Поля:
* key - ключ пользователя
* text - текст сообщения
* roomId - id комнаты, куда отправляется сообщение
* @return
* @param data - данные в JSON. Поля: key - ключ пользователя text - текст сообщения roomId - id комнаты, куда отправляется сообщение
* @return response entity
*/
@PostMapping(value = "/send")
public ResponseEntity<Map<String, Object>> sendMessage(@RequestBody Map<String, String> data) {
Expand Down Expand Up @@ -81,7 +88,7 @@ public ResponseEntity<Map<String, Object>> sendMessage(@RequestBody Map<String,
*
* @param key - ключ пользователя
* @param roomId - id комнаты
* @return
* @return messages by room
*/
@GetMapping(value = "/get")
public ResponseEntity<Map<String, Object>> getMessagesByRoom(@RequestParam String key, @RequestParam String roomId) {
Expand Down Expand Up @@ -109,4 +116,53 @@ public ResponseEntity<Map<String, Object>> getMessagesByRoom(@RequestParam Strin
List<MessageDBEntity> messagesList = messageService.findByRoom(roomId);
return new ResponseEntity<>(GenResponseUtil.ResponseOK(messagesList), HttpStatus.OK);
}

/**
* Удаление сообщения.
* Сообщение может удалять либо сам пользователь, либо создатель комнаты
*
* @param data - данные в JSON. Поля: messageId - идентификатор сообщения для удаления key - ключ API
* @return response entity
*/
@DeleteMapping(value = "/remove")
public ResponseEntity<Map<String, Object>> removeMessage(@RequestBody Map<String, String> data) {

String key = data.get("key");
String messageId = data.get("messageId");

if ((key == null) || (messageId == null)) {
return new ResponseEntity<>(GenResponseUtil.ResponseError("Не все значения были переданы"), HttpStatus.BAD_REQUEST);
}

//Проверка на авторизацию API
Optional<UserDBEntity> currentUserOptional = userService.findByKey(key);
if (currentUserOptional.isEmpty())
return new ResponseEntity<>(GenResponseUtil.ResponseError("Не удалось авторизоваться по указанному ключу"), HttpStatus.FORBIDDEN);
UserDBEntity currentUser = currentUserOptional.get();

//Проверка на существование сообщения
Optional<MessageDBEntity> currentMessageOptional = messageService.find(messageId);
if (currentMessageOptional.isEmpty())
return new ResponseEntity<>(GenResponseUtil.ResponseError("Сообщения с id " + messageId + " не существует"), HttpStatus.BAD_REQUEST);

MessageDBEntity currentMessage = currentMessageOptional.get();
//Проверка на возможность удаления сообщения
Optional<RoomDBEntity> currentMessageRoomOptional = roomService.find(currentMessage.getRoomId());

//Удаление от имени создателя беседы
if (currentMessageRoomOptional.isPresent() && (currentUser.getId().equals(currentMessageRoomOptional.get().getCreatorId()))) {
messageService.delete(currentMessage);
System.out.println("Произошло удаление от имени создателя беседы");
return new ResponseEntity<>(GenResponseUtil.ResponseOK("Успешное удаление сообщения " + messageId), HttpStatus.OK);
//Удаление от имени владельца сообщения
} else if (currentMessage.getUserId().equals(currentUser.getId())) {
messageService.delete(currentMessage);
System.out.println("Произошло удаление от имени владельца сообщения");
return new ResponseEntity<>(GenResponseUtil.ResponseOK("Успешное удаление сообщения " + messageId), HttpStatus.OK);
//Нет прав на удаление
} else {
System.out.println("Нет прав на удаление сообщения");
return new ResponseEntity<>(GenResponseUtil.ResponseError("У вас нет права на удаление сообщения " + messageId), HttpStatus.FORBIDDEN);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,18 @@
import java.util.List;
import java.util.Map;

/**
* The type My error controller.
*/
public class MyErrorController extends BasicErrorController {

/**
* Instantiates a new My error controller.
*
* @param errorAttributes the error attributes
* @param errorProperties the error properties
* @param errorViewResolvers the error view resolvers
*/
public MyErrorController(ErrorAttributes errorAttributes, ErrorProperties errorProperties, List<ErrorViewResolver> errorViewResolvers) {
super(errorAttributes, errorProperties, errorViewResolvers);
}
Expand Down
Loading

0 comments on commit 482ec93

Please sign in to comment.