REST API

RESTinc.php

 

<?php
/* File : Rest.inc.php

class REST {

public $_allow = array();
public $_content_type = “application/json”;
public $_request = array();

private $_method = “”;
private $_code = 200;

public function __construct(){
$this->inputs();
}

public function get_referer(){
return $_SERVER[‘HTTP_REFERER’];
}

public function response($data,$status){
$this->_code = ($status)?$status:200;
$this->set_headers();
echo $data;
exit;
}

private function get_status_message(){
$status = array(
100 => ‘Continue’,
101 => ‘Switching Protocols’,
200 => ‘OK’,
201 => ‘Created’,
202 => ‘Accepted’,
203 => ‘Non-Authoritative Information’,
204 => ‘No Content’,
205 => ‘Reset Content’,
206 => ‘Partial Content’,
300 => ‘Multiple Choices’,
301 => ‘Moved Permanently’,
302 => ‘Found’,
303 => ‘See Other’,
304 => ‘Not Modified’,
305 => ‘Use Proxy’,
306 => ‘(Unused)’,
307 => ‘Temporary Redirect’,
400 => ‘Bad Request’,
401 => ‘Unauthorized’,
402 => ‘Payment Required’,
403 => ‘Forbidden’,
404 => ‘Not Found’,
405 => ‘Method Not Allowed’,
406 => ‘Not Acceptable’,
407 => ‘Proxy Authentication Required’,
408 => ‘Request Timeout’,
409 => ‘Conflict’,
410 => ‘Gone’,
411 => ‘Length Required’,
412 => ‘Precondition Failed’,
413 => ‘Request Entity Too Large’,
414 => ‘Request-URI Too Long’,
415 => ‘Unsupported Media Type’,
416 => ‘Requested Range Not Satisfiable’,
417 => ‘Expectation Failed’,
500 => ‘Internal Server Error’,
501 => ‘Not Implemented’,
502 => ‘Bad Gateway’,
503 => ‘Service Unavailable’,
504 => ‘Gateway Timeout’,
505 => ‘HTTP Version Not Supported’);
return ($status[$this->_code])?$status[$this->_code]:$status[500];
}

public function get_request_method(){
return $_SERVER[‘REQUEST_METHOD’];
}

private function inputs(){
switch($this->get_request_method()){
case “POST”:
$this->_request = $this->cleanInputs($_POST);
break;
case “GET”:
case “DELETE”:
$this->_request = $this->cleanInputs($_GET);
break;
case “PUT”:
parse_str(file_get_contents(“php://input”),$this->_request);
$this->_request = $this->cleanInputs($this->_request);
break;
default:
$this->response(”,406);
break;
}
}

private function cleanInputs($data){
$clean_input = array();
if(is_array($data)){
foreach($data as $k => $v){
$clean_input[$k] = $this->cleanInputs($v);
}
}else{
if(get_magic_quotes_gpc()){
$data = trim(stripslashes($data));
}
$data = strip_tags($data);
$clean_input = trim($data);
}
return $clean_input;
}

private function set_headers(){
header(“HTTP/1.1 “.$this->_code.” “.$this->get_status_message());
header(“Content-Type:”.$this->_content_type);
}
}
?>

Api.php

 

<?php
/*
API Class
*/
require_once(“Rest.inc.php”);

class API extends REST {

public $data = “”;

const DB_SERVER = “carzonrent-db.cwhd81c19z15.ap-southeast-1.rds.amazonaws.com”;
const DB_USER = “root”;
const DB_PASSWORD = “N2o13delhimY”;
const DB = “cor_by_bytesbrick”;
const SITEURL = “http://www.carzonrent.com/rest/&#8221;;

private $db = NULL;

public function __construct(){
parent::__construct(); // Init parent contructor
$this->dbConnect();
// Initiate Database connection
}

/*
* Database connection
*/
private function dbConnect(){
$this->db = mysql_connect(self::DB_SERVER,self::DB_USER,self::DB_PASSWORD);
if($this->db)
mysql_select_db(self::DB,$this->db);
}

/*
* Public method for access api.
* This method dynmically call the method based on the query string
*
*/
public function processApi(){
$func = strtolower(trim(str_replace(“/”,””,$_REQUEST[‘request’])));
if((int)method_exists($this,$func) > 0)
$this->$func();
else
$this->response(”,404); // If the method not exist with in this class, response would be “Page not found”.
}

/*
* getPrivateKey method
* Description: get private key
*/

private function getCustomerSearch(){
// Cross validation if the request method is POST else it will return “Not Acceptable” status
if($this->get_request_method() != “POST”){
$obj = new BaseResponse();
$obj->status = 0;
$obj->msg = “Unauthorized request”;
$obj->errNo = 0;
$this->response(json_encode($obj), 200);
}
//for date wise filtartion
//where entry_date >= ‘2015/02/25’ and entry_date <= ‘2015/06/27’
$startdate=$this->_request[‘startdate’];
$enddate = $this->_request[‘enddate’];
$PageNo = $this->_request[‘PageNo’];
$PageSize = $this->_request[‘PageSize’];

//for pagination
$Page = ($PageNo != “” || $PageNo != 0)?$PageNo:1;
if($Page == 1) {
$limit_str = ” limit ” . ($Page – 1) . “,” . $PageSize;
}else {
$limit_str = ” limit ” . ($Page * $PageSize) . “,” . $PageSize;
}

$where=’where 1=1′;
if(!empty($startdate) && !empty($enddate))
{
$where =’where cs.entry_date >= “‘.$startdate.'” and cs.entry_date <= “‘.$enddate.'” and cs.website=”%myles%”‘;
}
$sql=”SELECT cs.refsite,cs.adunit,cs.channel,cs.campaign,(count(cs.refsite)) AS hits,(count(bn.booking_id)) AS bookingcount FROM customer_search AS cs LEFT JOIN cor_booking_new as bn on cs.coric=bn.coric “.$where.’ group by cs.refsite order by cs.unique_id DESC ‘.$limit_str;
//echo $sql;exit;
$prj = array();
$res = mysql_query($sql, $this->db);
if(mysql_num_rows($res) > 0){
while($arr = mysql_fetch_array($res,MYSQL_ASSOC)){
$prj[] = $arr;
}
}
$sql1 = “SELECT FOUND_ROWS() AS `found_rows`”;
$result = mysql_query($sql1, $this->db);
if(mysql_num_rows($result) > 0){
$ct = mysql_fetch_array($result,MYSQL_ASSOC);
$count = $ct[‘found_rows’];
}

$prjData = new CommentList();
$prjData->TotalRecords = $count;
$prjData->SearchData = array_values($prj);

$obj = new ResponseData();
$obj->status = 1;
$obj->msg = “Customer Search”;
$obj->errNo = 0;
$obj->data = json_encode($prjData);
$this->response(json_encode($obj), 200);
}

private function json($data){
if(is_array($data)){
return json_encode($data);
}
}
}

class BaseResponse{
public $status;
public $errNo;
public $msg;
}

class ResponseData extends BaseResponse {
public $data;
}

class ResponseItem extends BaseResponse {
public $item;
}
class commentList{
public $TotalRecords;
public $SearchData;
}
// Initiate Library

$api = new API;
$api->processApi();
?>

 

dbconnect.php

 

$srvName = “localhost”;
$dbName = “cd”;
$UID = “root”;
$PWD = “ppp”;
$bbEncryptionKey = “encryptbc#123”;
$con = mysql_connect($srvName, $UID, $PWD);
if(!$con)
die(“Unable to connect the database”);
mysql_select_db($dbName, $con);

Advertisements