45 lines
2.2 KiB
Text
45 lines
2.2 KiB
Text
|
THINGS THAT CAN HAPPEN
|
||
|
├───File exists
|
||
|
│ ├───User disables overwrite
|
||
|
│ │ └───Return because there's nothing to do
|
||
|
│ │
|
||
|
│ ├───User enables overwrite
|
||
|
│ │ ├───User requests range
|
||
|
│ │ │ └───Raise exception because requesting a range and forcing overwrite are mutually exclusive
|
||
|
│ │ │
|
||
|
│ │ └───User does not request range
|
||
|
│ │ └───File opened, truncated, full download
|
||
|
│ │
|
||
|
│ └───User does not specify overwrite
|
||
|
│ ├───File is same size as content-length
|
||
|
│ │ └───Return because there's nothing to do.
|
||
|
│ │
|
||
|
│ ├───User requests range
|
||
|
│ │ ├───Server respects range
|
||
|
│ │ │ └───File opened, seeked to request, bytes filled in
|
||
|
│ │ │
|
||
|
│ │ └───Server does not respect range
|
||
|
│ │ └───Raise exception because user's request can't be fulfilled
|
||
|
│ │
|
||
|
│ └───User does not request range
|
||
|
│ ├───Server respects range
|
||
|
│ │ └───File is opened, seeked to end, download resumes
|
||
|
│ │
|
||
|
│ └───Server does not respect range
|
||
|
│ └───Ask for permission to overwrite from beginning
|
||
|
│
|
||
|
└───File does not exist
|
||
|
├───User requests range
|
||
|
│ ├───Server respects range
|
||
|
│ │ └───File created, seeked to request, bytes filled in. everything else left 0
|
||
|
│ └───Server does not respect range
|
||
|
│ └───Raise exception because user's request can't be fulfilled
|
||
|
│
|
||
|
└───User does not request range
|
||
|
└───File created, full download
|
||
|
|
||
|
Possible amibiguity: If the user requests a range, and the file does not exist, does he want:
|
||
|
1. to fill the file with zeroes, and patch the requested bytes into their correct spot; or
|
||
|
2. to create the file empty, and only write the requested bytes?
|
||
|
|
||
|
I will assume #1 because that plays nicely with other Things That Can Happen, such as letting the user patch the other bytes in later.
|