Skip to content
This repository has been archived by the owner on Sep 2, 2024. It is now read-only.

Commit

Permalink
Merge branch 'EFI23a:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
TomasGnG authored Sep 30, 2023
2 parents 51b80fd + ccae651 commit 18713c5
Show file tree
Hide file tree
Showing 9 changed files with 2 additions and 150 deletions.
14 changes: 0 additions & 14 deletions config/checkstyle/checkstyle.xml
Original file line number Diff line number Diff line change
Expand Up @@ -333,20 +333,6 @@
<property name="allowedAnnotations" value="Override, Test"/>
<property name="tokens" value="METHOD_DEF, CTOR_DEF, ANNOTATION_FIELD_DEF, COMPACT_CTOR_DEF"/>
</module>
<module name="MissingJavadocMethod">
<property name="scope" value="public"/>
<property name="minLineCount" value="2"/>
<property name="allowedAnnotations" value="Override, Test"/>
<property name="tokens" value="METHOD_DEF, CTOR_DEF, ANNOTATION_FIELD_DEF,
COMPACT_CTOR_DEF"/>
</module>
<module name="MissingJavadocType">
<property name="scope" value="protected"/>
<property name="tokens"
value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF,
RECORD_DEF, ANNOTATION_DEF"/>
<property name="excludeScope" value="nothing"/>
</module>
<module name="MethodName">
<property name="format" value="^[a-z][a-z0-9]\w*$"/>
<message key="name.invalidPattern"
Expand Down
10 changes: 0 additions & 10 deletions src/main/java/de/efi23a/bot/BotApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,10 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

/**
* Dient als Einstiegspunkt für die Bot-Anwendung.
*/

