HomePhabricator

Make the Files "TTL" API more structured

Description

Make the Files "TTL" API more structured

Summary:
Ref T11357. When creating a file, callers can currently specify a ttl. However, it isn't unambiguous what you're supposed to pass, and some callers get it wrong.

For example, to mean "this file expires in 60 minutes", you might pass either of these:

  • time() + phutil_units('60 minutes in seconds')
  • phutil_units('60 minutes in seconds')

The former means "60 minutes from now". The latter means "1 AM, January 1, 1970". In practice, because the GC normally runs only once every four hours (at least, until recently), and all the bad TTLs are cases where files are normally accessed immediately, these 1970 TTLs didn't cause any real problems.

Split ttl into ttl.relative and ttl.absolute, and make sure the values are sane. Then correct all callers, and simplify out the time() calls where possible to make switching to PhabricatorTime easier.

Test Plan:

  • Generated an SSH keypair.
  • Viewed a changeset.
  • Viewed a raw diff.
  • Viewed a commit's file data.
  • Viewed a temporary file's details, saw expiration date and relative time.
  • Ran unit tests.
  • (Didn't really test Phragment.)

Reviewers: chad

Reviewed By: chad

Subscribers: hach-que

Maniphest Tasks: T11357

Differential Revision: https://secure.phabricator.com/D17616

Details

Provenance
epriestleyAuthored on Apr 4 2017, 6:01 PM
epriestleyPushed on Apr 4 2017, 11:16 PM
Reviewer
chad
Differential Revision
D17616: Make the Files "TTL" API more structured
Parents
rP2896da384cb7: Only require POST to fetch file data if the viewer is logged in
Branches
Unknown
Tags
Unknown
Tasks
T11357: Move Files to EditEngine and modern APIs
Build Status
Buildable 16306
Build 21680: Run Core Tests