save

The save statement is used to write the contents of a named buffer to disk.

Syntax

save_{buffer_name}asfilename

Details

The save statement will write the contents of a named buffer to filename. As well as providing a means of direct-to-disk downloading this can be useful for retrieving server responses and capturing them for later examination, whether it be for analysis, debugging or audit purposes.

If the destination file already exists then it will be overwritten.

If the filename argument contains a path component, then any directories not present in the path will be created. If creation of the path destination file is not successful then an error will be logged and the USE script will fail.

The save statement is similar in effect to the http_savefile option supported by set, in that data from a server is written to disk. There is one important distinction however:

  • When set http_savefile has been used to specify a file to save, the next http request will stream data to the file as it is received from the server
  • When a buffer statement is used to capture the server response, and a subsequent save statement is used to write it to disk, all the buffered data will be written to the file immediately

Example

var server = "https://my_json_server.com"
          buffer response = http GET ${server}/generatetoken        
          
          # Save a copy of the original server response for diagnostic purposes
          save {response} as "${baseDir}\diagnostics\token.json"
          
          # Create a variable called ${secret_token} from the 'access_token'
          # string in the JSON in the {response} buffer
          var secret_token = $JSON{response}.[access_token]
          
          # We no longer need the {response} buffer as the value extracted
          # from it is stored in a variable
          discard {response}

How did we do?