Add possibility for disabling endpoints

This commit is contained in:
2020-07-02 12:09:41 +02:00
parent 5db58df705
commit c4038383aa
3 changed files with 26 additions and 24 deletions

View File

@@ -11,7 +11,6 @@ import org.luaj.vm2.LuaClosure
import org.luaj.vm2.LuaNil
import org.luaj.vm2.LuaString
import org.luaj.vm2.LuaTable
import java.util.concurrent.ExecutorService
class EndpointLoader(
private val context: Context,
@@ -27,6 +26,7 @@ class EndpointLoader(
it as? LuaTable
?: throw IllegalArgumentException("Expected single table to be returned")
}
.filter { parseEnabled(it) }
.map { createEndpoint(it) }
}
@@ -63,6 +63,11 @@ class EndpointLoader(
}
?: throw IllegalArgumentException("'consumer' field is required")
private fun parseEnabled(luaTable: LuaTable) = luaTable.get("enabled")
.takeIf { it !is LuaNil }
?.checkboolean()
?: true
private fun parseAccepts(luaTable: LuaTable) = luaTable.get("accepts")
.takeIf { it !is LuaNil }
?.let {

View File

@@ -1,6 +1,5 @@
package com.bartlomiejpluta.ttsserver.core.web.endpoint
import fi.iki.elonen.NanoHTTPD
import fi.iki.elonen.NanoHTTPD.IHTTPSession
import fi.iki.elonen.NanoHTTPD.Response

View File

@@ -29,23 +29,21 @@ class WebServer(
private val sonos: SonosQueue,
private val endpoints: List<Endpoint>
) : NanoHTTPD(port) {
private val queuedEndpoints: List<QueuedEndpoint> = endpoints
.map { it as? QueuedEndpoint }
.filterNotNull()
private val queuedEndpoints = endpoints.mapNotNull { it as? QueuedEndpoint }
private val speakersSilenceSchedulerEnabled: Boolean
get() = preferences.getBoolean(PreferenceKey.ENABLE_SPEAKERS_SILENCE_SCHEDULER, false)
private val sonosSilenceSchedulerEnabled: Boolean
get() = preferences.getBoolean(PreferenceKey.ENABLE_SONOS_SILENCE_SCHEDULER, false)
private val speakersSilenceSchedule: TimeRange
get() = preferences.getString(PreferenceKey.SPEAKERS_SILENCE_SCHEDULE, "")!!
.let { TimeRange.parse(it) }
private val sonosSilenceSchedule: TimeRange
get() = preferences.getString(PreferenceKey.SONOS_SILENCE_SCHEDULE, "")!!
.let { TimeRange.parse(it) }
// private val speakersSilenceSchedulerEnabled: Boolean
// get() = preferences.getBoolean(PreferenceKey.ENABLE_SPEAKERS_SILENCE_SCHEDULER, false)
//
// private val sonosSilenceSchedulerEnabled: Boolean
// get() = preferences.getBoolean(PreferenceKey.ENABLE_SONOS_SILENCE_SCHEDULER, false)
//
// private val speakersSilenceSchedule: TimeRange
// get() = preferences.getString(PreferenceKey.SPEAKERS_SILENCE_SCHEDULE, "")!!
// .let { TimeRange.parse(it) }
//
// private val sonosSilenceSchedule: TimeRange
// get() = preferences.getString(PreferenceKey.SONOS_SILENCE_SCHEDULE, "")!!
// .let { TimeRange.parse(it) }
override fun serve(session: IHTTPSession?): Response {
try {
@@ -112,12 +110,12 @@ class WebServer(
// return newFixedLengthResponse(OK, MIME_JSON, SUCCESS_RESPONSE)
// }
private fun <T> extractBody(session: IHTTPSession, provider: (String) -> T): T {
return mutableMapOf<String, String>().let {
session.parseBody(it)
provider(it["postData"] ?: "{}")
}
}
// private fun <T> extractBody(session: IHTTPSession, provider: (String) -> T): T {
// return mutableMapOf<String, String>().let {
// session.parseBody(it)
// provider(it["postData"] ?: "{}")
// }
// }
// private fun file(session: IHTTPSession, audioFormat: AudioFormat): Response {
// if (!preferences.getBoolean(PreferenceKey.ENABLE_FILE_ENDPOINTS, true)) {