Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Find All Broken Package T&C and Cover Images

A. Find All Broken Package T&C Images

The script

BASE_URL = 'https://hungryhub.com'.freeze
data = []

restaurants = Restaurant.active.not_expired.includes(:translations, :restaurant_packages).to_a

# Collect all URLs to check in a single batch
urls_to_check = []

restaurants.each do |restaurant|
  restaurant.restaurant_packages.each do |rp|
    package = rp.package
    next if package.nil? || package.tnc_image_url.blank?

    urls_to_check << { restaurant: restaurant, package: package }
  end
end

# Perform HTTP requests in batches
urls_to_check.each_with_index do |entry, index|
  restaurant = entry[:restaurant]
  package = entry[:package]

  puts "Checking restaurant: #{restaurant.name}, package: #{package.name}"

  response = Faraday.get(package.tnc_image_url)
  if response.status != 200
    json_data = {
      restaurant_id: restaurant.id,
      restaurant_name: restaurant.name,
      package_type: package.type,
      package_id: package.id,
      package_name: package.name,
      package_tnc_image_url: package.tnc_image_url,
      edit_package_url: BASE_URL + Rails.application.routes.url_helpers.send(
        "edit_admin_packages_#{package.route_name}_path".to_sym, package.id
      ),
    }.to_json

    data << json_data
  end

  puts "Processed #{index + 1} of #{urls_to_check.size} URLs"
end

puts data.presence || 'No broken tnc image found'

B. Find All Broken Package Cover Images

The script

BASE_URL = 'https://hungryhub.com'.freeze
data = []

restaurants = Restaurant.active.not_expired.includes(:translations, :restaurant_packages).to_a

# Collect all URLs to check in a single batch
urls_to_check = []

restaurants.each do |restaurant|
  restaurant.restaurant_packages.each do |rp|
    package = rp.package
    next if package.nil? || package.cover_image_url.blank?

    urls_to_check << { restaurant: restaurant, package: package }
  end
end

# Perform HTTP requests in batches
urls_to_check.each_with_index do |entry, index|
  restaurant = entry[:restaurant]
  package = entry[:package]

  puts "Checking restaurant: #{restaurant.name}, package: #{package.name}"

  response = Faraday.get(package.cover_image_url)
  if response.status != 200
    json_data = {
      restaurant_id: restaurant.id,
      restaurant_name: restaurant.name,
      package_type: package.type,
      package_id: package.id,
      package_name: package.name,
      package_cover_image_url: package.cover_image_url,
      edit_package_url: BASE_URL + Rails.application.routes.url_helpers.send(
        "edit_admin_packages_#{package.route_name}_path".to_sym, package.id
      ),
    }.to_json

    data << json_data
  end

  puts "Processed #{index + 1} of #{urls_to_check.size} URLs"
end

puts data.presence || 'No broken cover image found'