code: def _extract_zip_if_possible(descriptor):
      
      tempdir = None
      result = descriptor
      try:
          if isinstance(descriptor, six.string_types):
              res = requests.get(descriptor)
              res.raise_for_status()
              result = res.content
      except (IOError,
              ValueError,
              requests.exceptions.RequestException):
          pass
      try:
          the_zip = result
          if isinstance(the_zip, bytes):
              try:
                  os.path.isfile(the_zip)
              except (TypeError, ValueError):
                  # the_zip contains the zip file contents
                  the_zip = io.BytesIO(the_zip)
          if zipfile.is_zipfile(the_zip):
              with zipfile.ZipFile(the_zip, 'r') as z:
                  _validate_zip(z)
                  descriptor_path = [
                      f for f in z.namelist() if f.endswith('datapackage.json')][0]
                  tempdir = tempfile.mkdtemp('-datapackage')
                  z.extractall(tempdir)
                  result = os.path.join(tempdir, descriptor_path)
          else:
              result = descriptor
      except (TypeError,
              zipfile.BadZipfile):
          pass
      if hasattr(descriptor, 'seek'):
          # Rewind descriptor if it's a file, as we read it for testing if it's
          # a zip file
          descriptor.seek(0)
      return (tempdir, result)
docs: If descriptor is a path to zip file extract and return (tempdir, descriptor)