Skip to main content
Skip table of contents

Verwenden von "Addons" in einer App in edoc automate

In diesem Beispiel erfahren Sie, wie Sie ein eigenes Add-On anhand einer API eines Drittanbieters erstellen können.

Es geht um folgendes Szenario:

Sie möchten eine App erstellen, in der Sie die erdnahen Objekte im All abrufen können, die in den nächsten sieben Tagen der Erde am nächsten gelegen sind.

Im Beispiel wird die öffentlich verfügbare NASA-API (https://api.nasa.gov/) verwendet.

Das Beispiel ist nur ein erster und grober Ansatz, um die Funktion der Add-Ons zu demonstrieren. Im Beispiel werden nicht alle Endpunkte der öffentlichen NASA-API implementiert. Sie können außerdem die zurückgegebenen Daten so aufbereiten, wie Sie es benötigen, z.B. ein anderes Datumsformat auswählen.

So geht's

  1. Erstellen Sie die Struktur für ein Add-On mit dem Namen NasaApi, z.B. über die WebDAV-Browser-Ansicht.

  2. Erstellen Sie eine neue Datei mit den Namen AbstractNasaApiAction.php im Ordner lib des neuen Add-Ons.

  3. Bearbeiten und speichern Sie die Datei AbstractNasaApiAction.php mit folgendem Inhalt:

    PHP
    <?php
    
    namespace edoc\appserver\addons\nasaapi\lib;
    
    use edoc\appserver\addons\NasaApi\datasources\Nasaapi;
    
    use edoc\appserver\app\AbstractAction;
    use edoc\appserver\app\actions\DatasetAction;
    use edoc\appserver\datasources\DataSource;
    
    /**
     * @param DATASOURCE Datasource Specifies the NASA API data source.
     */
    abstract class AbstractNasaApiAction extends AbstractAction
    {
        use DatasetAction;
    
        abstract protected function initNasaApi();
        abstract protected function execNasaApi(Nasaapi $datasource);
    
        final protected function init()
        {
            $this->addParameter("Datasource", self::ACTION_TYPE_DATASOURCE);
    
            $this->initNasaApi();
    
        }
    
        final protected function exec(): AbstractAction
        {
            $dsName = $this->param('datasource');
            $result = [];
    
            try {
                $ds = DataSource::getInstance($dsName);
                //
                if ($ds instanceof Nasaapi) {
                    $result = $this->execNasaApi($ds);
                }
            } catch (\Throwable $e) {
                $this->returnError(
                    "Error in <b>Nasaapi\\GetNeoWs</b><br>\n" .
                    "<b>Message: </b><br>\n" .
                    $e->getMessage(),
                    $e->getCode());
            }
    
            return $this->returnDataset($result);
        }
    }
    
  4. Erstellen Sie eine neue Datei mit den Namen Nasaapi.php im Ordner datasources des neuen Add-Ons.

  5. Bearbeiten und speichern Sie die Datei Nasaapi.php mit folgendem Inhalt:

    PHP
    <?php
    
    namespace edoc\appserver\addons\NasaApi\datasources;
    
    use edoc\appserver\datasources\driver\RestAPI;
    
    class Nasaapi extends RestAPI
    {
    	public function init()
    	{
          $this->addProperty('Api-Key', 'password', '');
    	}
      
      public function details()
      {
        return "NASA API";
      }
      
      public function getNeoWs($startDate = null, $endDate = null)
      {
          $neows = [];
    
          $apiKey = $this->config['Api-Key'];
    
          if (is_null($startDate)) {
              $startDate = date("Y-m-d");
          }
          if (is_null($endDate)) {
            $endDate = date("Y-m-d", time() + (3600 * 24 * 7));
          }
    
          $result = $this->requestGet("https://api.nasa.gov/neo/rest/v1/feed?start_date={$startDate}&end_date={$endDate}&api_key={$apiKey}");
          $result = json_decode($result, true);
    
          $objects = $result["near_earth_objects"];
          foreach ($objects as $date => $dayObjects) {
              foreach ($dayObjects as $dayObject) {
    
                  $neows[] = [
                      'date' => $date,
                      'name' => $dayObject["name"],
                      'nasa_jpl_url' => $dayObject['nasa_jpl_url']
                  ];
              }
          }
          return $neows;
      }
    }
    
  6. Erstellen Sie eine neue Datei mit den Namen GetNeoWs.php im Ordner actions des neuen Add-Ons.

  7. Bearbeiten und speichern Sie die Datei GetNeoWs.php mit folgendem Inhalt und der entsprechenden Beschreibung in der von Ihnen bevorzugten Sprache, in der Sie die Funktion erklären:

    PHP
    <?php
    
    namespace edoc\appserver\addons\NasaApi\actions;
    
    use edoc\appserver\app\actions\DatasetAction;
    use edoc\appserver\addons\NasaApi\lib\AbstractNasaApiAction;
    use edoc\appserver\addons\NasaApi\datasources\Nasaapi;
    
    /**
     * GetNeoWs Action
     *
     * Action to query the nearest earth objects of the next seven days.
     *
     * @return DATASET Returns a list of the nearest object in the next seven days.
     */
    class GetNeoWs extends AbstractNasaApiAction
    {
        use DatasetAction;
        
        protected function initNasaApi()
        {
        }
        
        protected function execNasaApi(Nasaapi $ds)
        {
          return $ds->getNeoWs();
        }
    }
    

Sie können die Datenquelle und Aktion nun in Ihrer App verwenden.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.