<?php
require_once 'XML/RPC/Server.php';

/*
 * Declare the functions, etc.
 */
function returnTimes2($params) {
    $obj = new some_class_name;
    return $obj->returnTimes2($params);
}

function returnAgifbase64($params) {
    $obj = new some_class_name;
    return $obj->returnAgifbase64($params);
}

class some_class_name {
    function returnTimes2($params) {
        $param = $params->getParam(0);

        // This error checking syntax was added in Release 1.3.0
        if (!XML_RPC_Value::isValue($param)) {
            return $param;
        }

        $val = new XML_RPC_Value($param->scalarval() * 2, 'int'); 
        return new XML_RPC_Response($val);
    }

    function returnAgifbase64($params) {
        $param = $params->getParam(0);

        // This error checking syntax was added in Release 1.3.0
        if (!XML_RPC_Value::isValue($param)) {
            return $param;
        }

        $val = new XML_RPC_Value('data:image/' . explode('&',explode('#',str_replace('jpg','jpeg',strtolower(explode('.',$param->scalarval())[-1 + sizeof(explode('.',$param->scalarval()))])))[0])[0] . ';base64,' . base64_encode(file_get_contents($param->scalarval())), 'base64'); 
        return new XML_RPC_Response($val);
    }
}

$some_object = new some_class_name;


/*
 * Establish the dispatch map and XML_RPC server instance.
 */
$server = new XML_RPC_Server(
    array(
        'function_times2' => array(
            'function' => 'returnTimes2'
        ),
        'class_paamayim_nekudotayim_times2' => array(
            'function' => 'some_class_name::returnTimes2'
        ),
        'class_times2' => array(
            'function' => array('some_class_name', 'returnTimes2')
        ),
        'object_times2' => array(
            'function' => array($some_object, 'returnTimes2')
        ),
        'function_agifbase64' => array(
            'function' => 'returnAgifbase64'
        ),
        'class_robert_metcalfe_agifbase64' => array(
            'function' => 'some_class_name::returnAgifbase64'
        ),
        'class_agifbase64' => array(
            'function' => array('some_class_name', 'returnAgifbase64')
        ),
        'object_agifbase64' => array(
            'function' => array($some_object, 'returnAgifbase64')
        ),
    ),
    1  // serviceNow
);
?>
