Add ServerLibrary

This commit is contained in:
2020-07-02 22:12:18 +02:00
parent 81de38aa97
commit 0eb71bcb8e
6 changed files with 41 additions and 18 deletions

View File

@@ -0,0 +1,19 @@
package com.bartlomiejpluta.ttsserver.core.lua.lib
import com.bartlomiejpluta.ttsserver.core.util.NetworkUtil
import org.luaj.vm2.LuaValue
import org.luaj.vm2.lib.TwoArgFunction
class ServerLibrary(private val networkUtil: NetworkUtil) : TwoArgFunction() {
override fun call(modname: LuaValue, env: LuaValue): LuaValue {
val server = LuaValue.tableOf().apply {
set("port", networkUtil.port)
set("address", networkUtil.address)
set("url", networkUtil.url)
}
env.set("server", server)
return LuaValue.NIL
}
}

View File

@@ -1,9 +1,6 @@
package com.bartlomiejpluta.ttsserver.core.lua.sandbox package com.bartlomiejpluta.ttsserver.core.lua.sandbox
import com.bartlomiejpluta.ttsserver.core.lua.lib.HTTPLibrary import com.bartlomiejpluta.ttsserver.core.lua.lib.*
import com.bartlomiejpluta.ttsserver.core.lua.lib.SonosLibrary
import com.bartlomiejpluta.ttsserver.core.lua.lib.TTSLibrary
import com.bartlomiejpluta.ttsserver.core.lua.lib.UtilLibrary
import org.luaj.vm2.Globals import org.luaj.vm2.Globals
import org.luaj.vm2.LoadState import org.luaj.vm2.LoadState
import org.luaj.vm2.compiler.LuaC import org.luaj.vm2.compiler.LuaC
@@ -16,6 +13,7 @@ import org.luaj.vm2.lib.jse.JseOsLib
class SandboxFactory( class SandboxFactory(
private val utilLibrary: UtilLibrary, private val utilLibrary: UtilLibrary,
private val serverLibrary: ServerLibrary,
private val httpLibrary: HTTPLibrary, private val httpLibrary: HTTPLibrary,
private val ttsLibrary: TTSLibrary, private val ttsLibrary: TTSLibrary,
private val sonosLibrary: SonosLibrary private val sonosLibrary: SonosLibrary
@@ -28,6 +26,7 @@ class SandboxFactory(
it.load(JseMathLib()) it.load(JseMathLib())
it.load(JseOsLib()) it.load(JseOsLib())
it.load(utilLibrary) it.load(utilLibrary)
it.load(serverLibrary)
it.load(httpLibrary) it.load(httpLibrary)
it.load(ttsLibrary) it.load(ttsLibrary)
it.load(sonosLibrary) it.load(sonosLibrary)

View File

@@ -9,13 +9,15 @@ import java.net.InetAddress
class NetworkUtil(private val context: Context, private val preferences: SharedPreferences) { class NetworkUtil(private val context: Context, private val preferences: SharedPreferences) {
val serverAddress: String val port: Int
get() = "http://${getIpAddress()}:${preferences.getInt(PreferenceKey.PORT, 8000)}" get() = preferences.getInt(PreferenceKey.PORT, 8000)
fun getIpAddress(): String { val url: String
return (context.getApplicationContext().getSystemService(WIFI_SERVICE) as WifiManager).let { get() = "http://$address:$port"
inetAddress(it.dhcpInfo.ipAddress).toString().substring(1)
} val address: String
get() = (context.getApplicationContext().getSystemService(WIFI_SERVICE) as WifiManager).let {
inetAddress(it.dhcpInfo.ipAddress).toString().substring(1)
} }
private fun inetAddress(hostAddress: Int) = byteArrayOf( private fun inetAddress(hostAddress: Int) = byteArrayOf(

View File

@@ -1,13 +1,11 @@
package com.bartlomiejpluta.ttsserver.di.module package com.bartlomiejpluta.ttsserver.di.module
import android.content.Context import android.content.Context
import com.bartlomiejpluta.ttsserver.core.lua.lib.HTTPLibrary import com.bartlomiejpluta.ttsserver.core.lua.lib.*
import com.bartlomiejpluta.ttsserver.core.lua.lib.SonosLibrary
import com.bartlomiejpluta.ttsserver.core.lua.lib.TTSLibrary
import com.bartlomiejpluta.ttsserver.core.lua.lib.UtilLibrary
import com.bartlomiejpluta.ttsserver.core.lua.loader.EndpointLoader import com.bartlomiejpluta.ttsserver.core.lua.loader.EndpointLoader
import com.bartlomiejpluta.ttsserver.core.lua.sandbox.SandboxFactory import com.bartlomiejpluta.ttsserver.core.lua.sandbox.SandboxFactory
import com.bartlomiejpluta.ttsserver.core.tts.engine.TTSEngine import com.bartlomiejpluta.ttsserver.core.tts.engine.TTSEngine
import com.bartlomiejpluta.ttsserver.core.util.NetworkUtil
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import javax.inject.Singleton import javax.inject.Singleton
@@ -24,15 +22,20 @@ class LuaModule {
@Singleton @Singleton
fun sandboxFactory( fun sandboxFactory(
utilLibrary: UtilLibrary, utilLibrary: UtilLibrary,
serverLibrary: ServerLibrary,
httpLibrary: HTTPLibrary, httpLibrary: HTTPLibrary,
ttsLibrary: TTSLibrary, ttsLibrary: TTSLibrary,
sonosLibrary: SonosLibrary sonosLibrary: SonosLibrary
) = ) =
SandboxFactory(utilLibrary, httpLibrary, ttsLibrary, sonosLibrary) SandboxFactory(utilLibrary, serverLibrary, httpLibrary, ttsLibrary, sonosLibrary)
@Provides @Provides
@Singleton @Singleton
fun extraLibrary() = UtilLibrary() fun utilLibrary() = UtilLibrary()
@Provides
@Singleton
fun serverLibrary(networkUtil: NetworkUtil) = ServerLibrary(networkUtil)
@Provides @Provides
@Singleton @Singleton

View File

@@ -20,7 +20,7 @@ class ForegroundNotificationFactory(
get() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O get() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
private val notificationContent: String private val notificationContent: String
get() = context.getString(R.string.service_notification_text, networkUtil.serverAddress) get() = context.getString(R.string.service_notification_text, networkUtil.url)
fun createForegroundNotification(): Notification { fun createForegroundNotification(): Notification {
createNotificationChannel() createNotificationChannel()

View File

@@ -80,7 +80,7 @@ class MainActivity : DaggerAppCompatActivity() {
ServiceState.RUNNING -> { ServiceState.RUNNING -> {
serverControlButton.setImageResource(R.drawable.ic_power_on) serverControlButton.setImageResource(R.drawable.ic_power_on)
serverStatus.text = serverStatus.text =
getString(R.string.main_activity_server_status_up, networkUtil.serverAddress) getString(R.string.main_activity_server_status_up, networkUtil.url)
promptText.text = getString(R.string.main_activity_prompt_to_stop) promptText.text = getString(R.string.main_activity_prompt_to_stop)
} }
} }