Wie funktioniert der Download bei FLubtitles

Da es seit kurzem endlich asciio in den Debian Repos gibt, dachte ich, ich probiere das gleich mal aus. Ich hatte letztens auf meinem Whiteboard mal verschiedene Workflows angezeichnet, wie bei FLubtitles z.B. der Download funktioniert. Erstmal die Grafik und weiter unten eine kurze Erläuterung.

                                DownloadSubtitles()
 
 
 
           Client                                           Server
 
 
 
 
                                                          .---------.
                                                          | CouchDB |
                                                          '---------'
                                                             ^   |
                                                             |   |
                                       transparent gzip      |   |
                                       compress/decompress   |   |
                                                             |   |
                                                             |   v
      .--------------.                                  .------------.
      | Subtitle.srt |                                  | FLubtitles |
      '--------------'                                  '------------'
              ^                                                |
              |                                                |
              |                                                v
      zlib.decompress()                                 zlib.compress()
              ^                                                |
              |                                                |
              |                                                v
     base64.b64decode()                               base64.b64encode()
              ^                                                |
              |                   .----------.                 |
              '-------------------| JSON-RPC |<----------------'
                                  '----------'

  1. Der Client ruft via JSON-RPC die Methode DownloadSubtitles() auf mit der Angabe, welche er denn haben will
  2. Diese(n) holt sich FLubtitles daraufhin via HTTP Request aus der CouchDB Datenbank. Da das Modul couchdbkit im HTTP Header nicht "Accept-Encoding: gzip,deflate" angibt, übernimmt CouchDB die Dekompression. Ansonsten würde man die Daten in komprimierter Form bekommen.
  3. Als nächstes werden die Daten zuerst mit zlib komprimiert und dann mit Base64 auf ihre Transfer-Reise vorbereitet.
  4. Der Client macht das genauso, jedoch in umgekehrter Reihenfolge.
  5. Danach kann der Client den Text in eine Datei schreiben und so hat er seinen Untertitel erhalten.