diff --git a/src/main/lombok/org/warp/filesponge/BaseMirrorFileSource.java b/src/main/lombok/org/warp/filesponge/BaseMirrorFileSource.java
new file mode 100644
index 0000000..232bb3f
--- /dev/null
+++ b/src/main/lombok/org/warp/filesponge/BaseMirrorFileSource.java
@@ -0,0 +1,31 @@
+/*
+ * FileSponge
+ * Copyright (C) 2020 Andrea Cavalli
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package org.warp.filesponge;
+
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import org.warp.filesponge.api.FileSource;
+import org.warp.filesponge.api.MirrorURI;
+
+@AllArgsConstructor(access = AccessLevel.PRIVATE)
+public abstract class BaseMirrorFileSource implements FileSource {
+
+ private final MirrorURI mirrorURI;
+
+}
diff --git a/src/main/lombok/org/warp/filesponge/api/FileAccessor.java b/src/main/lombok/org/warp/filesponge/api/FileAccessor.java
index 1669878..f38f0ab 100644
--- a/src/main/lombok/org/warp/filesponge/api/FileAccessor.java
+++ b/src/main/lombok/org/warp/filesponge/api/FileAccessor.java
@@ -19,9 +19,13 @@
package org.warp.filesponge.api;
import java.util.Optional;
+import org.jetbrains.annotations.NotNull;
public interface FileAccessor {
- void delete(FileURI fileURI);
- Optional getContent(FileURI fileURI, boolean offlineOnly);
- FileStatus getStatus(FileURI fileURI);
+
+ void delete(@NotNull FileURI fileURI);
+
+ Optional getContent(@NotNull FileURI fileURI, boolean offlineOnly);
+
+ @NotNull FileStatus getStatus(@NotNull FileURI fileURI);
}
diff --git a/src/main/lombok/org/warp/filesponge/api/FileActor.java b/src/main/lombok/org/warp/filesponge/api/FileActor.java
new file mode 100644
index 0000000..c92b1ee
--- /dev/null
+++ b/src/main/lombok/org/warp/filesponge/api/FileActor.java
@@ -0,0 +1,21 @@
+/*
+ * FileSponge
+ * Copyright (C) 2020 Andrea Cavalli
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package org.warp.filesponge.api;
+
+public interface FileActor {}
diff --git a/src/main/lombok/org/warp/filesponge/api/FileExtension.java b/src/main/lombok/org/warp/filesponge/api/FileExtension.java
new file mode 100644
index 0000000..ad6cebd
--- /dev/null
+++ b/src/main/lombok/org/warp/filesponge/api/FileExtension.java
@@ -0,0 +1,21 @@
+/*
+ * FileSponge
+ * Copyright (C) 2020 Andrea Cavalli
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package org.warp.filesponge.api;
+
+public interface FileExtension {}
diff --git a/src/main/lombok/org/warp/filesponge/api/FileSource.java b/src/main/lombok/org/warp/filesponge/api/FileSource.java
new file mode 100644
index 0000000..79142ac
--- /dev/null
+++ b/src/main/lombok/org/warp/filesponge/api/FileSource.java
@@ -0,0 +1,35 @@
+/*
+ * FileSponge
+ * Copyright (C) 2020 Andrea Cavalli
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package org.warp.filesponge.api;
+
+import java.nio.ByteBuffer;
+import org.jetbrains.annotations.NotNull;
+
+public interface FileSource {
+
+ void onAvailable();
+
+ void onUnavailable();
+
+ boolean onNewFile(@NotNull FileURI fileURI, @NotNull FileExtension fileExtension);
+
+ void onFile(@NotNull FileURI fileURI, @NotNull FileSourceAvailability fileAvailability, long totalSize);
+
+ void onFilePiece(@NotNull FileURI fileURI, long offset, long size, @NotNull ByteBuffer piece);
+}
diff --git a/src/main/lombok/org/warp/filesponge/App.java b/src/main/lombok/org/warp/filesponge/api/FileSourceAvailability.java
similarity index 83%
rename from src/main/lombok/org/warp/filesponge/App.java
rename to src/main/lombok/org/warp/filesponge/api/FileSourceAvailability.java
index b95796f..310eb73 100644
--- a/src/main/lombok/org/warp/filesponge/App.java
+++ b/src/main/lombok/org/warp/filesponge/api/FileSourceAvailability.java
@@ -16,14 +16,11 @@
* along with this program. If not, see .
*/
-package org.warp.filesponge;
+package org.warp.filesponge.api;
-/**
- * FileSponge
- */
-public class App {
-
- public static void main(String[] args) {
- System.out.println("FileSponge");
- }
+public enum FileSourceAvailability {
+ DOWNLOADABLE,
+ DOWNLOADING,
+ DOWNLOADED,
+ FAILED
}
diff --git a/src/main/lombok/org/warp/filesponge/api/MirrorURI.java b/src/main/lombok/org/warp/filesponge/api/MirrorURI.java
new file mode 100644
index 0000000..e21db57
--- /dev/null
+++ b/src/main/lombok/org/warp/filesponge/api/MirrorURI.java
@@ -0,0 +1,21 @@
+/*
+ * FileSponge
+ * Copyright (C) 2020 Andrea Cavalli
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package org.warp.filesponge.api;
+
+public interface MirrorURI {}