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
|
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)
|
||||||
|
|||||||
@@ -9,14 +9,16 @@ 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"
|
||||||
|
|
||||||
|
val address: String
|
||||||
|
get() = (context.getApplicationContext().getSystemService(WIFI_SERVICE) as WifiManager).let {
|
||||||
inetAddress(it.dhcpInfo.ipAddress).toString().substring(1)
|
inetAddress(it.dhcpInfo.ipAddress).toString().substring(1)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private fun inetAddress(hostAddress: Int) = byteArrayOf(
|
private fun inetAddress(hostAddress: Int) = byteArrayOf(
|
||||||
(0xff and hostAddress).toByte(),
|
(0xff and hostAddress).toByte(),
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user