docs: def product_metadata(product, dst_folder, counter=None, writers=[file_writer], geometry_check=None):
      """ Extract metadata for a specific product """
  
      if not counter:
          counter = {
              'products': 0,
              'saved_tiles': 0,
              'skipped_tiles': 0,
              'skipped_tiles_paths': []
          }
  
      s3_url = 'http://sentinel-s2-l1c.s3.amazonaws.com'
  
      product_meta_link = '{0}/{1}'.format(s3_url, product['metadata'])
      product_info = requests.get(product_meta_link, stream=True)
      product_metadata = metadata_to_dict(product_info.raw)
      product_metadata['product_meta_link'] = product_meta_link
  
      counter['products'] += 1
  
      for tile in product['tiles']:
          tile_info = requests.get('{0}/{1}'.format(s3_url, tile))
          try:
              metadata = tile_metadata(tile_info.json(), copy(product_metadata), geometry_check)
  
              for w in writers:
                  w(dst_folder, metadata)
  
              logger.info('Saving to disk: %s' % metadata['tile_name'])
              counter['saved_tiles'] += 1
          except JSONDecodeError:
              logger.warning('Tile: %s was not found and skipped' % tile)
              counter['skipped_tiles'] += 1
              counter['skipped_tiles_paths'].append(tile)
  
      return counter