libmonsterengine 0.1.0

MonsterEngine is a web server which is desinged for Plamo apps and can be used from various programming languages.
Documentation
use monsterengine::monster_engine_config::*;
use monsterengine::monster_engine_server::*;
use plamo::*;
use std::ffi::{CStr, CString};
use std::os::raw::c_void;

unsafe extern "C" fn callback(_config: *const c_void, request: *const PlamoRequest, response: *mut PlamoResponse) {
    let request_body = std::slice::from_raw_parts(plamo_byte_array_get_body((*request).body), plamo_byte_array_get_body_size((*request).body));
    println!("{}", std::str::from_utf8_unchecked(request_body));
    if (*request).method.defined_http_method >= PLAMO_HTTP_METHOD_PATCH {
        println!("{}", (*request).method.defined_http_method);
    } else {
        println!("{:?}", CStr::from_ptr((*request).method.undefined_http_method));
    }
    let body = "test".as_bytes();
    let plamo_byte_array = plamo_byte_array_new(body.as_ptr(), body.len());
    (*response).body = plamo_byte_array;
}

fn main() {
    let bind = CString::new("0.0.0.0:8888").unwrap();
    let config = monster_engine_config_new();
    monster_engine_config_set_bind(config, bind.as_ptr());
    let app = unsafe { plamo_app_new() };
    let middleware = unsafe { plamo_middleware_new(std::ptr::null(), Some(callback)) };
    unsafe { plamo_app_add_middleware(app, middleware); }
    let monster_engine_server = monster_engine_server_new(app, config);
    monster_engine_server_start(monster_engine_server);
}