Skip to content

Commit

Permalink
Merge pull request #110 from Softawii/feature/metrics
Browse files Browse the repository at this point in the history
feat: metrics (prometheus + micrometer)
  • Loading branch information
yaansz authored Oct 13, 2024
2 parents c248bea + 43adf42 commit 69ec51a
Show file tree
Hide file tree
Showing 25 changed files with 515 additions and 326 deletions.
13 changes: 13 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ dependencies {
implementation ('org.springframework.boot:spring-boot-starter-data-jpa:2.7.18') {
exclude module: 'spring-boot-starter-logging'
}

implementation 'org.springframework.boot:spring-boot-starter-log4j2:2.7.0'
implementation 'javax.xml.bind:jaxb-api:2.3.1'

Expand All @@ -38,8 +39,20 @@ dependencies {
}

implementation("com.github.Softawii:curupira:v1.0.0") {
exclude module: 'slf4j-simple'
changing = true
}
implementation 'org.apache.logging.log4j:log4j-slf4j2-impl:2.24.1'

implementation 'io.micrometer:micrometer-registry-prometheus:1.10.13'
implementation 'io.micrometer:micrometer-tracing-bridge-brave:1.0.12'
implementation ('org.springframework.boot:spring-boot-starter-actuator:2.7.0') {
exclude module: 'spring-boot-starter-logging'
}

implementation ('org.springframework.boot:spring-boot-starter-web:2.7.0') {
exclude module: 'spring-boot-starter-logging'
}
}

