136 lines
5.8 KiB
Java
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!";
|
|
});
|
|
});
|
|
}
|
|
}
|