Page 1 of 1

Simple HTTPS loader in pure Lua

Posted: Mon Dec 28, 2020 4:23 am
by groverburger
Hello everyone!

I found a hack using io.popen to load HTTPS files that might be useful. It's a very short code snippet, no external dependencies required!

Code: Select all

return function (address)
    local query = nil

    -- check if windows or not windows
    if package.config:sub(1,1) == "\\" then
        -- TODO fix the annoying cmd window that pops up here
        query = io.popen("powershell (wget " .. address .. ").Content", "r")
    else
        -- not windows, assuming posix
        query = io.popen("curl -s '" .. address .. "'", "r")
    end

    local httpsResult = query:read("*all")
    query:close()
    return httpsResult
end
I've tested this on Windows 8.1 and MacOS 10.14.6, and I'm relatively confident that this should work on newer OS versions too. This might work on Linux as it uses curl for all non-Windows OSs, but I haven't tested this.

I still don't know of a way to prevent the annoying CMD box that appears in Windows without forking Love itself. Maybe a DLL can be added that adds a workaround? I also don't know of a way to send HTTPS data either. Any info on improving this is appreciated.

Re: Simple HTTPS loader in pure Lua

Posted: Mon Dec 28, 2020 9:06 am
by pgimeno
I've checked in the Vista computer of my mother-in-law, and PowerShell doesn't exist. Löve is supported in Vista, so it looks like Windows 8 is a requirement that any application that uses this trick should specify.

Some Linux users would need to install curl explicitly, not all systems come with it pre-installed. wget is probably more common, but still a separate package in most distributions.

Re: Simple HTTPS loader in pure Lua

Posted: Tue Dec 29, 2020 7:57 am
by zorg
Yep, me being on Win7 also precludes using the snippet since it also lacks powershell. Not sure if wget depends on curl that a relatively new Win10 build included natively (or so i heard) or not, because then the compatibility is even worse.