package org.openrs2.archive import com.fasterxml.jackson.databind.Module import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule import com.google.inject.AbstractModule import com.google.inject.Scopes import com.google.inject.multibindings.Multibinder import org.openrs2.archive.key.HdosKeyDownloader import org.openrs2.archive.key.KeyDownloader import org.openrs2.archive.key.RuneLiteKeyDownloader import org.openrs2.archive.name.NameDownloader import org.openrs2.archive.name.RuneStarNameDownloader import org.openrs2.asm.AsmModule import org.openrs2.buffer.BufferModule import org.openrs2.cache.CacheModule import org.openrs2.db.Database import org.openrs2.http.HttpModule import org.openrs2.json.JsonModule import org.openrs2.net.NetworkModule import org.openrs2.yaml.YamlModule import javax.sql.DataSource public object ArchiveModule : AbstractModule() { override fun configure() { install(AsmModule) install(BufferModule) install(CacheModule) install(HttpModule) install(JsonModule) install(NetworkModule) install(YamlModule) bind(ArchiveConfig::class.java) .toProvider(ArchiveConfigProvider::class.java) .`in`(Scopes.SINGLETON) bind(DataSource::class.java) .toProvider(DataSourceProvider::class.java) .`in`(Scopes.SINGLETON) bind(Database::class.java) .toProvider(DatabaseProvider::class.java) .`in`(Scopes.SINGLETON) Multibinder.newSetBinder(binder(), Module::class.java) .addBinding().to(JavaTimeModule::class.java) val keyBinder = Multibinder.newSetBinder(binder(), KeyDownloader::class.java) keyBinder.addBinding().to(HdosKeyDownloader::class.java) keyBinder.addBinding().to(RuneLiteKeyDownloader::class.java) val nameBinder = Multibinder.newSetBinder(binder(), NameDownloader::class.java) nameBinder.addBinding().to(RuneStarNameDownloader::class.java) } }