/** Do content negotiation as an external Web Service @param $accept Accepted mime types (HTTP header) @param $accept_charset Accepted charsets (HTTP header) @param $accept_encoding Accepted encodings (HTTP header) @param $accept_language Accepted languages (HTTP header) @return returns NULL @author Frederick Giasson, Structured Dynamics LLC. */ public function ws_conneg($accept, $accept_charset, $accept_encoding, $accept_language) { $this->conneg = new Conneg($accept, $accept_charset, $accept_encoding, $accept_language, CrudDelete::$supportedSerializations); // Check for errors if ($this->uri == "") { $this->conneg->setStatus(400); $this->conneg->setStatusMsg("Bad Request"); $this->conneg->setStatusMsgExt($this->errorMessenger->_200->name); $this->conneg->setError($this->errorMessenger->_200->id, $this->errorMessenger->ws, $this->errorMessenger->_200->name, $this->errorMessenger->_200->description, "", $this->errorMessenger->_200->level); return; } if ($this->dataset == "") { $this->conneg->setStatus(400); $this->conneg->setStatusMsg("Bad Request"); $this->conneg->setStatusMsgExt($this->errorMessenger->_201->name); $this->conneg->setError($this->errorMessenger->_201->id, $this->errorMessenger->ws, $this->errorMessenger->_201->name, $this->errorMessenger->_201->description, "", $this->errorMessenger->_201->level); return; } // Check if the dataset is created $ws_dr = new DatasetRead($this->dataset, "false", "self", $this->wsf_local_ip); // Here the one that makes the request is the WSF (internal request). $ws_dr->pipeline_conneg($this->conneg->getAccept(), $this->conneg->getAcceptCharset(), $this->conneg->getAcceptEncoding(), $this->conneg->getAcceptLanguage()); $ws_dr->process(); if ($ws_dr->pipeline_getResponseHeaderStatus() != 200) { $this->conneg->setStatus($ws_dr->pipeline_getResponseHeaderStatus()); $this->conneg->setStatusMsg($ws_dr->pipeline_getResponseHeaderStatusMsg()); $this->conneg->setStatusMsgExt($ws_dr->pipeline_getResponseHeaderStatusMsgExt()); $this->conneg->setError($ws_dr->pipeline_getError()->id, $ws_dr->pipeline_getError()->webservice, $ws_dr->pipeline_getError()->name, $ws_dr->pipeline_getError()->description, $ws_dr->pipeline_getError()->debugInfo, $ws_dr->pipeline_getError()->level); return; } }
$mtime = explode(' ', $mtime); $mtime = $mtime[1] + $mtime[0]; $starttime = $mtime; $start_datetime = date("Y-m-d h:i:s"); $requester_ip = "0.0.0.0"; if (isset($_SERVER['REMOTE_ADDR'])) { $requester_ip = $_SERVER['REMOTE_ADDR']; } $parameters = ""; if (isset($_SERVER['REQUEST_URI'])) { $parameters = $_SERVER['REQUEST_URI']; $pos = strpos($parameters, "?"); if ($pos !== FALSE) { $parameters = substr($parameters, $pos, strlen($parameters) - $pos); } } elseif (isset($_SERVER['PHP_SELF'])) { $parameters = $_SERVER['PHP_SELF']; } $ws_dr = new DatasetRead($uri, $meta, $registered_ip, $requester_ip, $interface, $version); $ws_dr->ws_conneg(isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : "", isset($_SERVER['HTTP_ACCEPT_CHARSET']) ? $_SERVER['HTTP_ACCEPT_CHARSET'] : "", isset($_SERVER['HTTP_ACCEPT_ENCODING']) ? $_SERVER['HTTP_ACCEPT_ENCODING'] : "", isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : ""); $ws_dr->process(); $ws_dr->ws_respond($ws_dr->ws_serialize()); $mtime = microtime(); $mtime = explode(" ", $mtime); $mtime = $mtime[1] + $mtime[0]; $endtime = $mtime; $totaltime = $endtime - $starttime; if ($ws_dr->isLoggingEnabled()) { $logger = new Logger("dataset_read", $requester_ip, "?uri=" . $uri . "®istered_ip=" . $registered_ip . "&requester_ip={$requester_ip}", isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : "", $start_datetime, $totaltime, $ws_dr->pipeline_getResponseHeaderStatus(), isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ""); } //@}