class Gyms::Gym

Attributes

address1[RW]
address2[RW]
name[RW]
phone[RW]
url[RW]

Public Class Methods

get_local_gyms(zip) click to toggle source
# File lib/gyms/gym.rb, line 4
def self.get_local_gyms(zip)
  puts ""
  puts "Finding your gyms..."
  puts ""

  main_url = "http://www.gymsandfitnessclubs.com"
  http = "http://www.gymsandfitnessclubs.com/gyms-by-location/results.php?postal_code=#{zip}"
  doc = Nokogiri::HTML(open(http))

  # Invalid zip code ("Sorry" is found on webpage when invalid zip code is entered by user)
  if doc.search("#marquee_content").text.include?("Sorry")
    puts ""
    puts "* * * Invalid zip code. Try again. * * * "
    puts ""
    Gyms::CLI.new.call
  end

  gyms = []

  gym_1 = self.new
  gym_1.name = doc.search("#marquee_content").css("ul")[0].css("a strong").text.strip
  gym_1.url = doc.search("#marquee_content").css("ul")[0].css("a").attribute("href").text.strip

  gym_1_detail_doc = Nokogiri::HTML(open("#{main_url}#{gym_1.url}"))
  gym_1_data = gym_1_detail_doc.search("#marquee_content p").text

  gym_1.address1 = gym_1_detail_doc.search(".address1").text.strip
  gym_1.address2 = gym_1_detail_doc.search(".address2").text.strip
  gym_1.phone = /(\(\d{3}\) \d{3}-\d{4})/.match(gym_1_data)[1] #<-- do not change this index

  gyms << gym_1


  gym_2 = self.new
  gym_2.name = doc.search("#marquee_content").css("ul")[1].css("a strong").text
  gym_2.url = doc.search("#marquee_content").css("ul")[1].css("a").attribute("href").text

  gym_2_detail_doc = Nokogiri::HTML(open("#{main_url}#{gym_2.url}"))
  gym_2_data = gym_2_detail_doc.search("#marquee_content p").text

  gym_2.address1 = gym_2_detail_doc.search(".address1").text.strip
  gym_2.address2 = gym_2_detail_doc.search(".address2").text.strip
  gym_2.phone = /(\(\d{3}\) \d{3}-\d{4})/.match(gym_2_data)[1] #<-- do not change this index

  gyms << gym_2


  gym_3 = self.new
  gym_3.name = doc.search("#marquee_content").css("ul")[2].css("a strong").text
  gym_3.url = doc.search("#marquee_content").css("ul")[2].css("a").attribute("href").text

  gym_3_detail_doc = Nokogiri::HTML(open("#{main_url}#{gym_3.url}"))
  gym_3_data = gym_3_detail_doc.search("#marquee_content p").text

  gym_3.address1 = gym_3_detail_doc.search(".address1").text.strip
  gym_3.address2 = gym_3_detail_doc.search(".address2").text.strip
  gym_3.phone = /(\(\d{3}\) \d{3}-\d{4})/.match(gym_3_data)[1] #<-- do not change this index

  gyms << gym_3


  gym_4 = self.new
  gym_4.name = doc.search("#marquee_content").css("ul")[3].css("a strong").text
  gym_4.url = doc.search("#marquee_content").css("ul")[3].css("a").attribute("href").text

  gym_4_detail_doc = Nokogiri::HTML(open("#{main_url}#{gym_4.url}"))
  gym_4_data = gym_4_detail_doc.search("#marquee_content p").text

  gym_4.address1 = gym_4_detail_doc.search(".address1").text.strip
  gym_4.address2 = gym_4_detail_doc.search(".address2").text.strip
  gym_4.phone = /(\(\d{3}\) \d{3}-\d{4})/.match(gym_4_data)[1] #<-- do not change this index

  gyms << gym_4


  gym_5 = self.new
  gym_5.name = doc.search("#marquee_content").css("ul")[4].css("a strong").text
  gym_5.url = doc.search("#marquee_content").css("ul")[4].css("a").attribute("href").text

  gym_5_detail_doc = Nokogiri::HTML(open("#{main_url}#{gym_5.url}"))
  gym_5_data = gym_5_detail_doc.search("#marquee_content p").text

  gym_5.address1 = gym_5_detail_doc.search(".address1").text.strip
  gym_5.address2 = gym_5_detail_doc.search(".address2").text.strip
  gym_5.phone = /(\(\d{3}\) \d{3}-\d{4})/.match(gym_5_data)[1] #<-- do not change this index

  gyms << gym_5


  gym_6 = self.new
  gym_6.name = doc.search("#marquee_content").css("ul")[5].css("a strong").text
  gym_6.url = doc.search("#marquee_content").css("ul")[5].css("a").attribute("href").text

  gym_6_detail_doc = Nokogiri::HTML(open("#{main_url}#{gym_6.url}"))
  gym_6_data = gym_6_detail_doc.search("#marquee_content p").text

  gym_6.address1 = gym_6_detail_doc.search(".address1").text.strip
  gym_6.address2 = gym_6_detail_doc.search(".address2").text.strip
  gym_6.phone = /(\(\d{3}\) \d{3}-\d{4})/.match(gym_6_data)[1] #<-- do not change this index

  gyms << gym_6


  gym_7 = self.new
  gym_7.name = doc.search("#marquee_content").css("ul")[6].css("a strong").text
  gym_7.url = doc.search("#marquee_content").css("ul")[6].css("a").attribute("href").text

  gym_7_detail_doc = Nokogiri::HTML(open("#{main_url}#{gym_7.url}"))
  gym_7_data = gym_7_detail_doc.search("#marquee_content p").text

  gym_7.address1 = gym_7_detail_doc.search(".address1").text.strip
  gym_7.address2 = gym_7_detail_doc.search(".address2").text.strip
  gym_7.phone = /(\(\d{3}\) \d{3}-\d{4})/.match(gym_7_data)[1] #<-- do not change this index

  gyms << gym_7


  gym_8 = self.new
  gym_8.name = doc.search("#marquee_content").css("ul")[7].css("a strong").text
  gym_8.url = doc.search("#marquee_content").css("ul")[7].css("a").attribute("href").text

  gym_8_detail_doc = Nokogiri::HTML(open("#{main_url}#{gym_8.url}"))
  gym_8_data = gym_8_detail_doc.search("#marquee_content p").text

  gym_8.address1 = gym_8_detail_doc.search(".address1").text.strip
  gym_8.address2 = gym_8_detail_doc.search(".address2").text.strip
  gym_8.phone = /(\(\d{3}\) \d{3}-\d{4})/.match(gym_8_data)[1] #<-- do not change this index

  gyms << gym_8
end