CodeBadgeRestAPI/src/main/java/tech/nevets/codebadgerestapi/Server.java
2024-08-07 15:15:10 -04:00

136 lines
5.8 KiB
Java

package tech.nevets.codebadgerestapi;
import org.jsoup.Jsoup;
import org.jsoup.safety.Safelist;
import java.awt.*;
import static spark.Spark.*;
public class Server {
public static void main(String[] args) {
if (args[0] != null) {
port(Integer.parseInt(args[0]));
} else {
port(8080);
}
path("/badge", () -> {
before("/*");
get("/test/:left/:right", (req, res) -> {
String left = Jsoup.clean(req.params(":left"), Safelist.relaxed());
String right = Jsoup.clean(req.params(":right"), Safelist.relaxed());
res.type("image/svg+xml");
Color color;
switch (req.queryParams("color").toLowerCase()) {
case "red" -> color = Color.RED;
case "orange" -> color = Color.ORANGE;
case "yellow" -> color = Color.YELLOW;
case "green" -> color = Color.GREEN;
case "cyan" -> color = Color.CYAN;
case "blue" -> color = Color.BLUE;
case "purple", "magenta" -> color = Color.MAGENTA;
case "pink" -> color = Color.PINK;
case "white" -> color = Color.WHITE;
case "lightgray" -> color = Color.LIGHT_GRAY;
case "darkgray" -> color = Color.DARK_GRAY;
case "black" -> color = Color.BLACK;
default -> color = Color.GRAY;
}
boolean isRounded;
if (req.queryParams("rounded") == null) {
isRounded = false;
} else {
if (req.queryParams("rounded").equals("true")) {
isRounded = true;
} else {
isRounded = false;
}
}
return BadgeFactory.genSVGBadge(left, right, color, isRounded);
});
get("/version/*/:gitUrl/:org/:repo/:branch", (req, res) -> {
String splat0 = Jsoup.clean(req.splat()[0], Safelist.relaxed());
String gitUrl = Jsoup.clean(req.params(":gitUrl"), Safelist.relaxed());
String org = Jsoup.clean(req.params(":org"), Safelist.relaxed());
String repo = Jsoup.clean(req.params(":repo"), Safelist.relaxed());
String branch = Jsoup.clean(req.params(":branch"), Safelist.relaxed());
switch (splat0) {
case "gitea" -> {
res.type("image/svg+xml");
String version = BadgeFactory.getVersionFromGitBranch(gitUrl, org, repo, branch);
return BadgeFactory.genSVGBadge("Version", version, Color.GREEN, true);
}
case "github" -> {
res.status(405);
return "Not yet Implemented!";
}
case "gitlab" -> {
res.status(405);
return "Not yet Implemented!";
}
}
res.status(404);
return "Not Found!";
});
get("/buildStatus/*/:ciUrl/:projectName", (req, res) -> {
String splat0 = Jsoup.clean(req.splat()[0], Safelist.relaxed());
String ciUrl = Jsoup.clean(req.params(":ciUrl"), Safelist.relaxed());
String projectName = Jsoup.clean(req.params(":projectName"), Safelist.relaxed());
switch (splat0) {
case "jenkins" -> {
res.type("image/png");
String buildStatus = BadgeFactory.getLatestBuildStatusFromJenkins(ciUrl, projectName);
Color badgeColor = Color.GRAY;
switch (buildStatus) {
case "SUCCESS" -> {
buildStatus = "passing";
badgeColor = Color.GREEN;
}
case "FAILURE" -> {
buildStatus = "failing";
badgeColor = Color.RED;
}
}
return BadgeFactory.genSVGBadge("Build", buildStatus, badgeColor, true);
}
case "circleci" -> {
res.status(405);
return "Not yet Implemented!";
}
case "teamcity" -> {
res.status(405);
return "Not yet Implemented!";
}
}
res.status(404);
return "Not Found!";
});
get("/latestSuccessfulVersion/*/:ciUrl/:projectName", (req, res) -> {
String splat0 = Jsoup.clean(req.splat()[0], Safelist.relaxed());
String ciUrl = Jsoup.clean(req.params(":ciUrl"), Safelist.relaxed());
String projectName = Jsoup.clean(req.params(":projectName"), Safelist.relaxed());
switch (splat0) {
case "jenkins" -> {
return BadgeFactory.getLatestSuccessfulVersionFromJenkins(ciUrl, projectName);
}
case "circleci" -> {
res.status(405);
return "Not yet Implemented!";
}
case "teamcity" -> {
res.status(405);
return "Not yet Implemented!";
}
}
res.status(404);
return "Not Found!";
});
});
}
}