diff --git a/lib/EventManagement.php b/lib/EventManagement.php index e09d26fcf1c279e66166ec1558caa90f2c583cf2..431ef763abab750c9deda71a2860a6545a2c60af 100644 --- a/lib/EventManagement.php +++ b/lib/EventManagement.php @@ -178,6 +178,27 @@ class EventManagement{ */ public function sendEvent($name, $description, $baseURL='http://localhost/myapps/EventsAPI/rest/events', $certFile = null, $certKey = null, $certPassphrase = null){ + $event = new Event(); + $event->setName($name); + $event->setDescription($description); + $event->setDate(new \DateTime()); + + return $this->sendEventObject($event, $baseURL, $certFile, $certKey, $certPassphrase); + } + + /** + * Send an event according to swagger API model. + * Prepare any event you like, then send it with this function. + * + * @param Event $eventObject the event object you would like to send + * @param string $baseURL the root URL of the event receiver REST API + * @param string $certFile path to certificate file to use or null to call URL without certificate + * @param string $certKey path to certificate key file, null to avoid usage of key + * @param string $certPassphrase path to passphrase file for key file, null for no passphrase + * + * @return boolean true on success, false on error + */ + public function sendEventObject($eventObject, $baseURL='http://localhost/myapps/EventsAPI/rest/events', $certFile = null, $certKey = null, $certPassphrase = null){ date_default_timezone_set ( 'Europe/Amsterdam' ); $apiClient = new \jards\eventsapiclient\Swagger\Client\ApiClient (); $apiClient->getConfig ()->setHost ( $baseURL ); @@ -194,13 +215,8 @@ class EventManagement{ $eventsApi = new EventsApi($apiClient); - $event = new Event(); - $event->setName($name); - $event->setDescription($description); - $event->setDate(new \DateTime()); - try{ - $eventsApi->eventsPost($event); + $eventsApi->eventsPost($eventObject); } catch(\jards\eventsapiclient\Swagger\Client\ApiException $e){ return false; diff --git a/tests/EventManagementTest.php b/tests/EventManagementTest.php index b71d5804cffea16f5c6ff265f4b1692e5ded6c43..23f0ccea707d290ce42be96efe2bacdecebe7c17 100644 --- a/tests/EventManagementTest.php +++ b/tests/EventManagementTest.php @@ -4,6 +4,7 @@ namespace jards\eventsapi\tests; use PHPUnit\Framework\TestCase; use jards\eventsapi\EventManagement; +use jards\eventsapiclient\Swagger\Client\Model\Event; class EventManagementTest extends TestCase{ @@ -54,13 +55,26 @@ class EventManagementTest extends TestCase{ $url = file_get_contents(__DIR__.'/../configs/myurl.cnf'); $success = $eventManagement->sendEvent('test event', 'This is only a test', $url); - $this->assertTrue($success, "Event sending was not successful"); $newEventIDs = $this->getExistingEventIDs(); - $this->assertNotEquals(join('|', $oldEventIDs), join('|', $newEventIDs), "No event seems to be sent"); + //Send event directly + $event = new Event(); + $event->setName('My event'); + $event->setDescription('Good event for testing'); + $event->setNewState('none'); + $event->setDate(new \DateTime()); + + $success = $eventManagement->sendEventObject($event, $url); + $this->assertTrue($success, "Event sending was not successful"); + + $newEventIDs2 = $this->getExistingEventIDs(); + $this->assertNotEquals(join('|', $newEventIDs), join('|', $newEventIDs2), "No event seems to be sent when sending event object"); + + $newEventIDs = $newEventIDs2; + foreach($newEventIDs as $newID){ if(! in_array($newID, $oldEventIDs)){ $toDelete = __DIR__.'/../data/'.$newID.'.obj';