mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-14 23:56:07 +09:00
- Test InputStream() on VirtualComputer (blocking/unblocking using simple semaphore) -- no more dirty lua impl of io.read - Typealias Kotlin 1.1 - Primitive box drawing on VideoCard - Removing unnecessary fonts Former-commit-id: cece88af3a3430678e685856eec78b4a9d598b4f Former-commit-id: 22eed3a7beb9b4cb34636cbab2ff0e94989bdb31
42 lines
1.2 KiB
Kotlin
42 lines
1.2 KiB
Kotlin
package net.torvald.terrarum.virtualcomputer.peripheral
|
|
|
|
import org.luaj.vm2.Globals
|
|
import net.torvald.terrarum.virtualcomputer.computer.TerrarumComputer
|
|
import org.luaj.vm2.LuaTable
|
|
import org.luaj.vm2.LuaValue
|
|
import org.luaj.vm2.lib.OneArgFunction
|
|
import java.io.BufferedReader
|
|
import java.io.InputStreamReader
|
|
import java.net.URL
|
|
|
|
/**
|
|
* Provides internet access.
|
|
*
|
|
* Created by minjaesong on 16-09-24.
|
|
*/
|
|
internal class PeripheralInternet(val host: TerrarumComputer)
|
|
: Peripheral("internet"){
|
|
|
|
override fun loadLib(globals: Globals) {
|
|
globals["internet"] = LuaTable()
|
|
globals["internet"]["fetch"] = FetchWebPage()
|
|
}
|
|
|
|
class FetchWebPage() : OneArgFunction() {
|
|
override fun call(urlstr: LuaValue): LuaValue {
|
|
val url = URL(urlstr.checkjstring())
|
|
val inputstream = BufferedReader(InputStreamReader(url.openStream()))
|
|
|
|
var inline = ""
|
|
var readline = inputstream.readLine()
|
|
while (readline != null) {
|
|
inline += readline
|
|
readline = inputstream.readLine()
|
|
}
|
|
inputstream.close()
|
|
|
|
return LuaValue.valueOf(inline)
|
|
}
|
|
}
|
|
|
|
} |