Skip to content

Commit

Permalink
android support! thanks to TachiWeb devs.
Browse files Browse the repository at this point in the history
  • Loading branch information
AriaMoradi committed Jan 2, 2021
1 parent ced07d4 commit 1e46a0c
Show file tree
Hide file tree
Showing 291 changed files with 68,699 additions and 16 deletions.
4 changes: 4 additions & 0 deletions AndroidCompat/Config/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
dependencies {
// Config API
// implementation("com.typesafe:config:1.4.0")
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package xyz.nulldev.ts.config

import org.kodein.di.DI
import org.kodein.di.bind
import org.kodein.di.singleton

class ConfigKodeinModule {
fun create() = DI.Module("ConfigManager") {
//Config module
bind<ConfigManager>() with singleton { GlobalConfigManager }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package xyz.nulldev.ts.config

import com.typesafe.config.Config
import com.typesafe.config.ConfigFactory
import com.typesafe.config.ConfigRenderOptions
import mu.KotlinLogging
import java.io.File

/**
* Manages app config.
*/
open class ConfigManager {
private val generatedModules
= mutableMapOf<Class<out ConfigModule>, ConfigModule>()
val config by lazy { loadConfigs() }

//Public read-only view of modules
val loadedModules: Map<Class<out ConfigModule>, ConfigModule>
get() = generatedModules

open val configFolder: String
get() = System.getProperty("compat-configdirs") ?: "tachiserver-data/config"

val logger = KotlinLogging.logger {}

/**
* Get a config module
*/
inline fun <reified T : ConfigModule> module(): T
= loadedModules[T::class.java] as T

/**
* Get a config module (Java API)
*/
fun <T : ConfigModule> module(type: Class<T>): T
= loadedModules[type] as T

/**
* Load configs
*/
fun loadConfigs(): Config {
val configs = mutableListOf<Config>()

//Load reference config
configs += ConfigFactory.parseResources("reference.conf")

//Load custom configs from dir
File(configFolder).listFiles()?.map {
ConfigFactory.parseFile(it)
}?.filterNotNull()?.forEach {
configs += it.withFallback(configs.last())
}

val config = configs.last().resolve()

logger.debug {
"Loaded config:\n" + config.root().render(ConfigRenderOptions.concise().setFormatted(true))
}

return config
}

fun registerModule(module: ConfigModule) {
generatedModules.put(module.javaClass, module)
}

fun registerModules(vararg modules: ConfigModule) {
modules.forEach {
registerModule(it)
}
}
}

object GlobalConfigManager : ConfigManager()
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package xyz.nulldev.ts.config

import com.typesafe.config.Config

/**
* Abstract config module.
*/
abstract class ConfigModule(config: Config)
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package xyz.nulldev.ts.config

import com.typesafe.config.Config
import java.io.File

class ServerConfig(config: Config) : ConfigModule(config) {
val ip = config.getString("ip")
val port = config.getInt("port")

val allowConfigChanges = config.getBoolean("allowConfigChanges")
val enableWebUi = config.getBoolean("enableWebUi")
val useOldWebUi = config.getBoolean("useOldWebUi")
val prettyPrintApi = config.getBoolean("prettyPrintApi")
// TODO Apply to operation IDs
val disabledApiEndpoints = config.getStringList("disabledApiEndpoints").map(String::toLowerCase)
val enabledApiEndpoints = config.getStringList("enabledApiEndpoints").map(String::toLowerCase)
val httpInitializedPrintMessage = config.getString("httpInitializedPrintMessage")

val useExternalStaticFiles = config.getBoolean("useExternalStaticFiles")
val externalStaticFilesFolder = config.getString("externalStaticFilesFolder")

val rootDir = registerFile(config.getString("rootDir"))
val patchesDir = registerFile(config.getString("patchesDir"))

fun registerFile(file: String): File {
return File(file).apply {
mkdirs()
}
}

companion object {
fun register(config: Config)
= ServerConfig(config.getConfig("ts.server"))
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package xyz.nulldev.ts.config.util

import com.typesafe.config.Config

operator fun Config.get(key: String) = getString(key)
?: throw IllegalStateException("Could not find value for config entry: $key!")
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
xyz.nulldev.ts.api.v2.java.impl.ServerAPIImpl
Binary file added AndroidCompat/Config/src/main/resources/al.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added AndroidCompat/Config/src/main/resources/kitsu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added AndroidCompat/Config/src/main/resources/mal.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 1e46a0c

Please sign in to comment.