mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-11 23:04:52 +09:00
Convert code indents to tabs to be consistent with the rest of the JavaScript code. This commits covers all of the lua code, some of the hand written JSON code and the lone HTML and CSS files that were not using tabs.
68 lines
1.6 KiB
Lua
68 lines
1.6 KiB
Lua
-- Important: Keep this API in sync with modules/clusterio/api.lua
|
|
local api = {}
|
|
|
|
|
|
local initialized = false
|
|
function api.init()
|
|
if initialized then
|
|
return
|
|
end
|
|
initialized = true
|
|
|
|
if remote.interfaces.clusterio_api then
|
|
api.events = remote.call("clusterio_api", "get_events")
|
|
else
|
|
local null_event = script.generate_event_name()
|
|
api.events = {
|
|
on_instance_updated = null_event,
|
|
on_server_startup = null_event,
|
|
}
|
|
end
|
|
end
|
|
|
|
local function call_api(fn, ...)
|
|
if remote.interfaces.clusterio_api and remote.interfaces.clusterio_api[fn] then
|
|
return remote.call("clusterio_api", fn, ...)
|
|
else
|
|
return nil
|
|
end
|
|
end
|
|
|
|
function api.get_instance_name()
|
|
return call_api("get_instance_name")
|
|
end
|
|
|
|
function api.get_instance_id()
|
|
return call_api("get_instance_id")
|
|
end
|
|
|
|
|
|
function api.send_json(channel, data)
|
|
if not remote.interfaces.clusterio_api then
|
|
return
|
|
end
|
|
|
|
-- Escape bad characters. The question mark is used for separating the
|
|
-- channel name from the payload.
|
|
channel = channel:gsub("([\x00-\x1f?\\])", function(match)
|
|
return "\\x" .. string.format("%02x", match:byte())
|
|
end)
|
|
|
|
data = game.table_to_json(data)
|
|
|
|
-- If there's more than about 4kB of data users running with the Windows
|
|
-- console open will start to experience stuttering, otherwise we could
|
|
-- output about 1 MB of data at a time through stdout.
|
|
if #data < 4000 then
|
|
print("\f$ipc:" .. channel .. "?j" .. data)
|
|
else
|
|
local file_no = remote.call("clusterio_api", "get_file_no")
|
|
local file_name = "clst_" .. file_no .. ".json"
|
|
game.write_file(file_name, data, false, 0)
|
|
print("\f$ipc:" .. channel .. "?f" .. file_name)
|
|
end
|
|
end
|
|
|
|
|
|
return api
|