<?php defined('BASEPATH') OR exit('No direct script access allowed');
/*
* Controller for RESTful
*/
class MY_Controller extends CI_Controller{
private $_code = 200;
private $_content_type = "application/json";
private $_allow = true;
private $_error_code = "";
function __construct(){
parent::__construct();
}
function get_referer(){
return $_SERVER['HTTP_REFERER'];
}
function is_method($method){
if($_SERVER['REQUEST_METHOD'] == $method)
return true;
return false;
}
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];
}
function response($data = '', $status = 200, $dataType = "json"){
$this->_code = $status;
$this->set_headers();
if(is_array($data)){
if($dataType == "json"){
echo json_encode($data);
}
if($dataType == "print"){
print_r($data);
}
} else{
if($dataType == "json"){
echo json_encode(array('result'=>$data));
} else{
echo $data;
}
}
exit;
}
function set_headers(){
header("HTTP/1.1 ".$this->_code." ".$this->get_status_message());
header("Content-Type:".$this->_content_type);
}
function authenticate($method = 'GET'){
if($this->is_method($method)){
//Check ip allow on constant list
$ip_access = $_SERVER['REMOTE_ADDR'];
$ip_allow_arr = unserialize(IP_ALLOW);
if(in_array($ip_access, $ip_allow_arr)) {
$this->_allow = true;
}
return $this->_allow;
} else{
return false;
}
}
$this->_error_code = json_encode($code[$constant_name]);
return $this->_error_code;
}
}
Comments