tasks.register('deploy') {
Expand Down
4 changes: 3 additions & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
15 changes: 0 additions & 15 deletions src/main/java/com/softawii/capivara/config/SpringConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,21 +85,6 @@ public JDA jda() {
return jda;
}

@Bean
public MainExceptionController capivaraExceptionHandler() {
String logChannelId = env.getProperty("log.channel.id");
String logDirectory = env.getProperty("log_directory");
if (logChannelId != null) {
Path logPath = null;
if (logDirectory != null) {
logPath = Path.of(logDirectory);
}
return new MainExceptionController(logChannelId, logPath);
}

return null;
}

@Bean
public CurupiraBoot curupira(JDA jda, ContextProvider context) {
String pkg = "com.softawii.capivara.controller";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import net.dv8tion.jda.api.utils.FileUpload;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.awt.*;
Expand All @@ -29,16 +30,18 @@
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

@Component
@DiscordExceptions
public class MainExceptionController {

private final Logger LOGGER = LogManager.getLogger(MainExceptionController.class);
private String channelId;
private Path logDirectory;

public MainExceptionController(String channelId, Path logDirectory) {
public MainExceptionController(@Value("${log.channel.id:#{null}}") String channelId,
@Value("${log_directory:#{null}}") String logDirectory) {
this.channelId = channelId;
this.logDirectory = logDirectory;
if(logDirectory != null) this.logDirectory = Path.of(logDirectory);
}

@DiscordException(Throwable.class)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.softawii.capivara.controller;

import com.softawii.capivara.exceptions.MissingPermissionsException;
import com.softawii.capivara.services.SocialParserConfigService;
import com.softawii.curupira.v2.annotations.DiscordController;
import com.softawii.curupira.v2.annotations.RequestInfo;
import com.softawii.curupira.v2.annotations.commands.DiscordCommand;
import com.softawii.curupira.v2.annotations.interactions.DiscordButton;
import com.softawii.curupira.v2.api.TextLocaleResponse;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.channel.unions.MessageChannelUnion;
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
import net.dv8tion.jda.api.interactions.DiscordLocale;
import net.dv8tion.jda.api.interactions.components.buttons.Button;
import org.springframework.stereotype.Component;

@Component
@DiscordController(parent = "social", value = "bsky", description = "Bluesky Controller", permissions = Permission.ADMINISTRATOR, resource = "social", locales = DiscordLocale.PORTUGUESE_BRAZILIAN)
public class SocialBlueskyController {
private final SocialParserConfigService service;

public SocialBlueskyController(SocialParserConfigService service) {
this.service = service;
}

@DiscordCommand(name = "enable", description = "Enable the automatic Bluesky link transformation service")
public TextLocaleResponse enable(Guild guild) {
this.service.changeBluesky(guild.getIdLong(), true);
return new TextLocaleResponse("social.bluesky.enable.response", guild.getName());
}

@DiscordCommand(name = "disable", description = "Disable the automatic Bluesky link transformation service")
public TextLocaleResponse disable(Guild guild) {
this.service.changeBluesky(guild.getIdLong(), false);
return new TextLocaleResponse("social.bluesky.disable.response", guild.getName());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import org.springframework.stereotype.Component;

@Component
@DiscordExceptions(classes = SocialTwitterGroup.class)
@DiscordExceptions(classes = { SocialTwitterController.class, SocialExceptionController.class })
public class SocialExceptionController {

private final MainExceptionController mainExceptionController;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.softawii.capivara.controller;

import com.softawii.capivara.exceptions.MissingPermissionsException;
import com.softawii.curupira.v2.annotations.DiscordController;
import com.softawii.curupira.v2.annotations.RequestInfo;
import com.softawii.curupira.v2.annotations.interactions.DiscordButton;
import com.softawii.curupira.v2.api.TextLocaleResponse;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.channel.unions.MessageChannelUnion;
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
import net.dv8tion.jda.api.interactions.DiscordLocale;
import net.dv8tion.jda.api.interactions.components.buttons.Button;
import org.springframework.stereotype.Component;

@Component
@DiscordController(parent = "social", value = "generic", description = "Social Generic Controller", permissions = Permission.ADMINISTRATOR, resource = "social", locales = DiscordLocale.PORTUGUESE_BRAZILIAN)
public class SocialGenericController {
public static final String deleteBotMessage = "social-bot-message-delete";

public static Button generateDeleteButton(long authorId) {
return Button.danger(String.format("%s:%s", deleteBotMessage, authorId), "Delete");
}

@DiscordButton(name = deleteBotMessage, ephemeral = true)
public TextLocaleResponse delete(ButtonInteractionEvent event, @RequestInfo Member member) throws MissingPermissionsException {
// Format: ButtonID:Owner
String ownerId = event.getComponentId().split(":")[1];
String messageOwner = member.getId();

MessageChannelUnion channel = event.getChannel();

if (!messageOwner.equals(ownerId)) {
throw new MissingPermissionsException();
}

channel.deleteMessageById(event.getMessageId()).queue();

return new TextLocaleResponse("social.delete.response");
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.softawii.capivara.controller;

import com.softawii.capivara.exceptions.MissingPermissionsException;
import com.softawii.capivara.services.TwitterParserConfigService;
import com.softawii.capivara.services.SocialParserConfigService;
import com.softawii.curupira.v2.annotations.DiscordController;
import com.softawii.curupira.v2.annotations.RequestInfo;
import com.softawii.curupira.v2.annotations.commands.DiscordCommand;
Expand All @@ -19,44 +19,22 @@
@Component
@DiscordController(parent = "social", value = "twitter", description = "Twitter Controller", permissions = Permission.ADMINISTRATOR,
resource = "social", locales = DiscordLocale.PORTUGUESE_BRAZILIAN)
public class SocialTwitterGroup {
public static final String deleteBotTwitterMessage = "twitter-bot-message-delete";
private final TwitterParserConfigService service;
public class SocialTwitterController {
private final SocialParserConfigService service;

public SocialTwitterGroup(TwitterParserConfigService service) {
public SocialTwitterController(SocialParserConfigService service) {
this.service = service;
}

public static Button generateDeleteButton(long authorId) {
return Button.danger(String.format("%s:%s", deleteBotTwitterMessage, authorId), "Apagar");
}

@DiscordCommand(name = "enable", description = "Enable the automatic Twitter link transformation service")
public TextLocaleResponse enable(Guild guild) {
service.enable(guild.getIdLong());
this.service.changeTwitter(guild.getIdLong(), true);
return new TextLocaleResponse("social.twitter.enable.response", guild.getName());
}

@DiscordCommand(name = "disable", description = "Disable the automatic Twitter link transformation service")
public TextLocaleResponse disable(Guild guild) {
service.disable(guild.getIdLong());
this.service.changeTwitter(guild.getIdLong(), false);
return new TextLocaleResponse("social.twitter.disable.response", guild.getName());
}

@DiscordButton(name = deleteBotTwitterMessage, ephemeral = true)
public TextLocaleResponse delete(ButtonInteractionEvent event, @RequestInfo Member member) throws MissingPermissionsException {
// Format: ButtonID:Owner
String ownerId = event.getComponentId().split(":")[1];
String messageOwner = member.getId();

MessageChannelUnion channel = event.getChannel();

if (!messageOwner.equals(ownerId)) {
throw new MissingPermissionsException();
}

channel.deleteMessageById(event.getMessageId()).queue();
return new TextLocaleResponse("twitter.delete.response");
}

}
132 changes: 0 additions & 132 deletions src/main/java/com/softawii/capivara/core/EmbedManager.java

This file was deleted.

Loading

0 comments on commit 69ec51a

Please sign in to comment.