Use an HTTP-based approach.
Add some logging around the API request handling.
Fix (and use) the chained reader.
Fix the upload API return value.
Add --quiet and --show-uploaded options.
Support "unknown" values for metadata origins.
Remove the "direct upload" facade method.