Download All Unlocked Puzzles ======================== We get a lot of requests to "download everything" from an event. Here's how you could do that: What You Need ------------ * The URL to your puzzle server. We will call this `$url`. * Your Team ID. We will call this `$teamid`. * A way to POST `id=$teamid` with `Content-Type: x-www-form-encoded` to a URL, and save the result. We will call this procedure "Fetch". * A way to parse JSON files Steps ----- 1. Fetch `$url/state`. This is the State object. 2. In the State object, `Puzzles` maps category name to a list of open puzzle point values. 3. For each category (we will call this `$category`): 1. For each point value: 1. If the point value is 0, skip it. 0 indicates all puzzles in this category are unlocked. 2. Fetch `$url/content/$category/$points/index.json`. This is the Puzzle object. 3. In the Puzzle object, `Body` contains the HTML body of the puzzle. 4. In the Puzzle object, `Attachments` contains a list of attachments. For each attachment (we will call this `$attachment`): 1. Fetch `$url/content/$category/$points/$attachment`.