<?php
    require_once __DIR__.'/vendor/autoload.php';

    use Ramsey\Uuid\Uuid;
    use PhpAmqpLib\Connection\AMQPStreamConnection;
    use PhpAmqpLib\Message\AMQPMessage;


    $skyaceXAuth = "9051964c-bdf6-4c2d-9a77-c7ff30dc0826";
    $skyaceXForwarded = "skyace01.madasava.com";
    $skyaceXPort = "443";
    $skyaceXRealIP = "102.17.42.43";
    $skyaceXContentType = "application/json";
    $skyaceXRequest = "POST";

    $xAuth = null ;
    $xForwardedFor = null ;
    $xForwardedPort = null ;
    $xRealIP = null ;
    $xContentType = null ;
    $xRequestMethod = null ;
    $xRequestMethod = $_SERVER["REQUEST_METHOD"]  ;
    $continue=false;
    $targetExchange = "ex.skyace.outgoing.smpp52" ;

    $AMQP_host="141.94.199.38";
    $AMQP_port= 5672;
    $AMQP_user="sam";
    $AMQP_pass="sam";
    $AMQP_vhost="skyace";

    $uuid = Uuid::uuid4();
    $mdsvID = $uuid->toString();

    $reqReceived = date('r');
    $headers = getRequestHeaders();


    foreach ($headers as $header => $value) {

            switch($header)
            {
                case "X-Authorisation":
                {
                    $xAuth = $value;
                    break;
                }
                case "Content-Type":
                {
                    $xContentType = $value;
                    break;
                }
                case "X-Forwarded-For":
                {
                    $xForwardedFor = $value;
                    break;
                }
                case "X-Forwarded-Port":
                {
                    $xForwardedPort = $value;
                    break;
                }
                case "X-Real-Ip":
                {
                    $xRealIP = $value;
                    break;
                }
            } // switch($header)
        } //foreach ($headers as $header => $value) {

    $continue=false;
$jsonData = file_get_contents('php://input');
$arrJsonDecoded  = json_decode($jsonData);

    if($xRequestMethod==null || $xRequestMethod!=$skyaceXRequest)
    {
        $arrResp = array();
        $arrResp["status"] = 1 ;
        $arrResp["statusMesage"] = "ERROR 100A01 : Forbidden : Invalid Method " ;
        echo json_encode($arrResp);
        $continue=false;
    }
    else if($xForwardedFor==null || $xForwardedFor!=$skyaceXForwarded)
    {
        $arrResp = array();
          $arrResp["status"] = 2 ;
        $arrResp["statusMesage"] = "ERROR 100A02 : Forbidden : Invalid endpoint host" ;
        echo json_encode($arrResp);
        $continue=false;
    }
    else if($xForwardedPort==null || $xForwardedPort!=$skyaceXPort)
    {
        $arrResp = array();
          $arrResp["status"] = 3 ;
        $arrResp["statusMesage"] = "ERROR 100A03 : Forbidden : Invalid endpoint port " ;
        echo json_encode($arrResp);
        $continue=false;
    }
    else if($xContentType==null || $xContentType!=$skyaceXContentType)
    {
        $arrResp = array();
          $arrResp["status"] = 4 ;
        $arrResp["statusMesage"] = "ERROR 100A04 : Forbidden : Invalid content type " ;
        echo json_encode($arrResp);
        $continue=false;
    }
    else if($xAuth==null || $xAuth!=$skyaceXAuth)
    {
        $arrResp = array();
          $arrResp["status"] = 5 ;
        $arrResp["statusMesage"] = "ERROR 100A05 : Forbidden : Invalid Auth key " ;
        echo json_encode($arrResp);
        $continue=false;
    }
    else if(!isset($arrJsonDecoded->receiver) || !isset($arrJsonDecoded->smstext))
    {
        $arrResp = array();
          $arrResp["status"] = 6 ;
        $arrResp["statusMesage"] = "ERROR 100B01 : Invalid request : missing parameter " ;
        
        echo json_encode($arrResp);
        $continue=false;

    }
    else if(trim($arrJsonDecoded->receiver)=="" || $arrJsonDecoded->receiver==null)
    {
        $arrResp = array();
          $arrResp["status"] = 7 ;
        $arrResp["statusMesage"] = "ERROR 100B02 : Invalid request : mobile number " ;        
        echo json_encode($arrResp);
        $continue=false;

    }
    else if(trim($arrJsonDecoded->smstext)=="" || $arrJsonDecoded->smstext==null)
    {
        $arrResp = array();
          $arrResp["status"] = 8 ;
        $arrResp["statusMesage"] = "ERROR 100B03 : Invalid request : smstext " ;
        
        echo json_encode($arrResp);
        $continue=false;

    }
    else
    {
        $continue=true;
    }



    if($continue)
        {


            $MobileNumber=$arrJsonDecoded->receiver ;
            if(substr($MobileNumber,0,1)!="+")
            {
                $MobileNumber="+" .$MobileNumber;
            }

            $arrResp = new stdClass();
            $arrResp->request = new stdClass();
            $arrResp->request->rcvd = $reqReceived ;
            $arrResp->request->receiver = $MobileNumber;
            $arrResp->request->smstext = $arrJsonDecoded->smstext ;
            $arrResp->response = new stdClass();
            $arrResp->response->mdsvID = $mdsvID;
            $arrResp->response->status = 0;
            $arrResp->response->statusMessage = "marked for send";

            $jsonEncoded = json_encode($arrResp);
            echo $jsonEncoded;


            $arrToSend=array();
            $arrToSend['arrSerRequest'] = array();
            $arrToSend['arrSerRequest']['arrSerRequest'] = array();
            $arrToSend['arrSerRequest']['arrSerRequest']['sender'] = $arrResp->request->receiver ;
            $arrToSend['arrSerRequest']['arrSerRequest']['receiver'] = "8683";
            $arrToSend['arrSerRequest']['arrSerRequest']['text'] = $arrResp->request->smstext ;
            $arrToSend['arrSerRequest']['arrSerRequest']['network'] = "mtml";
            $arrToSend['arrSerRequest']['arrSerRequest']['msgid'] = $mdsvID;
            $arrToSend['arrSerRequest']['arrSerRequest']['procid'] = $mdsvID;
            $arrToSend["strReply"] =$arrResp->request->smstext ;
            $arrToSend["mdsvID"] = $mdsvID;
            $arrToSend["type"] = "skyaceNotif";
            $jsonMQSend = json_encode($arrToSend);



            $connection =new AMQPStreamConnection($AMQP_host, $AMQP_port, $AMQP_user, $AMQP_pass,$AMQP_vhost);
            $channel = $connection->channel();
            $msg = new AMQPMessage($jsonMQSend);
            $channel->basic_publish($msg,  $targetExchange );

        } // if($continue)

?><?php

function getRequestHeaders() {
    $headers = array();
    foreach($_SERVER as $key => $value) {
        if (substr($key, 0, 5) <> 'HTTP_') {
            continue;
        }
        $header = str_replace(' ', '-', ucwords(str_replace('_', ' ', strtolower(substr($key, 5)))));
        $headers[$header] = $value;
    }
    return $headers;
}



?>
