<?php
    class CONF {

        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;
        }
        // For a list of http codes checkout http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
        private function get_status_message(){
            $status = array(
                        200 => 'OK',
                        201 => 'Created',
                        204 => 'No Content',
                        401 => 'Unauthorized',
                        404 => 'Not Found',
                        406 => 'Not Acceptable',
                        409 => 'Conflict',
                        500 => 'Internal Server Error');
            return (isset($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('',206);
                    break;
            }
        }

        private function cleanInputs($data){
            $clean_input = array();
            if(is_array($data)){
                foreach($data as $k => $v){
                    $clean_input[$k] = $this->cleanInputs($v);
                }
            }else{
                $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);
        }


        public function get_header($key) {
            if (!function_exists('apache_request_headers')) {
               function apache_request_headers() {
                    foreach($_SERVER as $key=>$value) {
                        if (substr($key,0,5)=="HTTP_") {
                            $key=str_replace(" ","-",ucwords(strtolower(str_replace("_"," ",substr($key,5)))));
                            $out[$key]=$value;
                        }else{
                            $out[$key]=$value;
                }
                    }
                    return $out;
                }
            }


            $headers = apache_request_headers();
            //print_r(array_keys($headers));
            $value = $headers[$key];

            return $value;
        }
    }
?>
