package tk.draganczuk.url; import org.eclipse.jetty.http.HttpStatus; import spark.Request; import spark.Response; public class Routes { private static final UrlRepository urlRepository; static { urlRepository = new UrlRepository(); } public static String getAll(Request req, Response res) { return String.join("\n", urlRepository.getAll()); } public static String addUrl(Request req, Response res) { var body = req.body(); if (body.endsWith(";")) { body = body + "$"; } var split = body.split(";"); String longUrl = split[0]; if (split[1].equals("$")) { split[1] = Utils.randomString(); } String shortUrl = split[1]; if (Utils.validate(shortUrl)) { return urlRepository.addUrl(longUrl, shortUrl); } else { res.status(HttpStatus.BAD_REQUEST_400); return "shortUrl not valid ([a-z0-9-_]+)"; } } public static String goToLongUrl(Request req, Response res) { String shortUrl = req.params("shortUrl"); var longUrlOpt = urlRepository .findForShortUrl(shortUrl); if (longUrlOpt.isEmpty()) { res.status(404); return ""; } urlRepository.addHit(shortUrl); res.redirect(longUrlOpt.get(), HttpStatus.PERMANENT_REDIRECT_308); return ""; } public static String delete(Request req, Response res) { String shortUrl = req.params("shortUrl"); urlRepository.deleteEntry(shortUrl); return ""; } }