|
|
|
|
@ -8,16 +8,20 @@ import de.srsoftware.umbrella.core.BaseHandler;
@@ -8,16 +8,20 @@ import de.srsoftware.umbrella.core.BaseHandler;
|
|
|
|
|
import de.srsoftware.umbrella.core.ModuleRegistry; |
|
|
|
|
import de.srsoftware.umbrella.core.api.WikiService; |
|
|
|
|
import de.srsoftware.umbrella.core.exceptions.UmbrellaException; |
|
|
|
|
import de.srsoftware.umbrella.core.model.Member; |
|
|
|
|
import de.srsoftware.umbrella.core.model.Token; |
|
|
|
|
import de.srsoftware.umbrella.core.model.UmbrellaUser; |
|
|
|
|
import de.srsoftware.umbrella.core.model.WikiPage; |
|
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
|
import java.util.Optional; |
|
|
|
|
|
|
|
|
|
import static de.srsoftware.umbrella.core.ConnectionProvider.connect; |
|
|
|
|
import static de.srsoftware.umbrella.core.Paths.PAGE; |
|
|
|
|
import static de.srsoftware.umbrella.core.Paths.VIEW; |
|
|
|
|
import static de.srsoftware.umbrella.core.Util.mapValues; |
|
|
|
|
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.missingFieldException; |
|
|
|
|
import static de.srsoftware.umbrella.wiki.Constants.CONFIG_DATABASE; |
|
|
|
|
import static de.srsoftware.umbrella.wiki.Constants.*; |
|
|
|
|
|
|
|
|
|
public class WikiModule extends BaseHandler implements WikiService { |
|
|
|
|
private final WikiDb wikiDb; |
|
|
|
|
@ -39,6 +43,7 @@ public class WikiModule extends BaseHandler implements WikiService {
@@ -39,6 +43,7 @@ public class WikiModule extends BaseHandler implements WikiService {
|
|
|
|
|
var head = path.pop(); |
|
|
|
|
return switch (head) { |
|
|
|
|
case null -> getUserPages(user.get(),ex); |
|
|
|
|
case PAGE -> getPage(path, user.get(), ex); |
|
|
|
|
default -> super.doGet(path,ex); |
|
|
|
|
}; |
|
|
|
|
} catch (UmbrellaException e){ |
|
|
|
|
@ -46,6 +51,26 @@ public class WikiModule extends BaseHandler implements WikiService {
@@ -46,6 +51,26 @@ public class WikiModule extends BaseHandler implements WikiService {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean getPage(Path path, UmbrellaUser user, HttpExchange ex) throws IOException { |
|
|
|
|
var id = path.pop(); |
|
|
|
|
if (id == null) throw missingFieldException(PAGE_ID); |
|
|
|
|
return sendContent(ex, loadMembers(wikiDb.load(id))); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private WikiPage loadMembers(WikiPage page) { |
|
|
|
|
var members = wikiDb.loadMembers(page); |
|
|
|
|
var users = userService().list(null,null,members.keySet()); |
|
|
|
|
var pageMembers = page.members(); |
|
|
|
|
for (var entry : members.entrySet()){ |
|
|
|
|
var userId = entry.getKey(); |
|
|
|
|
var permission = entry.getValue(); |
|
|
|
|
var user = users.get(userId); |
|
|
|
|
pageMembers.put(userId,new Member(user,permission)); |
|
|
|
|
} |
|
|
|
|
return page; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean getUserPages(UmbrellaUser user, HttpExchange ex) throws IOException { |
|
|
|
|
var pageList = wikiDb.listUserPages(user.id()); |
|
|
|
|
return sendContent(ex,pageList); |
|
|
|
|
|