🔀 Merge branch 'release/v82'
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / main / FreenetModule.kt
1 package net.pterodactylus.sone.main
2
3 import com.google.inject.*
4 import freenet.client.*
5 import freenet.clients.http.*
6 import freenet.node.*
7 import freenet.pluginmanager.*
8 import net.pterodactylus.sone.freenet.plugin.*
9 import javax.inject.Provider
10 import javax.inject.Singleton
11
12 /**
13  * Guice [Module] that supplies some objects that are in fact supplied by the Freenet node.
14  */
15 class FreenetModule(private val pluginRespirator: PluginRespirator) : Module {
16
17         override fun configure(binder: Binder): Unit = binder.run {
18                 bind(PluginRespiratorFacade::class.java).toProvider(Provider { FredPluginRespiratorFacade(pluginRespirator) }).`in`(Singleton::class.java)
19                 bind(PluginConnector::class.java).to(FredPluginConnector::class.java).`in`(Singleton::class.java)
20                 bind(Node::class.java).toProvider(Provider { pluginRespirator.node })
21                 bind(HighLevelSimpleClient::class.java).toProvider(Provider<HighLevelSimpleClient> { pluginRespirator.hlSimpleClient!! })
22                 bind(ToadletContainer::class.java).toProvider(Provider<ToadletContainer> { pluginRespirator.toadletContainer })
23                 bind(PageMaker::class.java).toProvider(Provider<PageMaker> { pluginRespirator.pageMaker })
24         }
25
26         @Provides
27         @Singleton
28         fun getSessionManager() = pluginRespirator.getSessionManager("Sone")!!
29
30 }