File Download Service

Aperta
#24 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
25/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
rails, ruby
Ambito
api, backend

Direzione di ricerca

Inizia leggendo config/storage.yml e config/environments/production.rb, quindi individua FileDownloader, ChecksumVerifier, il flusso degli allegati di ActiveStorage e il modello TopicFile. Il lavoro è completato quando i download riprendono dai file parziali, gli errori di checksum eseguono la pulizia e ritentano il download, lo storage locale è configurato per l'uso offline e i requisiti di pulizia e backup di TopicFile sono stati gestiti.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

cross-app sync

GET /api/v1/files/{id} with resume support

  • Create FileDownloader service:
class FileDownloader
  def download(file_id, expected_checksum:, resume_from: 0)
    # Downloads to temp file
    # Supports Range header for resume
    # Returns path to downloaded file
  end
end
  • Download to temp directory (tmp/downloads/)
  • Track partial download progress for resume capability
  • Return downloaded file path for attachment

Verify downloaded files match manifest checksums

  • Create ChecksumVerifier service:
class ChecksumVerifier
  def verify!(file_path, expected_sha256)
    actual = Digest::SHA256.file(file_path).hexdigest
    expected = expected_sha256.delete_prefix("sha256:")
    raise ChecksumMismatchError unless actual == expected
  end
end
  • Consider using MD5 since active storage uses MD5 for checksums
  • Integrate verification before ActiveStorage attachment
  • On mismatch: delete file, retry download (up to 3 attempts)

Ensure proper ActiveStorage setup for offline operation

  • Verify config/storage.yml uses local disk:
    local:
    service: Disk
    root: <%= Rails.root.join("storage") %>
  • Set in config/environments/production.rb:
    config.active_storage.service = :local
  • Configure blob cleanup: old blobs purged when TopicFile destroyed
  • Add storage/ to backup strategy
Lingua principale
HTML
Stelle
4
Fork
0
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di rubyforgood/skillrx-beacon

Tutte le issue di rubyforgood/skillrx-beacon

Issue simili

Altre issue su Backend & API Design

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.