Devices Feature Erweiterung

* manueller Config Upload wurde integriert
*
This commit is contained in:
Daniel Spitzer
2025-04-15 10:42:39 +02:00
parent cd7abf0607
commit 48edde27ef
3 changed files with 197 additions and 0 deletions

View File

@@ -362,4 +362,65 @@ class DeviceModel
endif;
return json_decode($response);
}
public static function uploadFile($id, $file)
{
$response = "";
if (TT_MBI_API_ENABLE) {
// Überprüfe, ob im $_FILES-Array ein 'files'-Eintrag vorhanden ist
// und ob mindestens eine Datei hochgeladen wurde.
if (!isset($_FILES['files']) || !isset($_FILES['files']['tmp_name'][0]) || empty($_FILES['files']['tmp_name'][0])) {
return json_encode(["error" => "Dateiupload fehlgeschlagen: Keine Datei unter 'files' gefunden."]);
}
// Baue die URL zusammen
$url = TT_MBI_API_URL . TT_MBI_API_VERSION . '/deviceuploadfile/' . $id;
// Erstelle ein CURLFile-Objekt aus dem ersten (und evtl. einzigen) Element
$curlFile = new CURLFile(
$_FILES['files']['tmp_name'][0],
$_FILES['files']['type'][0],
$_FILES['files']['name'][0]
);
// Bereite die POST-Daten vor: Der Schlüssel "file" entspricht
// eventuell den Erwartungen der API.
$postFields = ['file' => $curlFile];
// cURL-Handle initialisieren und Optionen setzen
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_HEADER => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $postFields,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . TT_MBI_API_KEY
]
]);
// Führe die Anfrage aus
$response = curl_exec($curl);
// Fehlerbehandlung: Bei einem cURL-Fehler gebe diesen als JSON zurück
if (curl_errno($curl)) {
$error_msg = curl_error($curl);
curl_close($curl);
return json_encode(["error" => $error_msg]);
}
// Schließe den cURL-Handle
curl_close($curl);
}
// Dekodiere die Antwort und gebe sie zurück
return json_decode($response);
}
}