diff --git a/geoapi/api/Api.php b/geoapi/api/Api.php index fa8abc2..958dddb 100644 --- a/geoapi/api/Api.php +++ b/geoapi/api/Api.php @@ -4,7 +4,10 @@ namespace api; include_once "../../global.inc.php"; include_once PATH_DATABASE . "/SQLManager.php"; +include_once PATH_UTILITTY . "/XmlManager.php"; +include_once PATH_UTILITTY . "/JsonManager.php"; require_once PATH_3PARTY . "/Slim/Slim.php"; + \Slim\Slim::registerAutoloader(); /** @@ -20,15 +23,29 @@ abstract class Api extends \Slim\Slim { */ protected $sqlManager; + /** + * Variable for the serialazarion manager of the api + * @var :SqlManager + */ + protected $serialManager; + protected static $contentypeXML = "application/xml;charset=utf-8"; + protected static $contentypeJson = "application/json;charset=utf-8"; + /** * Default-Constructor */ - public function __construct() { + public function __construct($headers = array()) { $this->connect(); parent::__construct(); - // set content type td xml - $this->contentType("Content-type: application/xml;charset=utf-8"); +// set content type td xml + if ($headers && preg_match('/json/', $headers["Accept"])) { + $this->serialManager = new \utiliy\JsonManager(); + $this->contentType(self::$contentypeJson); + } else { + $this->serialManager = new \utiliy\XmlManager(); + $this->contentType(self::$contentypeXML); + } } /** @@ -36,10 +53,10 @@ abstract class Api extends \Slim\Slim { */ public function __destruct() { - // destroy the sqlManager +// destroy the sqlManager $this->sqlManager->closeConnection(); unset($this->sqlManager); - $this->sqlManager = null; + unset($this->serialManager); } /** diff --git a/geoapi/api/PisApi.php b/geoapi/api/PisApi.php index 7fa43e8..eacc8f3 100644 --- a/geoapi/api/PisApi.php +++ b/geoapi/api/PisApi.php @@ -4,7 +4,6 @@ namespace api; include_once "../../global.inc.php"; include_once PATH_DATABASE . "/PisSqlManager.php"; -include_once PATH_UTILITTY . "/XmlManager.php"; include_once PATH_UTILITTY . "/ArrayManager.php"; require_once PATH_API . "/Api.php"; @@ -30,9 +29,9 @@ class PisApi extends Api { /** * Default-Constructor */ - public function __construct() { + public function __construct($headers = array()) { $this->sqlManager = new \database\PisSqlManager(); - parent::__construct(); + parent::__construct($headers); } /** @@ -51,7 +50,8 @@ class PisApi extends Api { $pidList = \utiliy\ArrayManager::removeEmptyItmes($queryArgs); if (count($pidList) < $this->maxPid) { $result = $this->sqlManager->sendPisQuery($pidList); - return \utiliy\XmlManager::arrayToPisXml($result); + + return $this->serialManager->arrayToPis($result); } return NULL; } diff --git a/geoapi/api/PssApi.php b/geoapi/api/PssApi.php index f35dcd8..c39ff21 100644 --- a/geoapi/api/PssApi.php +++ b/geoapi/api/PssApi.php @@ -30,9 +30,9 @@ class PssApi extends Api { /** * Default-Constructor */ - public function __construct() { + public function __construct($headers = array()) { $this->sqlManager = new \database\PssSqlManager(); - parent::__construct(); + parent::__construct($headers); } /** @@ -52,7 +52,7 @@ class PssApi extends Api { if (count($pidList) < $this->maxPid) { $result = $this->sqlManager->sendPssQuery($pidList); - return \utiliy\XmlManager::arrayToPssXml($result); + return $this->serialManager->arrayTopis($result); } return NULL; } diff --git a/geoapi/api/SpsApi.php b/geoapi/api/SpsApi.php index 65c53ff..c25b7a1 100644 --- a/geoapi/api/SpsApi.php +++ b/geoapi/api/SpsApi.php @@ -4,7 +4,6 @@ namespace api; include_once "../../global.inc.php"; include_once PATH_DATABASE . "/SpsSqlManager.php"; -include_once PATH_UTILITTY . "/XmlManager.php"; require_once PATH_API . "/Api.php"; /** @@ -113,9 +112,9 @@ class SpsApi extends Api { /** * Default-Constructor */ - public function __construct() { + public function __construct($headers = array()) { $this->sqlManager = new \database\SpsSqlManager(); - parent::__construct(); + parent::__construct($headers); } /** @@ -132,7 +131,7 @@ class SpsApi extends Api { */ public function sendSpsAliasQuery($queryArgs) { $result = $this->sqlManager->sendSpsAliasQuery($queryArgs); - return \utiliy\XmlManager::arrayToSpsXml($result); + return $this->serialManager->arrayToSps($result); } /** @@ -158,7 +157,7 @@ class SpsApi extends Api { // send querry $result = $this->sqlManager->sendSpsCoordinateQuery($queryArgs); - return \utiliy\XmlManager::arrayToSpsXml($result); + return $this->serialManager->arrayToSps($result); } /** diff --git a/geoapi/service/pis/index.php b/geoapi/service/pis/index.php index 5d66718..d130870 100644 --- a/geoapi/service/pis/index.php +++ b/geoapi/service/pis/index.php @@ -3,8 +3,9 @@ include_once "../../global.inc.php"; require_once PATH_API . "/PisApi.php"; +$headers = apache_request_headers(); // instance a new api -$app = new \api\PisApi(); +$app = new \api\PisApi($headers); // HTTP-Get-Method $app->get(\api\PisApi::$routeParameterPids, function ($pid) use ($app) { diff --git a/geoapi/service/pss/index.php b/geoapi/service/pss/index.php index 61bcbab..e6b37bb 100644 --- a/geoapi/service/pss/index.php +++ b/geoapi/service/pss/index.php @@ -3,8 +3,9 @@ include_once "../../global.inc.php"; require_once PATH_API . "/PssApi.php"; +$headers = apache_request_headers(); // instance a new api -$app = new \api\PssApi(); +$app = new \api\PssApi($headers); // HTTP-Get-Method $app->get(\api\PssApi::$routeParameterPids, function ($pid) use ($app) { diff --git a/geoapi/service/sps/index.php b/geoapi/service/sps/index.php index 9e33d0f..cb1d191 100644 --- a/geoapi/service/sps/index.php +++ b/geoapi/service/sps/index.php @@ -2,9 +2,10 @@ include_once "../../global.inc.php"; require_once PATH_API . "/SpsApi.php"; +$headers = apache_request_headers(); // instance a new api -$app = new \api\SpsApi(); +$app = new \api\SpsApi($headers); // HTTP-Get-Methods $app->get(\api\SpsApi::$routeParameterAlias, function ($alias) use ($app) { diff --git a/geoapi/utility/JsonManager.php b/geoapi/utility/JsonManager.php index 6874b8d..2f77641 100644 --- a/geoapi/utility/JsonManager.php +++ b/geoapi/utility/JsonManager.php @@ -3,13 +3,14 @@ namespace utiliy; include_once "../../global.inc.php"; +require_once PATH_UTILITTY . "/SerialManager.php"; /** * The XmlManager provides some xml-methods * @author stubbfel * @since 25.06.2013 */ -class JsonManager { +class JsonManager implements SerialManager { /** * Name for the sap item @@ -93,7 +94,7 @@ class JsonManager { // add placeinformation item $placeInfo = array(JsonManager::$placeInfoName => $row[\database\PisSqlManager::$infName], - JsonManager::$placeInfoValueName => utf8_encode($row[\database\PisSqlManager::$infValue])); + JsonManager::$placeInfoValueName => utf8_encode($row[\database\PisSqlManager::$infValue])); array_push($place, $placeInfo); } return json_encode($infos); @@ -130,6 +131,18 @@ class JsonManager { return json_encode($services); } + public function arrayToSps($result) { + return JsonManager::arrayToSpsJson($result); + } + + public function arrayToPss($result) { + return JsonManager::arrayToPssJson($result); + } + + public function arrayToPis($result) { + return JsonManager::arrayToPisJson($result); + } + } ?> diff --git a/geoapi/utility/SerialManager.php b/geoapi/utility/SerialManager.php new file mode 100644 index 0000000..55068d6 --- /dev/null +++ b/geoapi/utility/SerialManager.php @@ -0,0 +1,15 @@ + diff --git a/geoapi/utility/XmlManager.php b/geoapi/utility/XmlManager.php index 8465a44..edac86d 100644 --- a/geoapi/utility/XmlManager.php +++ b/geoapi/utility/XmlManager.php @@ -3,13 +3,14 @@ namespace utiliy; include_once "../../global.inc.php"; +require_once PATH_UTILITTY . "/SerialManager.php"; /** * The XmlManager provides some xml-methods * @author stubbfel * @since 25.06.2013 */ -class XmlManager { +class XmlManager implements SerialManager{ /** * a default xml document @@ -157,6 +158,18 @@ class XmlManager { } return $xml->asXML(); } + + public function arrayToSps($result) { + return XmlManager::arrayToSpsXml($result); + } + + public function arrayToPis($result){ + return XmlManager::arrayToPisXml($result); + } + + public function arrayToPss($result) { + return XmlManager::arrayToPssXml($result); + } }