Example #1
0
    if ($req->isGet() && !$function) {
        return ApiMiddleware::result($instance);
    }
    // allow for JSON input or $_POST
    $input = $req->headers('CONTENT-TYPE') === 'application/json' ? array_merge($req->params(), (array) json_decode(file_get_contents('php://input'))) : $req->params();
    // create request?
    if ($req->isPost() && !$function) {
        return ApiMiddleware::result(call_user_func_array(array($model, 'create'), array($input)));
    }
    // update request?
    if ($req->isPut() && !$function) {
        return ApiMiddleware::result(call_user_func_array(array($instance, 'update'), array($input)));
    }
    // delete request?
    if ($req->isDelete() && $id !== false && !$function) {
        return ApiMiddleware::result(call_user_func_array(array($model, 'trash'), array($id, $input)));
    }
    if ($function) {
        if (ApiMiddleware::isCallable($model, $function)) {
            if ($id !== false) {
                return ApiMiddleware::result(call_user_func_array(array($instance, $function), array($input)));
            } else {
                return ApiMiddleware::result(call_user_func_array(array($model, $function), array($input)));
            }
        } else {
            throw new AccessException();
        }
    } else {
        throw new AccessException(null, 404);
    }
})->via('GET', 'POST', 'PUT', 'DELETE');