array('POST'), 'userlogin' => array('POST'), 'startjoblist' => array('POST') ); /* header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Headers", "Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With"); header("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS"); //header("Access-Control-Expose-Headers: Access-Control-Allow-Origin"); header('Content-type: application/json'); if ( "OPTIONS" === $_SERVER['REQUEST_METHOD'] ) { die(); } */ header("Access-Control-Allow-Origin: *"); header("Access-Control-Expose-Headers: Access-Control-Allow-Origin"); header("Access-Control-Allow-Headers: Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With"); header("Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS"); header('Content-type: application/json'); if ( "OPTIONS" === $_SERVER['REQUEST_METHOD'] ) { exit(); } $endpoint = strtolower(str_replace('/svs/user/', '', strtok($_SERVER['REQUEST_URI'],'?'))); $id = 0; // update, get & delete actions require ID if (substr($endpoint,0,19)=='gettransportrequest' || substr($endpoint,0,13)=='updateprofile') { $endpoint = strtok($endpoint,'/'); $id = strtok('/'); } if (!isset($endpoints[$endpoint])) { header('HTTP/1.1 400 Bad Request'); header('Status: 400 Bad Request'); echo "{\"status\":\"Invalid endpoint url\"}"; exit(); } $methods = $endpoints[$endpoint]; if (array_search($_SERVER['REQUEST_METHOD'], $methods)===false) { header('HTTP/1.1 405 Method Not Allowed'); header('Status: 405 Method Not Allowed'); echo "{\"status\":\"Invalid request method\"}"; exit(); } if ($_SERVER["REQUEST_METHOD"] == "POST") { $in = flatten(json_decode(file_get_contents('php://input'), true)); } if ($_SERVER["REQUEST_METHOD"] == "PUT") { parse_str(file_get_contents('php://input'), $in); } switch ($endpoint) { case 'createuser': $in["action"] = WRENCHBOARD_ACCOUNT_PENDING; $in["street1"] = $in["streetaddress"]; $in["zipcode"] = $in["zip"]; $in["country"] = "US"; $in["loc"] = $_SERVER["REMOTE_ADDR"]; break; case 'userlogin': $in["action"] = WRENCHBOARD_ACCOUNT_LOGIN; break; case 'startjoblist': $in["action"] = WRENCHBOARD_START_JOBLIST; break; } $in["pid"] = 100; //file_put_contents("in_debug.log", $in); // DEBUG $out = array(); $ret = $wrenchboard->wrenchboard_api($in, $out); $out['internal_return'] = $ret; // this is reserved array parameter - to be caprured and reoved before you use the out array() header("HTTP/1.1 200 OK"); header("Status: 200 OK"); //$out = array_merge($in, $out); // DEBUG echo json_encode(processOutJson($in, $out)); exit(); function flatten($data, $parentkey="") { $result = array(); foreach ($data as $key=>$val) { if (is_array($val)) { $result = array_merge($result, flatten($val, $parentkey.$key."_")); } else { $result[$parentkey.$key] = $val; } } return $result; } // vi:ts=2