Creating an "unzip" module that can interface with Content created through the GUI and through node.create by was of Services module (Drupal 7)
I think the best place for your code is in a custom module, in hook_node_insert() and hook_node_update(); they're fired when a node is created and updated respectively. As the services module uses the standard node save/submission functionality these hooks will be fired even when using services.

It would make sense to keep your un-zip code in that same module.

This is a brief example just to show what I mean:

function MYMODULE_node_insert($node) {
  // Get the file ID from the node field
  $fid = $node-&gt;field_file[$node-&gt;language][0]['fid'];

  // Load the file
  $file = file_load($fid);

  // Pass the file path off to the unzip function
  $result = _my_unzip_function($file-&gt;uri);

  // Do the rest of your processing...
}