ALS: Kunde
MÖCHTE ICH: Fotos auf einem persistierenden Speicher ablegen können
SO DASS: ich zu einem späteren Zeitpunkt und einem anderen Eingabegerät darauf wieder zugreifen kann.
Details:
Konkret sollen Dateien vom Projekt SAM/Scharr ein einem S3-Bucket auf der IONOS-cloud abgespeichert werden.
Eine abstrakte Schnittstelle/Klasse soll die Zugriffs-Operationen auf S3, einem lokale Dateisystem oder FTP-Server von CAS weg-abstrahieren, z.B.:
abstract class LowLevelStorage() {
abstract public URI store(File file);
abstract public URI store(InputStream stream);
abstract public File retrieve(URI uri)
}
Eine konkrete IonosS3LowLevelStorage Klasse, die parametrisiert wird, erledigt dann sämtliche Zugriffslogik Richtung IONOS.
Richtung WFC gibt es neue Endpunkte, um die sich ein AttachmentController kümmert, z.B.:
GET /attachments
GET /attachments/{id}
Die id ist möglicherweise eine URI, z.B. s3://aerominovasamplebucket.s3-de-central.profitbricks.com/bla.png oder file://./attachments/customerA/bla.jpg, um vorerst eine Verwaltungstabelle einzusparen.
Die Endpunkte werden mittels OpenAPI definiert und der passende Sourcecode für den jeweiligen Client/Server automatisch generiert.
Der AttachmentController usw. sollte ein optionales PlugIn sein, das bei Bedarf in das Dockerfile für den Kunden eingebunden wird.
Siehe auch https://github.com/minova-afis/aero.minova.sam.scharr/issues/14
ALS: Kunde MÖCHTE ICH: Fotos auf einem persistierenden Speicher ablegen können SO DASS: ich zu einem späteren Zeitpunkt und einem anderen Eingabegerät darauf wieder zugreifen kann.
Details:
Eine abstrakte Schnittstelle/Klasse soll die Zugriffs-Operationen auf S3, einem lokale Dateisystem oder FTP-Server von CAS weg-abstrahieren, z.B.:
IonosS3LowLevelStorage
Klasse, die parametrisiert wird, erledigt dann sämtliche Zugriffslogik Richtung IONOS.AttachmentController
kümmert, z.B.:id
ist möglicherweise eine URI, z.B.s3://aerominovasamplebucket.s3-de-central.profitbricks.com/bla.png
oderfile://./attachments/customerA/bla.jpg
, um vorerst eine Verwaltungstabelle einzusparen.AttachmentController
usw. sollte ein optionales PlugIn sein, das bei Bedarf in das Dockerfile für den Kunden eingebunden wird.