Lewati ke konten

Boot dan discovery untuk NextPDF Gotenberg

Bridge ini tidak memiliki mekanisme auto-discovery. Anda membangunnya sebagai service biasa dengan constructor injection eksplisit: sebuah value object konfigurasi dan kolaborator Hypertext Transfer Protocol (HTTP) yang didefinisikan oleh PHP Standard Recommendation (PSR). Paket ini tidak menyertakan service provider, bundle, atau container extension; paket ini sendiri juga tidak membaca variabel environment apa pun. Di sini, “discovery” berarti cara framework host menyediakan para kolaborator tersebut. Tanggung jawab itu berada pada framework, bukan paket ini.

Bridge ini tidak ditemukan secara otomatis. Andalah yang membangunnya. GotenbergBridge membutuhkan empat argumen dan menerima tiga argumen opsional:

  • Wajib: sebuah GotenbergConfig, sebuah klien PSR-18, sebuah request factory PSR-17, dan sebuah stream factory PSR-17.
  • Opsional: sebuah logger PSR-3, sebuah kebijakan keamanan Hypertext Markup Language (HTML) (secara baku menggunakan kebijakan inti bawaan NextPDF), dan sebuah response factory PSR-17.

Response factory mengaktifkan transport cURL-pinned. Jika Anda menyediakannya dan bridge memiliki sesuatu untuk di-pin (alamat yang sudah di-resolve atau pin SubjectPublicKeyInfo (SPKI) yang dikonfigurasi), bridge akan menggunakan transport pinning. Jika tidak disediakan, klien PSR-18 yang di-inject selalu digunakan. Kontrak argumen lengkapnya tersedia di /integrations/gotenberg/configuration/.

Tidak ada langkah registrasi. Siklus hidupnya adalah:

  1. Host melakukan resolve terhadap sebuah klien PSR-18 dan factory PSR-17. Container host yang melakukan ini; bukan paketnya.
  2. Aplikasi membangun sebuah GotenbergConfig dari sumber konfigurasinya. GotenbergConfig::fromArray() menerima array snake_case dan mengganti nilai yang salah bentuk dengan nilai baku. Validasikan sumber tersebut pada boot path Anda, sehingga nilai Uniform Resource Locator (URL) yang hilang gagal saat boot, bukan pada setiap konversi.
  3. Aplikasi membangun GotenbergBridge dengan konfigurasi dan kolaboratornya.
  4. Panggilan konversi pertama menjalankan validasi URL, penyaringan server-side request forgery (SSRF), penyaringan nama berkas, dan request-nya. Tidak ada pekerjaan yang terjadi saat konstruksi; bridge tetap inert sampai Anda memanggilnya.

Paket ini tidak menyertakan binding container. Agar bridge dapat di-inject, daftarkan di container aplikasi host Anda sebagai berikut:

  • Bind GotenbergConfig dari sumber konfigurasi Anda.
  • Bind klien PSR-18 dan factory PSR-17 ke implementasi pilihan Anda.
  • Bind GotenbergBridge sebagai service yang menerima dependency tersebut.

Auto-wiring native framework, publikasi konfigurasi, dan registrasi service-provider atau bundle merupakan bagian dari paket integrasi framework yang khusus, bukan di sini. Paket ini dirancang agar framework-agnostic. Paket ini hanya bergantung pada antarmuka PSR, sehingga bekerja dengan container apa pun.

Paket ini tidak membaca konfigurasi apa pun dengan sendirinya. Urutan resolusinya mengikuti apa pun yang diimplementasikan aplikasi Anda sebelum memanggil GotenbergConfig::fromArray() atau constructor. Urutan yang umum adalah variabel environment, lalu berkas config yang dipublikasikan, lalu nilai baku di kode. Urutan itu adalah kontrak aplikasi Anda, bukan kontrak paket ini. Yang didefinisikan paket ini hanyalah nilai baku untuk setiap field yang dihilangkan oleh array yang diteruskan ke fromArray(): URL application programming interface (API) kosong, timeout 30 detik, batas ukuran 50 MiB, kunci API kosong, dan daftar pin kosong.

Dua sinyal bawaan berikut memastikan wiring:

  • isAvailable() memvalidasi URL tanpa lalu lintas jaringan, lalu mengirim request HEAD ke <apiUrl>/health dan melaporkan ketersediaan jika statusnya di bawah 500. Method ini mengembalikan false alih-alih melempar exception pada kegagalan apa pun. Panggil method ini dari readiness check.
  • Smoke conversion dari dokumen kecil yang sudah diketahui valid memastikan keseluruhan jalur secara end to end. Ini mencakup request multipart ke <apiUrl>/forms/libreoffice/convert dan validasi response.
  • /integrations/gotenberg/integration/ — menjalankan pipeline NextPDF melalui service.
  • /integrations/gotenberg/install/ — instalasi paket dan service.
  • /integrations/gotenberg/configuration/ — kontrak constructor dan config lengkapnya.
  • /integrations/gotenberg/overview/ — alur konversi dan model dependency.