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
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)

View File

@@ -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(

View File

@@ -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

View File

@@ -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()

View File

@@ -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)
}
}