diff --git a/app/src/main/java/com/bartlomiejpluta/ttsserver/core/lua/lib/ServerLibrary.kt b/app/src/main/java/com/bartlomiejpluta/ttsserver/core/lua/lib/ServerLibrary.kt new file mode 100644 index 0000000..d44e055 --- /dev/null +++ b/app/src/main/java/com/bartlomiejpluta/ttsserver/core/lua/lib/ServerLibrary.kt @@ -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 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/bartlomiejpluta/ttsserver/core/lua/sandbox/SandboxFactory.kt b/app/src/main/java/com/bartlomiejpluta/ttsserver/core/lua/sandbox/SandboxFactory.kt index 2a16077..a97e109 100644 --- a/app/src/main/java/com/bartlomiejpluta/ttsserver/core/lua/sandbox/SandboxFactory.kt +++ b/app/src/main/java/com/bartlomiejpluta/ttsserver/core/lua/sandbox/SandboxFactory.kt @@ -1,9 +1,6 @@ package com.bartlomiejpluta.ttsserver.core.lua.sandbox -import com.bartlomiejpluta.ttsserver.core.lua.lib.HTTPLibrary -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.lib.* import org.luaj.vm2.Globals import org.luaj.vm2.LoadState import org.luaj.vm2.compiler.LuaC @@ -16,6 +13,7 @@ import org.luaj.vm2.lib.jse.JseOsLib class SandboxFactory( private val utilLibrary: UtilLibrary, + private val serverLibrary: ServerLibrary, private val httpLibrary: HTTPLibrary, private val ttsLibrary: TTSLibrary, private val sonosLibrary: SonosLibrary @@ -28,6 +26,7 @@ class SandboxFactory( it.load(JseMathLib()) it.load(JseOsLib()) it.load(utilLibrary) + it.load(serverLibrary) it.load(httpLibrary) it.load(ttsLibrary) it.load(sonosLibrary) diff --git a/app/src/main/java/com/bartlomiejpluta/ttsserver/core/util/NetworkUtil.kt b/app/src/main/java/com/bartlomiejpluta/ttsserver/core/util/NetworkUtil.kt index b089403..5becff6 100644 --- a/app/src/main/java/com/bartlomiejpluta/ttsserver/core/util/NetworkUtil.kt +++ b/app/src/main/java/com/bartlomiejpluta/ttsserver/core/util/NetworkUtil.kt @@ -9,13 +9,15 @@ import java.net.InetAddress class NetworkUtil(private val context: Context, private val preferences: SharedPreferences) { - val serverAddress: String - get() = "http://${getIpAddress()}:${preferences.getInt(PreferenceKey.PORT, 8000)}" + val port: Int + get() = preferences.getInt(PreferenceKey.PORT, 8000) - fun getIpAddress(): String { - return (context.getApplicationContext().getSystemService(WIFI_SERVICE) as WifiManager).let { - inetAddress(it.dhcpInfo.ipAddress).toString().substring(1) - } + val url: String + get() = "http://$address:$port" + + 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( diff --git a/app/src/main/java/com/bartlomiejpluta/ttsserver/di/module/LuaModule.kt b/app/src/main/java/com/bartlomiejpluta/ttsserver/di/module/LuaModule.kt index ce14347..3bdde39 100644 --- a/app/src/main/java/com/bartlomiejpluta/ttsserver/di/module/LuaModule.kt +++ b/app/src/main/java/com/bartlomiejpluta/ttsserver/di/module/LuaModule.kt @@ -1,13 +1,11 @@ package com.bartlomiejpluta.ttsserver.di.module import android.content.Context -import com.bartlomiejpluta.ttsserver.core.lua.lib.HTTPLibrary -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.lib.* import com.bartlomiejpluta.ttsserver.core.lua.loader.EndpointLoader import com.bartlomiejpluta.ttsserver.core.lua.sandbox.SandboxFactory import com.bartlomiejpluta.ttsserver.core.tts.engine.TTSEngine +import com.bartlomiejpluta.ttsserver.core.util.NetworkUtil import dagger.Module import dagger.Provides import javax.inject.Singleton @@ -24,15 +22,20 @@ class LuaModule { @Singleton fun sandboxFactory( utilLibrary: UtilLibrary, + serverLibrary: ServerLibrary, httpLibrary: HTTPLibrary, ttsLibrary: TTSLibrary, sonosLibrary: SonosLibrary ) = - SandboxFactory(utilLibrary, httpLibrary, ttsLibrary, sonosLibrary) + SandboxFactory(utilLibrary, serverLibrary, httpLibrary, ttsLibrary, sonosLibrary) @Provides @Singleton - fun extraLibrary() = UtilLibrary() + fun utilLibrary() = UtilLibrary() + + @Provides + @Singleton + fun serverLibrary(networkUtil: NetworkUtil) = ServerLibrary(networkUtil) @Provides @Singleton diff --git a/app/src/main/java/com/bartlomiejpluta/ttsserver/service/notification/ForegroundNotificationFactory.kt b/app/src/main/java/com/bartlomiejpluta/ttsserver/service/notification/ForegroundNotificationFactory.kt index 211d428..9930a85 100644 --- a/app/src/main/java/com/bartlomiejpluta/ttsserver/service/notification/ForegroundNotificationFactory.kt +++ b/app/src/main/java/com/bartlomiejpluta/ttsserver/service/notification/ForegroundNotificationFactory.kt @@ -20,7 +20,7 @@ class ForegroundNotificationFactory( get() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O 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 { createNotificationChannel() diff --git a/app/src/main/java/com/bartlomiejpluta/ttsserver/ui/main/MainActivity.kt b/app/src/main/java/com/bartlomiejpluta/ttsserver/ui/main/MainActivity.kt index ec8d80f..d63bfdf 100644 --- a/app/src/main/java/com/bartlomiejpluta/ttsserver/ui/main/MainActivity.kt +++ b/app/src/main/java/com/bartlomiejpluta/ttsserver/ui/main/MainActivity.kt @@ -80,7 +80,7 @@ class MainActivity : DaggerAppCompatActivity() { ServiceState.RUNNING -> { serverControlButton.setImageResource(R.drawable.ic_power_on) 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) } }