import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import net.pterodactylus.sone.data.Album;
import net.pterodactylus.sone.data.Post;
import net.pterodactylus.sone.data.Sone;
import net.pterodactylus.sone.data.impl.IdOnlySone;
+import net.pterodactylus.sone.database.AlbumProvider;
import net.pterodactylus.sone.database.PostProvider;
import net.pterodactylus.sone.database.SoneProvider;
import net.pterodactylus.util.io.Closer;
HTTP("http://", false),
HTTPS("https://", false),
SONE("sone://", false),
- POST("post://", false);
+ POST("post://", false),
+ ALBUM("album://", false);
private final String scheme;
private final boolean freenetLink;
}
- /** The Sone provider. */
private final SoneProvider soneProvider;
-
- /** The post provider. */
private final PostProvider postProvider;
+ private final AlbumProvider albumProvider;
- /**
- * Creates a new freenet link parser.
- *
- * @param soneProvider
- * The Sone provider
- * @param postProvider
- * The post provider
- */
- public SoneTextParser(SoneProvider soneProvider, PostProvider postProvider) {
+ public SoneTextParser(SoneProvider soneProvider, PostProvider postProvider, AlbumProvider albumProvider) {
this.soneProvider = soneProvider;
this.postProvider = postProvider;
+ this.albumProvider = albumProvider;
}
//
line = line.substring(link.length());
continue;
}
+ if (linkType == LinkType.ALBUM) {
+ Optional<Album> album = albumProvider.getAlbum(link.substring(linkType.getScheme().length()));
+ if (album.isPresent()) {
+ parts.add(new AlbumPart(album.get()));
+ } else {
+ parts.add(new PlainTextPart(link));
+ }
+ line = line.substring(link.length());
+ continue;
+ }
if (linkType.isFreenetLink()) {
FreenetURI uri;