123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- package es.uv.garcosda.controllers;
- import java.util.List;
- import org.springframework.amqp.rabbit.core.RabbitTemplate;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.http.HttpStatus;
- import org.springframework.http.ResponseEntity;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import es.uv.garcosda.domain.Mail;
- import es.uv.garcosda.domain.Mailbox;
- import es.uv.garcosda.domain.User;
- import es.uv.garcosda.objects.MailDTO;
- import es.uv.garcosda.services.UserService;
- @RestController
- @RequestMapping("/api/v1")
- public class MailerController {
- @Autowired
- UserService us;
-
- @Autowired
- RabbitTemplate rabitt;
-
- @Value("${rabbitmq.exchange.name}")
- private String exchange;
- @Value("${rabbitmq.routing.key.user}")
- private String routingKeyUser;
-
- @Value("${rabbitmq.routing.key.recover}")
- private String routingKeyRecover;
-
- @GetMapping("users")
- public ResponseEntity<?> getUsers() {
- List<User> u = this.us.findAll();
- return new ResponseEntity<List<User>>(u, HttpStatus.OK);
- }
-
- @GetMapping("users/{email}")
- public ResponseEntity<?> getUser(@PathVariable("email") String email) {
- User u = this.us.findByEmail(email);
- if(u.getEmail() == null) {
- return new ResponseEntity<String>("No user found with email "+email, HttpStatus.NOT_FOUND);
- }
- else {
- return new ResponseEntity<User>(u, HttpStatus.OK);
- }
- }
-
- @GetMapping("mailbox/{email}")
- public ResponseEntity<?> getMailbox(@PathVariable("email") String email) {
- User u = this.us.findByEmail(email);
- if(u.getEmail() == null) {
- return new ResponseEntity<String>("No mailbox found for email "+email, HttpStatus.NOT_FOUND);
- }
- else {
- Mailbox m = this.us.findMailboxByEmail(u.getEmail());
- if(m.getUser() == null) {
- return new ResponseEntity<String>("No mailbox found for email "+email, HttpStatus.NOT_FOUND);
- }
- return new ResponseEntity<Mailbox>(m, HttpStatus.OK);
- }
- }
-
- @PostMapping("mailbox")
- public ResponseEntity<?> sendMail(@RequestBody MailDTO mail){
- User from = this.us.findByEmail(mail.getFrom());
- User to = this.us.findByEmail(mail.getTo());
- if(from.getEmail() == null) {
- return new ResponseEntity<String>("No origin user found with email "+mail.getFrom(), HttpStatus.NOT_FOUND);
- }
- else if(to.getEmail() == null) {
- return new ResponseEntity<String>("No destination user found with email "+mail.getTo(), HttpStatus.NOT_FOUND);
- }
- else {
- Mail m = new Mail(from, to, mail.getSubject(), mail.getBody());
- us.addMail(m);
- return new ResponseEntity<Mail>(m, HttpStatus.OK);
- }
- }
-
- @PostMapping("users")
- public ResponseEntity<?> addUser(@RequestBody User user){
- if(this.us.addUser(user)) {
- this.rabitt.convertAndSend(this.exchange, this.routingKeyUser, user);
- return new ResponseEntity<String>("User created", HttpStatus.CREATED);
- }
- else{
- return new ResponseEntity<String>("Cannot create user", HttpStatus.CONFLICT);
- }
- }
-
- @PostMapping("users/{email}/passwd")
- public ResponseEntity<?> recoverUserPasswd(@PathVariable("email") String email){
-
- User user = this.us.findByEmail(email);
- if(user.getEmail() == null) {
- return new ResponseEntity<String>("No user found with email "+email, HttpStatus.NOT_FOUND);
- }
-
- this.rabitt.convertAndSend(this.exchange, this.routingKeyRecover, user);
- return new ResponseEntity<String>("New password sent", HttpStatus.CREATED);
- }
-
- }
|