All Downloads are FREE. Search and download functionalities are using the official Maven repository.

main.lavalink.server.info.InfoRestHandler.kt Maven / Gradle / Ivy

package lavalink.server.info

import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager
import com.sedmelluq.discord.lavaplayer.tools.PlayerLibrary
import dev.arbjerg.lavalink.api.AudioFilterExtension
import dev.arbjerg.lavalink.protocol.v4.*
import lavalink.server.bootstrap.PluginManager
import lavalink.server.config.ServerConfig
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController

/**
 * Created by napster on 08.03.19.
 */
@RestController
class InfoRestHandler(
    appInfo: AppInfo,
    gitRepoState: GitRepoState,
    audioPlayerManager: AudioPlayerManager,
    pluginManager: PluginManager,
    serverConfig: ServerConfig,
    filterExtensions: List
) {

    private val enabledFilers = (listOf(
        "volume",
        "equalizer",
        "karaoke",
        "timescale",
        "tremolo",
        "vibrato",
        "distortion",
        "rotation",
        "channelMix",
        "lowPass"
    ) + filterExtensions.map { it.name }).filter {
        it !in serverConfig.filters || serverConfig.filters[it] == true
    }

    private val info = Info(
        Version.fromSemver(appInfo.versionBuild),
        appInfo.buildTime,
        Git(gitRepoState.branch, gitRepoState.commitIdAbbrev, gitRepoState.commitTime * 1000),
        System.getProperty("java.version"),
        PlayerLibrary.VERSION,
        audioPlayerManager.sourceManagers.map { it.sourceName },
        enabledFilers,
        Plugins(pluginManager.pluginManifests.map {
            Plugin(it.name, it.version)
        })
    )
    private val version = appInfo.versionBuild

    @GetMapping("/v4/info")
    fun info() = info

    @GetMapping("/version")
    fun version() = version
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy