Skip to content

Commit

Permalink
Update dependency de.chojo:cjda-util to v2.10.3+jda-5.1.0 (#628)
Browse files Browse the repository at this point in the history
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Yannick Lamprecht <[email protected]>
Co-authored-by: Lilly <[email protected]>
  • Loading branch information
3 people authored Jan 24, 2025
1 parent cb22bc4 commit 72f221e
Show file tree
Hide file tree
Showing 13 changed files with 586 additions and 385 deletions.
8 changes: 7 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,16 @@ spotless {

dependencies {
//discord
implementation("de.chojo", "cjda-util", "2.9.8+jda-5.0.0") {
implementation("de.chojo", "cjda-util", "2.10.3+jda-5.1.0") {
exclude(group = "club.minnced", module = "opus-java")
}

val openapi = "6.3.0"

annotationProcessor("io.javalin.community.openapi:openapi-annotation-processor:$openapi")
implementation("io.javalin.community.openapi:javalin-openapi-plugin:$openapi") // for /openapi route with JSON scheme
implementation("io.javalin.community.openapi:javalin-swagger-plugin:$openapi") // for Swagger UI

// database
implementation("org.postgresql", "postgresql", "42.7.5")
implementation(libs.bundles.sadu)
Expand Down
1 change: 0 additions & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ dependencyResolutionManagement {
// plugins
plugin("spotless", "com.diffplug.spotless").version("7.0.2")
plugin("shadow", "com.gradleup.shadow").version("8.3.5")

}
}
}
53 changes: 39 additions & 14 deletions src/main/java/de/chojo/repbot/core/Web.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
import de.chojo.jdautil.botlist.BotlistService;
import de.chojo.repbot.config.Configuration;
import de.chojo.repbot.web.Api;
import de.chojo.repbot.web.error.ApiException;
import io.javalin.Javalin;
import io.javalin.plugin.openapi.OpenApiOptions;
import io.javalin.plugin.openapi.OpenApiPlugin;
import io.javalin.plugin.openapi.ui.ReDocOptions;
import io.javalin.plugin.openapi.ui.SwaggerOptions;
import io.javalin.plugin.openapi.utils.OpenApiVersionUtil;
import io.swagger.v3.oas.models.info.License;
import io.javalin.openapi.OpenApiLicense;
import io.javalin.openapi.plugin.OpenApiPlugin;
import io.javalin.openapi.plugin.OpenApiPluginConfiguration;
import io.javalin.openapi.plugin.swagger.SwaggerConfiguration;
import io.javalin.openapi.plugin.swagger.SwaggerPlugin;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.exceptions.ErrorResponseException;
import net.dv8tion.jda.api.requests.ErrorResponse;
Expand Down Expand Up @@ -51,19 +51,44 @@ public void init() {
private void initApi() {
var api = configuration.api();

var info = new io.swagger.v3.oas.models.info.Info().version("1.0").title("Reputation Bot API")
.description("Documentation for the Reputation Bot API")
.license(new License().name("GNU Affero General Public License v3.0")
.url("https://github.com/RainbowDashLabs/reputation-bot/blob/master/LICENSE.md"));
/*
var options = new OpenApiOptions(info)
.path("/json-docs")
.reDoc(new ReDocOptions("/redoc")) // endpoint for redoc
.swagger(new SwaggerOptions("/docs").title("Reputation Bot API"));
OpenApiVersionUtil.INSTANCE.setLogWarnings(false);
OpenApiVersionUtil.INSTANCE.setLogWarnings(false);*/

javalin = Javalin.create(config -> config.registerPlugin(new OpenApiPlugin(options)))
.start(api.host(), api.port());
new Api(javalin, data.metrics()).init();
javalin = Javalin.create(config -> {
config.registerPlugin(new OpenApiPlugin(this::configureOpenApi));
config.registerPlugin(new SwaggerPlugin(this::configureSwagger));
config.router.apiBuilder(() -> new Api(data.metrics()).init());
})
.start(api.host(), api.port());
javalin.exception(ApiException.class, (err, ctx) -> ctx.result(err.getMessage()).status(err.status()));
}

private void configureSwagger(SwaggerConfiguration swaggerConfiguration) {
swaggerConfiguration.setDocumentationPath("/docs");
swaggerConfiguration.setUiPath("/swagger-ui");
}

private void configureOpenApi(OpenApiPluginConfiguration config) {
config.withDocumentationPath("/docs")
.withDefinitionConfiguration((version, definition) -> {
definition.withInfo(info -> {
info.setTitle("Reputation Bot API");
info.setVersion("1.0");
info.setDescription("Documentation for the Reputation Bot API");
info.setLicense(new OpenApiLicense()
.name("GNU Affero General Public License v3.0")
.url("https://github.com/RainbowDashLabs/reputation-bot/blob/master/LICENSE.md")
);
});
definition.withServer(openApiServer -> {
openApiServer.setUrl("https://repbot.rainbowdashlabs.de");
openApiServer.setDescription("Main server");
});
});
}

private void initBotList() {
Expand Down
17 changes: 7 additions & 10 deletions src/main/java/de/chojo/repbot/web/Api.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,12 @@
package de.chojo.repbot.web;

import de.chojo.repbot.dao.provider.Metrics;
import de.chojo.repbot.web.erros.ApiException;
import de.chojo.repbot.web.error.ApiException;
import de.chojo.repbot.web.routes.v1.MetricsRoute;
import io.javalin.Javalin;
import io.javalin.apibuilder.ApiBuilder;
import io.javalin.apibuilder.EndpointGroup;
import io.javalin.router.Endpoint;
import org.slf4j.Logger;

import static io.javalin.apibuilder.ApiBuilder.before;
Expand All @@ -17,20 +20,14 @@

public class Api {
private static final Logger log = getLogger(Api.class);
private final Javalin javalin;
private final MetricsRoute metricsRoute;

public Api(Javalin javalin, Metrics metrics) {
this.javalin = javalin;
public Api(Metrics metrics) {
metricsRoute = new MetricsRoute(metrics);
}

public void init() {
javalin.exception(ApiException.class, (err, ctx) -> ctx.result(err.getMessage()).status(err.status()));
javalin.routes(() -> {
before(ctx -> log.debug("Received request on {}.", ctx.path()));

path("v1", () -> path("metrics", metricsRoute::buildRoutes));
});
before(ctx -> log.debug("Received request on {}.", ctx.path()));
path("v1", () -> path("metrics", metricsRoute::buildRoutes));
}
}
11 changes: 6 additions & 5 deletions src/main/java/de/chojo/repbot/web/error/ApiException.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,20 @@
*
* Copyright (C) RainbowDashLabs and Contributor
*/
package de.chojo.repbot.web.erros;
package de.chojo.repbot.web.error;

import io.javalin.http.HttpCode;

import io.javalin.http.HttpStatus;

public class ApiException extends RuntimeException {
private final HttpCode status;
private final HttpStatus status;

public ApiException(HttpCode status, String message) {
public ApiException(HttpStatus status, String message) {
super(message);
this.status = status;
}

public HttpCode status() {
public HttpStatus status() {
return status;
}
}
15 changes: 7 additions & 8 deletions src/main/java/de/chojo/repbot/web/routes/v1/MetricsHolder.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,12 @@
package de.chojo.repbot.web.routes.v1;

import de.chojo.repbot.dao.provider.Metrics;
import de.chojo.repbot.web.erros.ApiException;
import de.chojo.repbot.web.error.ApiException;
import de.chojo.repbot.web.routes.RoutesBuilder;
import de.chojo.repbot.web.routes.v1.metrics.MetricCache;
import io.javalin.http.Context;
import io.javalin.http.Handler;
import io.javalin.http.HttpCode;
import org.eclipse.jetty.http.HttpStatus;
import io.javalin.http.HttpStatus;
import org.slf4j.Logger;

import static org.slf4j.LoggerFactory.getLogger;
Expand All @@ -36,7 +35,7 @@ protected void writeImage(Context ctx, byte[] png) {
ctx.header("X-Content-Type-Options", "nosniff");
ctx.contentType("image/png");

ctx.result(png).status(HttpStatus.OK_200);
ctx.result(png).status(HttpStatus.OK);
}

protected int offset(Context context, int max) {
Expand All @@ -46,7 +45,7 @@ protected int offset(Context context, int max) {
assertSize(offset, 0, max);
return offset;
} catch (NumberFormatException e) {
throw new ApiException(HttpCode.BAD_REQUEST, "Offset is not a number, Got: " + param);
throw new ApiException(HttpStatus.BAD_REQUEST, "Offset is not a number, Got: " + param);
}
}

Expand All @@ -57,16 +56,16 @@ protected int count(Context context, int max) {
assertSize(offset, 2, max);
return offset;
} catch (NumberFormatException e) {
throw new ApiException(HttpCode.BAD_REQUEST, "Count is not a number, Got: " + param);
throw new ApiException(HttpStatus.BAD_REQUEST, "Count is not a number, Got: " + param);
}
}

private void assertSize(int value, int min, int max) {
if (value < min) {
throw new ApiException(HttpCode.BAD_REQUEST, String.format("Value %s is too small. Min: %s", value, min));
throw new ApiException(HttpStatus.BAD_REQUEST, String.format("Value %s is too small. Min: %s", value, min));
}
if (value > max) {
throw new ApiException(HttpCode.BAD_REQUEST, String.format("Value %s is too large. Max: %s", value, max));
throw new ApiException(HttpStatus.BAD_REQUEST, String.format("Value %s is too large. Max: %s", value, max));
}
}

Expand Down
49 changes: 0 additions & 49 deletions src/main/java/de/chojo/repbot/web/routes/v1/MetricsRoute.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import de.chojo.repbot.web.routes.v1.metrics.Reputation;
import de.chojo.repbot.web.routes.v1.metrics.Service;
import de.chojo.repbot.web.routes.v1.metrics.Users;
import io.swagger.v3.oas.models.parameters.Parameter;

public class MetricsRoute implements RoutesBuilder {

Expand Down Expand Up @@ -52,52 +51,4 @@ public void buildRoutes() {
users.buildRoutes();
service.buildRoutes();
}

private static void offsetDoc(Parameter parameter, String resolution, int maxValue) {
setParameter(parameter, "%s offset. 0 is current %s. Max value is %s".formatted(resolution, resolution.toLowerCase(), maxValue));
}

public static void offsetDayDoc(Parameter p) {
offsetDoc(p, "Day", MAX_DAY_OFFSET);
}

public static void offsetHourDoc(Parameter p) {
offsetDoc(p, "Hour", MAX_HOUR_OFFSET);
}

public static void offsetWeekDoc(Parameter p) {
offsetDoc(p, "Week", MAX_WEEK_OFFSET);
}

public static void offsetMonthDoc(Parameter p) {
offsetDoc(p, "Month", MAX_MONTH_OFFSET);
}

public static void offsetYearDoc(Parameter p) {
offsetDoc(p, "Year", MAX_YEAR_OFFSET);
}

private static void countDoc(Parameter parameter, String resolution, int maxValue) {
setParameter(parameter, "%s count. Amount of previously %s in the chart. Max value is %s".formatted(resolution, resolution.toLowerCase(), maxValue));
}

public static void countHourDoc(Parameter p) {
countDoc(p, "Hours", MAX_HOURS);
}

public static void countDayDoc(Parameter p) {
countDoc(p, "Days", MAX_DAYS);
}

public static void countWeekDoc(Parameter p) {
countDoc(p, "Weeks", MAX_WEEKS);
}

public static void countMonthDoc(Parameter p) {
countDoc(p, "Months", MAX_MONTH);
}

private static void setParameter(Parameter p, String description) {
p.setDescription(description);
}
}
Loading

0 comments on commit 72f221e

Please sign in to comment.