Add ServerLibrary
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user