diff --git a/composer.json b/composer.json index d6690f79645441ba523eee7e8f26eedb1f944d6e..a249370555b0f33ad999ad76777532e5ab2ffe51 100644 --- a/composer.json +++ b/composer.json @@ -8,7 +8,7 @@ ], "require": { "silex/silex": ">=2.0", - "jards/eventsapiclient": ">=1.0", + "jards/eventsapiclient": "=3.0", "phpmailer/phpmailer": ">=6.0" }, "require-dev": { diff --git a/composer.lock b/composer.lock index adccc389c7bf515952704c159226a9066b345f52..10498c8f4881dd324feba26ba11e72cda5accb25 100644 --- a/composer.lock +++ b/composer.lock @@ -4,15 +4,15 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "41a9305ad2511010ee0643e4fd3aac1b", + "content-hash": "ab1d79ed4ca1b45fe369574aed53a416", "packages": [ { "name": "jards/eventsapiclient", - "version": "v2.4", + "version": "v3.0", "source": { "type": "git", "url": "https://gitlab.version.fz-juelich.de/jards/EventsAPIClient.git", - "reference": "b36657b4f7bdf30e8f4f9c0ecf1d77af1a6bc085" + "reference": "ebb8d6f6e1d10fcebc46974e4b8886a489ef97fc" }, "require": { "ext-curl": "*", @@ -29,12 +29,12 @@ "type": "library", "autoload": { "psr-4": { - "Swagger\\Client\\": "lib/" + "jards\\eventsapiclient\\Swagger\\Client\\": "lib/" } }, "autoload-dev": { "psr-4": { - "Swagger\\Client\\": "test/" + "jards\\eventsapiclient\\Swagger\\Client\\": "test/" } }, "license": [ @@ -53,7 +53,7 @@ "sdk", "swagger" ], - "time": "2018-01-15T15:34:22+00:00" + "time": "2018-01-16T07:04:14+00:00" }, { "name": "phpmailer/phpmailer", diff --git a/examples/test_swagger_api.php b/examples/test_swagger_api.php index 8aa3f543ebba2dec43919eb65a3462b557621350..3f9a1adff14e017d7859e1fcdf6da2c2d3c4e58f 100644 --- a/examples/test_swagger_api.php +++ b/examples/test_swagger_api.php @@ -1,16 +1,16 @@ <?php require_once __DIR__.'/../vendor/autoload.php'; -use Swagger\Client\Api\EventsApi; +use jards\eventsapiclient\Swagger\Client\Api\EventsApi; /** * Configure the rest api client for the OIDC server access. * - * @return \Swagger\Client\ApiClient the configured api client with access to the REST api + * @return \jards\eventsapiclient\Swagger\Client\ApiClient the configured api client with access to the REST api */ function getDefaultApiClient() { date_default_timezone_set ( 'Europe/Amsterdam' ); - $apiClient = new \Swagger\Client\ApiClient (); + $apiClient = new \jards\eventsapiclient\Swagger\Client\ApiClient (); $apiClient->getConfig ()->setHost ( 'http://localhost/myapps/EventsAPI/rest/events' ); return $apiClient; } diff --git a/lib/EventListener.php b/lib/EventListener.php index 48fe10f4752cf32f83651ac62e7ebeca26d7b43c..7294d1fbadab4b9c973ba3175bf6aa7e4bc08dbb 100644 --- a/lib/EventListener.php +++ b/lib/EventListener.php @@ -10,10 +10,12 @@ interface EventListener{ /** * This is called for every new received event. + * The event is provided in two formats: simple JSON decoded object and Swagger deserialized model. * * @param object $event encoded object from JSON + * @param \jards\eventsapiclient\Swagger\Client\Model\Event $event deserialized event ino Swagger model */ - public function handleEvent($event); + public function handleEvent($jsonevent, $apievent); } ?> \ No newline at end of file diff --git a/lib/EventManagement.php b/lib/EventManagement.php index c8f404c18635057dabaeaa70be688e19a2666111..e09d26fcf1c279e66166ec1558caa90f2c583cf2 100644 --- a/lib/EventManagement.php +++ b/lib/EventManagement.php @@ -5,8 +5,8 @@ namespace jards\eventsapi; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\JsonResponse; -use Swagger\Client\Api\EventsApi; -use Swagger\Client\Model\Event; +use jards\eventsapiclient\Swagger\Client\Api\EventsApi; +use jards\eventsapiclient\Swagger\Client\Model\Event; /** * Listen for events. @@ -132,17 +132,27 @@ class EventManagement{ return new Response("New event sent.", 400); } - $event = json_decode($eventJSON); + $jsonevent = json_decode($eventJSON); - if(!empty($event)){ + if (json_last_error() > 0) { // if response is a string + return new Response("Could not read event.", 400); + } + + $apiClient = new \jards\eventsapiclient\Swagger\Client\ApiClient (); + /** + * @var \jards\eventsapiclient\Swagger\Client\Model\Event $apievent + */ + $apievent = $apiClient->getSerializer()->deserialize($jsonevent, '\jards\eventsapiclient\Swagger\Client\Model\Event'); + + if(!empty($jsonevent)){ foreach($this->handlers as $handler){ if($handler instanceof EventListener){ - $handler->handleEvent($event); + $handler->handleEvent($jsonevent, $apievent); } } } - $name = $event->name; + $name = $apievent->getName(); $newID = $this->getMaxEventID()+1; $fileName = $this->dataFolder.'/'.$newID.'.obj'; @@ -169,7 +179,7 @@ class EventManagement{ public function sendEvent($name, $description, $baseURL='http://localhost/myapps/EventsAPI/rest/events', $certFile = null, $certKey = null, $certPassphrase = null){ date_default_timezone_set ( 'Europe/Amsterdam' ); - $apiClient = new \Swagger\Client\ApiClient (); + $apiClient = new \jards\eventsapiclient\Swagger\Client\ApiClient (); $apiClient->getConfig ()->setHost ( $baseURL ); if(! empty($certFile)){ @@ -192,7 +202,7 @@ class EventManagement{ try{ $eventsApi->eventsPost($event); } - catch(\Swagger\Client\ApiException $e){ + catch(\jards\eventsapiclient\Swagger\Client\ApiException $e){ return false; } diff --git a/lib/MailOnEventListener.php b/lib/MailOnEventListener.php index 5cf12ad353df5997111bbd9866fd413aa5c43cbb..8bf2d0924450afc8959c0b70eeab4fc951a07064 100644 --- a/lib/MailOnEventListener.php +++ b/lib/MailOnEventListener.php @@ -53,11 +53,12 @@ class MailOnEventListener implements EventListener{ /** * - * @param unknown $event + * {@inheritDoc} + * @see \jards\eventsapi\EventListener::handleEvent() */ - public function handleEvent($event){ + public function handleEvent($jsonevent, $apievent){ $config = parse_ini_file(__DIR__.'/../configs/mail.cnf'); - $this->sendmail($config['TARGET'], 'New event received', json_encode($event)); + $this->sendmail($config['TARGET'], 'New event received', json_encode($jsonevent)); } } diff --git a/tests/EventManagementTest.php b/tests/EventManagementTest.php index 38bd75272ebdc5626cacbbd1710b56b379679153..b71d5804cffea16f5c6ff265f4b1692e5ded6c43 100644 --- a/tests/EventManagementTest.php +++ b/tests/EventManagementTest.php @@ -53,7 +53,9 @@ class EventManagementTest extends TestCase{ $url = file_get_contents(__DIR__.'/../configs/myurl.cnf'); - $eventManagement->sendEvent('test event', 'This is only a test', $url); + $success = $eventManagement->sendEvent('test event', 'This is only a test', $url); + + $this->assertTrue($success, "Event sending was not successful"); $newEventIDs = $this->getExistingEventIDs();