@EnableScheduling
@SpringBootApplication
public class BotApplication {

/**
* Starten die Bot-Anwendung.
* Die Start-Logik wird an das Spring-Framework übergeben.
*
* @param args Kommandozeilenargumente
*/
public static void main(String[] args) {
SpringApplication.run(BotApplication.class, args);
}
Expand Down
3 changes: 0 additions & 3 deletions src/main/java/de/efi23a/bot/BotConfiguration.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
* Definiert Singleton-Beans für die Bot-Anwendung.
*/
@Configuration
public class BotConfiguration {

Expand Down
3 changes: 0 additions & 3 deletions src/main/java/de/efi23a/bot/database/MongoConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;

/**
* Configuration Class for MongoDB.
*/
@Configuration
@EnableMongoRepositories(basePackages = "de.efi23a.bot.database.repository")
public class MongoConfig extends AbstractMongoClientConfiguration {
Expand Down
11 changes: 0 additions & 11 deletions src/main/java/de/efi23a/bot/database/model/TaskModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

/**
* Database Model.
*/
@Setter
@Getter
@Document("task")
Expand All @@ -23,14 +20,6 @@ public class TaskModel {
private Date date;
private int importance;

/**
* Constructor.
*
* @param title task title
* @param description task description
* @param date task date (to when?)
* @param importance task importance
*/
public TaskModel(String title, String description, Date date, int importance) {
this.id = UUID.randomUUID().toString();
this.title = title;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;

/**
* Database Repository for Table 'Task'.
*/
public interface TaskRepository extends MongoRepository<TaskModel, String> {

@Query("{title:'?0'}")
Expand Down
94 changes: 2 additions & 92 deletions src/main/java/de/efi23a/bot/features/MailForwardingFeature.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,35 +30,18 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
* Die Mailweiterleitungsfunktion kann sich in einen IMAP-Server einloggen und die dort
* neuen eingegangenen Mails in einen Discord-Textkanal weiterleiten.
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class MailForwardingFeature {

/**
* Der Name des Ordners, in dem die neuen Mails gesucht werden sollen.
*/
private static final String INBOX_FOLDER = "INBOX";
/**
* Der Name der Umgebungsvariable, die die URL des IMAP-Servers enthält.
*/

private static final String MAIL_URL_VARIABLE = "MAIL_URL";
/**
* Der Name der Umgebungsvariable, die die Channel-ID des Ziel-Discord-Textkanals enthält.
*/

private static final String MAIL_CHANNEL_ID = "MAIL_CHANNEL_ID";
private final JDA jda;

/**
* Validiert regelmäßig die Umgebungsvariablen und leitet neue Mails weiter.
*
* @throws MessagingException Wird geworfen, wenn eine Mail nicht gelesen werden kann.
* @throws IOException Wird geworfen, wenn der Inhalt einer Mail nicht gelesen werden kann.
*/
@Scheduled(fixedDelay = 5, timeUnit = TimeUnit.MINUTES)
private void runScheduledTask() throws MessagingException, IOException {
log.info("Running mail task");
Expand All @@ -85,15 +68,6 @@ private void runScheduledTask() throws MessagingException, IOException {

//<editor-fold desc="Mail Logik">

/**
* Leitet neue Mails aus dem IMAP-Server in den Discord-Textkanal weiter.
*
* @param session Die Session, die für die Verbindung zum IMAP-Server verwendet wird.
* @param url Die URL des IMAP-Servers.
* @param textChannel Der Textkanal, in den die Mails weitergeleitet werden sollen.
* @throws MessagingException Wird geworfen, wenn eine Mail nicht gelesen werden kann.
* @throws IOException Wird geworfen, wenn der Inhalt einer Mail nicht gelesen werden kann.
*/
private void handleMailForwarding(@NotNull Session session, @NotNull String url,
@NotNull TextChannel textChannel)
throws MessagingException, IOException {
Expand All @@ -108,62 +82,30 @@ private void handleMailForwarding(@NotNull Session session, @NotNull String url,
}
}

/**
* Erstellt eine neue Sitzung für die Verbindung zu einem IMAPs-Server.
*
* @return Die erstellte Sitzung.
*/
@NotNull
public Session createSession() {
return Session.getInstance(getMailProperties());
}

/**
* Stellt eine Verbindung zum IMAP-Server her.
*
* @param session Die Sitzung, die für die Verbindung zum IMAP-Server verwendet wird.
* @param url Die URL des IMAP-Servers.
* @return Der geöffnete Store.
* @throws MessagingException Wird geworfen, wenn eine Mail nicht gelesen werden kann.
*/
@NotNull
public Store openStore(@NotNull Session session, @NotNull String url) throws MessagingException {
Store store = session.getStore(new URLName(url));
store.connect();
return store;
}

/**
* Öffnet den Standard-Posteingang des IMAP-Servers, um neue Mails zu lesen.
*
* @param store Der Store, der für die Verbindung zum IMAP-Server verwendet wird.
* @return Der geöffnete Posteingang.
* @throws MessagingException Wird geworfen, wenn eine Mail nicht gelesen werden kann.
*/
@NotNull
public Folder openFolder(@NotNull Store store) throws MessagingException {
Folder folder = store.getFolder(INBOX_FOLDER);
folder.open(Folder.READ_WRITE);
return folder;
}

/**
* Sucht nach ungelesenen Mails in einem Ordner.
*
* @param emailFolder Der Ordner, in dem nach neuen Mails gesucht werden soll.
* @return Die Liste der neuen Mails.
* @throws MessagingException Wird geworfen, wenn eine Mail nicht gelesen werden kann.
*/
@NotNull
public List<Message> getNewMails(@NotNull Folder emailFolder) throws MessagingException {
return Arrays.asList(emailFolder.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false)));
}

/**
* Erstellt die {@link Properties} für die Verbindung zum IMAPs-Server.
*
* @return Die erstellten Properties.
*/
@NotNull
public Properties getMailProperties() {
Properties properties = new Properties();
Expand All @@ -175,22 +117,12 @@ public Properties getMailProperties() {

//<editor-fold desc="Environment Variables">

/**
* Liest die URL des Ziel-IMAP-Servers aus den Umgebungsvariablen.
*
* @return Die URL des Ziel-IMAP-Servers.
*/
@Nullable
@Contract(pure = true)
public String fetchMailUrl() {
return System.getenv(MAIL_URL_VARIABLE);
}

/**
* Liest die Channel-ID des Ziel-Discord-Textkanals aus den Umgebungsvariablen.
*
* @return Die Channel-ID des Ziel-Discord-Textkanals.
*/
@Nullable
@Contract(pure = true)
public String fetchMailChannelId() {
Expand All @@ -200,14 +132,6 @@ public String fetchMailChannelId() {

//<editor-fold desc="Embed Building">

/**
* Baut ein {@link MessageEmbed} aus einer {@link Message E-Mail-Nachricht}.
*
* @param message Die E-Mail-Nachricht, aus der das Embed gebaut werden soll.
* @return Das gebaute Embed.
* @throws MessagingException Wird geworfen, wenn eine Mail nicht gelesen werden kann.
* @throws IOException Wird geworfen, wenn der Inhalt einer Mail nicht gelesen werden kann.
*/
@NotNull
public MessageEmbed buildEmbed(@NotNull Message message) throws MessagingException, IOException {
return new EmbedBuilder()
Expand All @@ -217,27 +141,13 @@ public MessageEmbed buildEmbed(@NotNull Message message) throws MessagingExcepti
.build();
}

/**
* Baut einen Adressen-String aus einem Array von Adressen.
*
* @param addresses Das Array von Adressen, aus dem der String gebaut werden soll.
* @return Der gebaute Adressen-String.
*/
@NotNull
private String buildAddressString(@NotNull Address[] addresses) {
return Arrays.stream(addresses)
.map(Address::toString)
.collect(Collectors.joining(", "));
}

/**
* Baut einen String aus dem Inhalt einer E-Mail-Nachricht.
*
* @param message Die E-Mail-Nachricht, aus der der String gebaut werden soll.
* @return Der gebaute String.
* @throws MessagingException Wird geworfen, wenn eine Mail nicht gelesen werden kann.
* @throws IOException Wird geworfen, wenn der Inhalt einer Mail nicht gelesen werden kann.
*/
@NotNull
private String buildBody(@NotNull Message message) throws MessagingException, IOException {
Object content = message.getContent();
Expand Down
11 changes: 0 additions & 11 deletions src/main/java/de/efi23a/bot/task/TaskProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
* All functions that belong to Task.
*/
@Getter
@Component
public class TaskProvider {
Expand All @@ -32,14 +29,6 @@ public TaskModel addTask(String title, String description, Date date, int import
return taskRepository.save(new TaskModel(title, description, date, importance));
}


/**
* Sets TaskId from oldId to newId.
* deletes TaskId oldId from database
*
* @param oldId oldId of Task
* @param newId newId of Task
*/
public void setTaskId(String oldId, String newId) {
TaskModel task = taskRepository.findTaskById(oldId);
this.taskRepository.delete(task);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* Web Endpoint Controller.
*/
@RestController
@RequiredArgsConstructor(onConstructor_ = @Autowired)
public class TaskController {
Expand Down

0 comments on commit 18713c5

Please sign in to comment.