FIX: `OptimizedImage#filesize` (PR #10095)

OptimizedImage#filesize calls Discourse.store.download with an OptimizedImage as an argument. It would in turn attempt to call #original_filename and #secure? on that object. Both would fail as these methods do not exist on OptimizedImage, only on Upload.

We didn’t know about these issues because:

  1. #calculate_filesize is not called often, because the filesize is saved on OptimizedImage creation, so it’s used mostly for manual filesize recalculation
  2. we were using rescue nil which swallows all errors

GitHub