# 🧱 Blockly-Terminal-Bridge Logbuch

## 📅 Datum: 2025-06-05

## 🎯 Ziel

Eine funktionierende Verbindung zwischen Blockly-Editor und Crumbforest-Terminal herstellen, um kindgerecht generierten Code in ein Backend zu übertragen und dort zu verarbeiten.

---

## ✅ Ergebnis

Die Verbindung steht. Blockly sendet erfolgreich generierten Code über eine POST-Anfrage an das CakePHP 5 Backend. Die API antwortet mit einer Erfolgsmeldung.

---

## 🧠 Beispielhafte Nutzereingabe in Blockly

Blockly-Blöcke:

```
set item to 0
if item = 0
  print "Wuhuuu"
```

Generierter Code:

```javascript
var item;

item = 0;
if (item == 0) {
  window.alert('Wuhuuuu');
}
```

Antwort der API:

```json
{
  "status": "success",
  "message": "Blockcode received.",
  "received": "var item;\n\n\nitem = 0;\nif (item == 0) {\n  window.alert('Wuhuuuu');\n}\n"
}
```

---

## 🔄 Häufige Fehlerquellen und Lösungsschritte

### ❌ CSRF Fehler

* **Fehler:** `Missing or incorrect CSRF cookie type.`
* **Lösung:** Im `Application.php` wurde der CSRF-Schutz für alle Pfade unter `/crumbapi/` deaktiviert:

```php
'skipCheckCallback' => function (ServerRequestInterface $request) {
    return str_starts_with((string)$request->getUri()->getPath(), '/crumbapi/');
}
```

### ❌ Authentication Error

* **Fehler:** `The request object does not contain the required `authentication` attribute.`
* **Lösung:** Manuelles Einfügen eines leeren AuthenticationService im Middleware-Stack für API-Pfade:

```php
if (str_starts_with($path, '/crumbapi/')) {
    $emptyAuthService = new AuthenticationService();
    $request = $request->withAttribute('authentication', $emptyAuthService);
    return $handler->handle($request);
}
```

### ❌ MethodNotAllowedException

* **Fehler:** `Method Not Allowed`
* **Lösung:** In `routes.php` wurde explizit die POST-Methode registriert:

```php
$builder->connect(
    '/blockly-terminal',
    ['controller' => 'Crumbapi', 'action' => 'blocklyTerminal'],
    ['_method' => ['POST']]
);
```

---

## 🖼️ Visuelle Dokumentation

* Blockly-Blockstruktur \[siehe Anhang: PXL\_20250605\_200744146.MP.jpg]
* Terminal-Ausgabe mit JSON-Antwort \[siehe Anhang: PXL\_20250605\_200838143.MP.jpg]

---

## ❤️ Dank an die Crew

Ein riesiges Wuhuuuu an alle Beteiligten für die Geduld, Kreativität und Hartnäckigkeit auf diesem Weg durch die Backstube der Zukunft.

> "Wenn ein Block zuckt, hört das Terminal das Echo."

Wuhuuuu!

🧁 #Crumbforest #BlocklyBridge #BitLove
