1 package net.pterodactylus.sone.main
3 import com.google.inject.*
4 import freenet.client.*
5 import freenet.client.async.ClientContext
6 import freenet.client.async.USKManager
7 import freenet.clients.http.*
9 import freenet.pluginmanager.*
10 import net.pterodactylus.sone.freenet.DefaultHighLevelSimpleClientCreator
11 import net.pterodactylus.sone.freenet.HighLevelSimpleClientCreator
12 import net.pterodactylus.sone.freenet.plugin.*
13 import javax.inject.Provider
14 import javax.inject.Singleton
17 * Guice [Module] that supplies some objects that are in fact supplied by the Freenet node.
19 class FreenetModule(private val pluginRespirator: PluginRespirator) : Module {
21 override fun configure(binder: Binder): Unit = binder.run {
22 bind(PluginRespiratorFacade::class.java).toProvider(Provider { FredPluginRespiratorFacade(pluginRespirator) }).`in`(Singleton::class.java)
23 bind(PluginConnector::class.java).to(FredPluginConnector::class.java).`in`(Singleton::class.java)
24 bind(Node::class.java).toProvider(Provider { pluginRespirator.node })
25 bind(HighLevelSimpleClient::class.java).toProvider(Provider<HighLevelSimpleClient> { pluginRespirator.hlSimpleClient!! })
26 bind(ToadletContainer::class.java).toProvider(Provider<ToadletContainer> { pluginRespirator.toadletContainer })
27 bind(PageMaker::class.java).toProvider(Provider<PageMaker> { pluginRespirator.pageMaker })
32 fun getSessionManager() = pluginRespirator.getSessionManager("Sone")!!
35 fun getNodeClientCore(node: Node): NodeClientCore =
39 fun getHighLevelSimpleClientCreator(nodeClientCore: NodeClientCore): HighLevelSimpleClientCreator =
40 DefaultHighLevelSimpleClientCreator(nodeClientCore)
43 fun getClientContext(nodeClientCore: NodeClientCore): ClientContext =
44 nodeClientCore.clientContext
47 fun getUskManager(nodeClientCore: NodeClientCore): USKManager =
48 nodeClientCore.uskManager