Added a basic input validation for shortUrl
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package tk.draganczuk.url;
|
||||
|
||||
import org.eclipse.jetty.http.HttpStatus;
|
||||
import spark.Request;
|
||||
import spark.Response;
|
||||
|
||||
@@ -29,15 +30,21 @@ public class Routes {
|
||||
shortUrl = Utils.randomString();
|
||||
}
|
||||
|
||||
return urlFile.addUrl(longUrl, shortUrl);
|
||||
if (Utils.validate(shortUrl)) {
|
||||
return urlFile.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){
|
||||
|
||||
public static String goToLongUrl(Request req, Response res) {
|
||||
String shortUrl = req.params("shortUrl");
|
||||
var longUrlOpt = urlFile
|
||||
.findForShortUrl(shortUrl);
|
||||
.findForShortUrl(shortUrl);
|
||||
|
||||
if(longUrlOpt.isEmpty()){
|
||||
if (longUrlOpt.isEmpty()) {
|
||||
res.status(404);
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
package tk.draganczuk.url;
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class Utils {
|
||||
private static final Random random = new Random(System.currentTimeMillis());
|
||||
|
||||
private static final String SHORT_URL_PATTERN = "[a-z0-9]+";
|
||||
private static final Pattern PATTERN = Pattern.compile(SHORT_URL_PATTERN);
|
||||
|
||||
public static String randomString() {
|
||||
int leftLimit = 48; // numeral '0'
|
||||
int rightLimit = 122; // letter 'z'
|
||||
@@ -18,4 +22,9 @@ public class Utils {
|
||||
StringBuilder::append)
|
||||
.toString();
|
||||
}
|
||||
|
||||
public static boolean validate(String shortUrl) {
|
||||
return PATTERN.matcher(shortUrl)
|
||||
.matches();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user