Dateiablage über ein Transfer-Adapter
Überblick
Das Bundle bietet die Möglichkeit, eigene Adapter zum Ablegen von Dateien außerhalb des Dateisystems zu konfigurieren. Damit können Dateien z.B. auf einem SFTP-Server abgelegt werden.
Dies ist vor allem relevant für die Ablage von Assets & JSON-Dateien für den Export.
Bereitgestellte Adapter
Sofern in der Konfiguration kein anderer Adapter konfiguriert ist, wird standardmäßig der NfsTransferAdapter genutzt!
Das Bundle stellt standardmäßig die folgenden Adapter zur Verfügung:
NfsTransferAdapter
Identifier: 'nfs'
Klasse: Twocream\ShopwareConnectorBundle\Service\TransferAdapter\NfsTransferAdapter
Beschreibung: Dies ist der Standard-Adapter, hiermit können Dateien auf dem lokalen Dateisystem abgelegt werden
SftpTransferAdapter
Identifier: 'sftp'
Klasse: Twocream\ShopwareConnectorBundle\Service\TransferAdapter\SftpTransferAdapter
Beschreibung: Dieser Adapter ermöglicht es, Daten auf einem SFTP-Server abzulegen
Die Verbindungsdaten zum SFTP-Server können über folgende Umgebungsvariablen definiert werden:
| Identifier | Beschreibung |
|---|---|
SW_CONNECTOR_TRANSFER_ADAPTER_SFTP_HOST | Der Hostname des SFTP-Servers |
SW_CONNECTOR_TRANSFER_ADAPTER_SFTP_USERNAME | Der Nutzername zur Authentifizierung auf dem SFTP-Server |
SW_CONNECTOR_TRANSFER_ADAPTER_SFTP_PASSWORD | Das Passwort zur Authentifizierung auf dem SFTP-Server |
SW_CONNECTOR_TRANSFER_ADAPTER_SFTP_PRIVATE_KEY | Der Private-Key zur Authentifizierung auf dem SFTP-Server |
SW_CONNECTOR_TRANSFER_ADAPTER_SFTP_PASSPHRASE | Die Passphrase zur Authentifizierung mit dem Private-Key |
SW_CONNECTOR_TRANSFER_ADAPTER_SFTP_PORT | Der Port, der zur Verbindung genutzt werden soll (Standardmäßig: 22) |
Eigenen Adapter erstellen
Adapter können durch ihren Identifier über folgende Collection-Klasse bezogen werden: Twocream\ShopwareConnectorBundle\Service\TransferAdapter\TransferAdapterCollector
Interface
Ein TransferAdapter muss das Interface Twocream\ShopwareConnectorBundle\Service\TransferAdapter\TransferAdapterInterface implementieren.
Methoden
Der Adapter muss folgende Methoden implementieren:
| Definition | Argumente | Beschreibung |
|---|---|---|
public static function getIdentifier(): string | Keine Argumente | Rückgabe eines eindeutigen Identifiers für den Adapter (Dies ist der Wert, der in der Konfiguration hinterlegt wird) |
public function exists(string $path): bool | $path: Der zu prüfende Pfad | Prüft, ob der gegebene Pfad existiert |
public function isDirectory(string $path): bool | $path: Der zu prüfende Pfad | Prüft, ob es sich bei dem gegebenen Pfad um einen Ordner handelt |
public function isFile(string $path): bool | $path: Der zu prüfende Pfad | Prüft, ob es sich bei dem gegebenen Pfad um eine Datei handelt |
public function isEmptyDirectory(string $path): bool | $path: Der zu prüfende Pfad | Prüft, ob es sich bei dem gegebenen Pfad um einen leeren Ordner handelt |
public function isAbsolutePath(string $path): bool | $path: Der zu prüfende Pfad | Prüft, ob der gegebene Pfad absolut ist |
public function read(string $path): ?string | $path: Der Pfad der einzulesenden Datei | Liest den Inhalt der gegebenen Datei aus und gibt diesen zurück |
public function dumpFile(string $filename, string $content): bool | $filename: Der Pfad zur Datei$content: Der in die Datei zu schreibende inhalt | Schreibt den gegebenen Inhalt in die gegebene Datei |
public function copy(string $source, string $target, bool $overwriteNewerFiles = false): bool | $source: Der Pfad der zu kopierenden Datei$target: Der Pfad, in dem die Datei kopiert werden soll $overwriteNewerFiles: Bestimmt, ob Dateien überschrieben werden sollen | Kopiert die gegebene Datei in den gegebenen Pfad |
public function rename(string $origin, string $target, bool $overwrite = false): bool | $origin: Der Pfad des zu umzubenennenden Ordners bzw. der zu umzubenennenden Datei$target: Der neue Name $overwrite: Bestimmt, ob bestehende Dateien mit dem selben Namen überschrieben werden sollen | Benennt den gegebenen Ordner bzw. die gegebene Datei in den gegebenen Namen um |
public function remove(string $path): bool | $path: Der Pfad der zu löschenden Datei bzw. des zu löschenden Ordners | Löscht die gegebene Datei bzw. den gegebenen Ordner |
public function mkdir(string $dir, int $mode = 0777): bool | $dir: Der zu erstellende Ordner$mode: Zugriffsrechte im oktalen Format | Erstellt den gegebenen Ordner |
public function copyDirectory(string $sourceDir, string $destinationDir): bool | $sourceDir: Der Pfad des zu kopierenden Ordners$destinationDir: Der Pfad, in dem der Ordner kopiert werden soll | Kopiert den gegebenen Ordner in den gegebenen Pfad |
public function findFiles(string $pattern, string $path, ?int $depth = null, bool $sortByModifiedTime = false, bool $ignoreDotFiles = false): array | $pattern: Das Pattern zum Filtern von Dateinamen (RegEx oder Wildcards)$path: Der Pfad zum zu durchsuchenden Ordner$depth: Anzahl an Unterordner-Ebenen, die durchsucht werden sollen$sortByModifiedTime: Bestimmt, ob nach Änderungszeitpunkt sortiert werden soll$ignoreDotFiles: Bestimmt, ob Punktdateien (z.B. ., .., .env) ignoriert werden sollen | Sucht nach Dateien, die den gegebenen Bedingungen entsprechen (Siehe Argumente) und gibt diese als Array zurück |
public function getFileModifiedTime(string $path): ?int | $path: Der Pfad zur Datei | Gibt den Zeitpunkt der letzten Änderung der gegebenen Datei zurück |
Registrierung
Neue Adapter sind in einer Service-Konfigurationsdatei zu registrieren. Hierbei ist der Service-Tag twocream.shopware_connector.transfer_adapter zwingend zu verwenden.
services:
_defaults:
autowire: true
autoconfigure: true
public: false
twocream.shopware_connector.transfer_adapter_example:
public: true
class: App\Service\TransferAdapter\ExampleTransferAdapter
tags: [ 'twocream.shopware_connector.transfer_adapter' ]