FriendsOfREDAXO / FriendsOfREDAXO/api
Medien-Synchronisation (Dateisystem → DB) als REST-Endpunkt
- Dominant language
- PHP
- Stars
- 20
- Forks
- 0
- Avg merge
- 49m
- Merged PRs (30d)
- 17
Description
Aus #53 von @skerbis. Bestätigt: `/api/me` kennt kein `media/sync`, der Endpunkt fehlt tatsächlich.
Im Core gibt es die Funktion unter `mediapool/pages/sync.php`, abgesichert über die Permission `media[sync]` (`mediapool/package.yml:20`). Die Seite tut zwei Dinge:
1. **Diff** — alle Dateien in `rex_path::media()` per `rex_finder`, abzüglich der in `rex_media` eingetragenen (`sync.php:9-29`).
2. **Import** — ausgewählte Dateinamen über `rex_media_service::addMedia($data, false)` mit `title` und `category_id` (`sync.php:82`).
Vorschlag: `GET /api/media/sync` liefert die Diff-Liste, `POST /api/media/sync` mit `{"files":[…],"category_id":…,"title":"…"}` importiert. Scope `media/sync`; im Backend-Spiegel gegen `media[sync]` prüfen statt gegen die Kategorierechte, weil der Core das dort auch so macht.
Zu klären vor der Umsetzung: die Seite repariert bei **jedem Aufruf** zusätzlich `filesize`/`width`/`height` bestehender DB-Einträge (`sync.php:32-53`) — ein Schreibvorgang beim Lesen. Das darf ein `GET` nicht tun. Entweder in den `POST` verschieben oder als eigener Endpunkt (`POST /api/media/sync/repair`).
---
*Dieser Text wurde durch eine KI erstellt.*
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with mediapool/pages/sync.php, mediapool/package.yml:20, and the existing /api/me route conventions. Compare the sync page's diff, import, and metadata-repair behavior with the API's permission and scope handling. Done means the requested sync operations are exposed without making GET perform writes, with the intended media/sync permission enforced.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- php
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100