Skip to content
Martin Schmitt edited this page Jan 6, 2023 · 14 revisions

putmybills

Bei putmybills handelt es sich um einen Uploader für das Dokumentenmanagement von GetMyInvoices.com.

Komponenten

  • cmd/gmi-upload - Die Kernkomponente, die nichts anderes kann als einzelne Dokumente hochladen
  • assets/gmi-putdir - Wrapper für gmi-upload, um ein ganzes Verzeichnis voller Dateien hochzuladen
  • init/gmi-putdir.{service,timer} - Systemd-Timer um automatische Uploads zu steuern
  • init/gmi-putdir.example-default - Konfigurationsdatei für den genannten Timer, kommt nach /etc/default/gmi-putdir
  • Makefile - Makefile zum Übersetzen und Installieren der Komponenten. (Der systemd-Timer wird dabei nicht automatisch aktiviert.)

Integration

  • gmi-upload akzeptiert die folgenden Optionen auch als Umgebungsvariablen:
    • $GMI_APIKEY statt -a/--apikey
    • $GMI_DOCTYPE statt -d/--doctype
    • $GMI_DOCNOTE statt -n/--docnote

Anwendungsbeispiel

  • Wir haben zwei Scanner, die nur Mail und Ablage per Samba können.
  • Diese legen die PDFs auf ein Samba-Share.
  • gmi-putdir sucht über gmi-putdir.{timer,service} alle 5 Minuten nach neuen Dateien, und übergibt sie an gmi-upload.

Kompatibilität

  • Go 1.19
  • Bash

Siehe auch

FAQ

  • Warum nicht per Mail?
    • Mail ist kein Filetransferprotokoll und erlaubt es nicht, den Uploadstatus zu dokumentieren.
  • Wer konsumiert welche Umgebungsvariable?
    • Gesetzt werden sie alle in /etc/default/gmi-putdir.
    • In den Kontext der Ausführung von gmi-putdir kommen sie über gmi-putdir.service
    • In den Kontext der Ausführung von gmi-upload kommen sie über gmi-putdir (das Script)
    • $GMI_PUTDIR wird direkt von gmi-putdir.service als Variable eingesetzt beim Aufruf von gmi-putdir "${GMI_PUTDIR}"
    • $GMI_MOVETO wird in gmi-putdir ausgewertet, um Dokumente nach erfolgreichem Upload zu verschieben.
    • $GMI_APIKEY und $GMI_DOCTYPE kommen über gmi-putdir.service und gmi-putdir in die Umgebung von gmi-upload.
  • Wann Windows?
    • gmi-upload funktioniert unter Windows, die restliche Integration, insbesondere in Form von gmi-putdir, fehlt derzeit.

FIXME/TODO

  • Binären Download anbieten
  • Use of environment variables /etc/default/gmi-putdir -> systemd -> gmi-putdir -> gmi-upload considered too complicated.
  • gmi-putdir evtl. zwecks Windows-Kompatibilität in go reimplementieren.
  • Andere Fehlerbehandlung (erneut versuchen) für transiente Fehler:
    • HTTP 403 / Code 429 / Rate limit
    • HTTP 422 / Code 105 / Rate limit
    • HTTP 503
Clone this wiki locally