/** Changes the expire date and alert for the new specified */ @RequestMapping(value = "/changeExpire", method = RequestMethod.GET) public ResponseEntity<?> changeExpireDate( HttpServletRequest request, @RequestParam(value = "url", required = false) String hash, @RequestParam(value = "expire", required = false) String expire, @RequestParam(value = "days", required = false) String days) { hash = hash.substring(1, hash.length() - 1); /* Changes expire date */ ShortURL su = shortURLRepository.findByHash(hash); logger.info("su: " + su); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date newExpire = null; try { newExpire = sdf.parse(expire); } catch (ParseException e) { e.printStackTrace(); logger.info("Error with introduced alert date"); } su.setExpire(newExpire); logger.info("Updating ShortURL: " + su); shortURLRepository.save(su); /* Changes alert date */ Alert a = alertRepository.findByHash(hash); Date alertDate = processAlertDate(expire, days); if (a != null) { /* If alert already exists, updates its alert date */ a.setDate(alertDate); logger.info("Updating alert: " + a); alertRepository.save(a); } else { /* If alert does not exist, creates a new one */ String mail = UrlShortenerControllerWithLogs.getOwnerMail(); logger.info("Setting new alert"); alertRepository.save(new Alert(mail, hash, alertDate)); } return new ResponseEntity<>(HttpStatus.OK); }
/** * If shortURL is valid, creates it and saves it XXX: at the moment, it just ignores unknown * emails, with no feedback for users. */ protected ShortURL createAndSaveIfValid( String url, String custom, String hasToken, String expireDate, String ip, String[] emails, Principal principal, String country) { UrlValidator urlValidator = new UrlValidator(new String[] {"http", "https"}); /* * Check if url comes through http or https */ if (urlValidator.isValid(url)) { logger.info("Shortening valid url " + url); /* * Creates a hash from the current date in case this is not custom */ String id; String now = new Date().toString(); if (custom.equals("")) { id = Hashing.murmur3_32().hashString(now, StandardCharsets.UTF_8).toString(); } else { id = custom; } /* * Has Token */ String token = null; if (hasToken != null && !hasToken.equals("")) { token = UUID.randomUUID().toString(); } /* * Expire date */ Date expire = null; if (!expireDate.equals("")) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { expire = sdf.parse(expireDate); } catch (ParseException e) { e.printStackTrace(); logger.info("Error: badly introduced date."); } } /* * Checks every mail inserted by the user, and maintains a list with * those corresponding to registered users. */ List<String> trueEmails = new ArrayList<String>(); for (int i = 0; i < emails.length; i++) { if (!emails[i].equals("")) { User foundUser = null; foundUser = userRepository.findByMail(emails[i]); if (foundUser != null) { trueEmails.add(foundUser.getMail()); } } } /* * If no valid emails are introduced, link will be public and it * wont have an email list. */ boolean isPrivate = false; if (trueEmails.size() > 0) { isPrivate = true; } else { trueEmails = null; } /* * Gets email */ String owner = getOwnerMail(); /* * Creates ShortURL object */ ShortURL su = new ShortURL( id, url, linkTo( methodOn(UrlShortenerControllerWithLogs.class) .redirectTo(id, null, null, null, null)) .toUri(), new Date(System.currentTimeMillis()), expire, owner, token, HttpStatus.TEMPORARY_REDIRECT.value(), ip, country, isPrivate, trueEmails); /* * Insert to DB */ return shortURLRepository.save(su); } else { logger.info("Not valid url " + url); return null; } }