Add possibility to disable stacktraces on HTTP 500 error responses
This commit is contained in:
@@ -41,9 +41,15 @@ class WebServer(
|
||||
|
||||
throw WebException(BAD_REQUEST, "Unknown error")
|
||||
} catch (e: WebException) {
|
||||
return newFixedLengthResponse(e.status, MIME_JSON, e.json)
|
||||
return handleWebException(e)
|
||||
} catch (e: Exception) {
|
||||
return newFixedLengthResponse(INTERNAL_ERROR, MIME_PLAINTEXT, e.toString())
|
||||
return handleUnknownException(e)
|
||||
}
|
||||
}
|
||||
|
||||
private fun assertThatTTSIsReady() {
|
||||
if (tts.status != TTSStatus.READY) {
|
||||
throw WebException(NOT_ACCEPTABLE, "Server is not ready yet")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,10 +63,16 @@ class WebServer(
|
||||
}
|
||||
}
|
||||
|
||||
private fun assertThatTTSIsReady() {
|
||||
if (tts.status != TTSStatus.READY) {
|
||||
throw WebException(NOT_ACCEPTABLE, "Server is not ready yet")
|
||||
private fun handleWebException(e: WebException) =
|
||||
newFixedLengthResponse(e.status, MIME_JSON, e.json)
|
||||
|
||||
private fun handleUnknownException(e: Exception): Response {
|
||||
val stacktrace = when (preferences.getBoolean(PreferenceKey.ENABLE_HTTP_DEBUG, false)) {
|
||||
true -> e.toString()
|
||||
false -> ""
|
||||
}
|
||||
|
||||
return newFixedLengthResponse(INTERNAL_ERROR, MIME_PLAINTEXT, stacktrace)
|
||||
}
|
||||
|
||||
private fun say(session: IHTTPSession): Response {
|
||||
|
||||
@@ -3,6 +3,7 @@ package io.bartek.ttsserver.ui.preference
|
||||
|
||||
object PreferenceKey {
|
||||
const val PORT = "preference_port"
|
||||
const val ENABLE_HTTP_DEBUG = "preference_http_debug"
|
||||
const val ENABLE_SAY_ENDPOINT = "preference_enable_say_endpoint"
|
||||
const val ENABLE_WAVE_ENDPOINT = "preference_enable_wave_endpoint"
|
||||
const val ENABLE_SONOS_ENDPOINT = "preference_enable_sonos_endpoint"
|
||||
|
||||
@@ -20,6 +20,7 @@ class PreferencesFragment : PreferenceFragmentCompat() {
|
||||
private lateinit var sayEndpointPreference: SwitchPreference
|
||||
private lateinit var waveEndpointPreference: SwitchPreference
|
||||
private lateinit var sonosEndpointPreference: SwitchPreference
|
||||
private lateinit var httpDebugPreference: SwitchPreference
|
||||
private lateinit var ttsEnginePreference: Preference
|
||||
private lateinit var clearSonosCachePreference: Preference
|
||||
|
||||
@@ -55,6 +56,7 @@ class PreferencesFragment : PreferenceFragmentCompat() {
|
||||
setPreferencesFromResource(R.xml.preferences, rootKey)
|
||||
portPreference = findPreference(PreferenceKey.PORT)!!
|
||||
portPreference.setOnBindEditTextListener { it.inputType = InputType.TYPE_CLASS_NUMBER }
|
||||
httpDebugPreference = findPreference(PreferenceKey.ENABLE_HTTP_DEBUG)!!
|
||||
sayEndpointPreference = findPreference(PreferenceKey.ENABLE_SAY_ENDPOINT)!!
|
||||
waveEndpointPreference = findPreference(PreferenceKey.ENABLE_WAVE_ENDPOINT)!!
|
||||
sonosEndpointPreference = findPreference(PreferenceKey.ENABLE_SONOS_ENDPOINT)!!
|
||||
|
||||
@@ -23,12 +23,15 @@
|
||||
<string name="preference_enable_wave_endpoint_title">Enable /wave endpoint</string>
|
||||
<string name="preference_enable_sonos_endpoint_summary">Allow HTTP clients to use /sonos endpoint which enables them to send TTS messages directly to Sonos devices</string>
|
||||
<string name="preference_enable_sonos_endpoint_title">Enable /sonos endpoint</string>
|
||||
<string name="preference_http_debug_summary">Attach the stacktrace to each error HTTP response if available</string>
|
||||
<string name="preference_http_debug_title">Enable HTTP debugging</string>
|
||||
<string name="preference_tts_summary">Go to platform\'s TTS engine settings and adjust its parameters</string>
|
||||
<string name="preference_tts_title">TTS engine settings</string>
|
||||
<string name="preference_invalidate_sonos_cache_summary">Clear application cache directory from already generated Sonos TTS data for given sentences. You typically want to do it when you change the TTS engine\'s voice settings.</string>
|
||||
<string name="preference_invalidate_sonos_cache_title">Invalidate Sonos cache</string>
|
||||
<string name="preference_category_tts">TTS engine</string>
|
||||
<string name="preference_category_server">Server</string>
|
||||
<string name="preference_category_features">Features</string>
|
||||
<string name="preference_category_tts">TTS engine</string>
|
||||
<string name="preference_category_sonos">Sonos</string>
|
||||
<string name="preference_invalidate_sonos_cache_toast">Sonos cache has been invalidated</string>
|
||||
|
||||
|
||||
@@ -9,7 +9,15 @@
|
||||
android:summary="@string/preference_port_summary"
|
||||
android:title="@string/preference_port_title"
|
||||
app:iconSpaceReserved="false" />
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="preference_http_debug"
|
||||
android:summary="@string/preference_http_debug_summary"
|
||||
android:title="@string/preference_http_debug_title"
|
||||
app:iconSpaceReserved="false" />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory android:title="@string/preference_category_features" app:iconSpaceReserved="false">
|
||||
<SwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:key="preference_enable_say_endpoint"
|
||||
@@ -30,7 +38,6 @@
|
||||
android:summary="@string/preference_enable_sonos_endpoint_summary"
|
||||
android:title="@string/preference_enable_sonos_endpoint_title"
|
||||
app:iconSpaceReserved="false" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory android:title="@string/preference_category_tts" app:iconSpaceReserved="false">
|
||||
|
||||
Reference in New Issue
Block a user