trollolodn icon

#php: #CodeIgniter MY_Controller for RESTful json data

trollolodn | PRO | 10/11/13 08:08:38 PM UTC | 0 ⭐ | 185 👁️ | Never ⏰ | []
PHP |

2.61 KB

|

None

|

0 👍

/

0 👎

<?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