<?php

include '../../backend.php';
include 'constants.php';
include 'formarter.php';


$endpoints = array(
    'createuser' => 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
