mlua-socket 0.2.7

A Rust-native implementation of LuaSocket for mlua.
mod core;
mod dns;
mod except;
mod headers;
mod http;
mod ltn12;
mod mime;
mod url;

use mlua::{Error, Lua};

const MODULE_SCRIPT: &str = include_str!("socket.lua");

pub fn preload(lua: &Lua) -> Result<(), Error> {
    // Preload modules
    dns::preload(lua)?;
    headers::preload(lua)?;
    ltn12::preload(lua)?;
    mime::preload(lua)?;
    url::preload(lua)?;
    except::preload(lua)?;
    core::preload(lua)?;
    http::preload(lua)?;

    let script = format!("package.preload['socket'] = function() {MODULE_SCRIPT} end");
    lua.load(script).exec()?;

    Ok(())
}

#[cfg(test)]
mod tests {
    use mlua::{Lua, Table};
    use std::error::Error;

    #[test]
    fn load() -> Result<(), Box<dyn Error>> {
        let lua = Lua::new();
        crate::preload(&lua)?;
        let _module: Table = lua.load("return require('socket')").eval()?;
        // assert!(module.contains_key("core")?);
        // assert!(module.contains_key("dns")?);
        // assert!(module.contains_key("http")?);
        // assert!(module.contains_key("headers")?);
        // assert!(module.contains_key("url")?);
        Ok(())
    }
}