Class: OSXwarranty::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/osxwarranty/base.rb

Instance Method Summary collapse

Instance Method Details

#asdcheck(model) ⇒ Object



41
42
43
44
45
# File 'lib/osxwarranty/base.rb', line 41

def asdcheck(model)
	asd_hash = YAML.load_file(File.join(File.dirname(__FILE__),"../config/asdcheck.yml"))
	search_q = model.gsub(" ", "_").gsub("(","").gsub(")","").gsub("-","_").gsub(",","_").gsub(".","_")
		return asd_hash[search_q]
end

#get_model_info(serial) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/osxwarranty/base.rb', line 27

def get_model_info(serial)
	serial_size = serial.size
	if serial_size == 12
		search_q = serial[-4,4] 
	elsif serial_size == 11
		search_q = serial[-3,3]
	end
	uri = "http://support-sp.apple.com/sp/product?cc=#{search_q}&lang=en_US"
	response = HTTPClient.get(uri)
	nokogiri_data = Nokogiri::XML(response.body)
	model = nokogiri_data.search('configCode').text
	return model
end

#get_warranty_info(serial) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/osxwarranty/base.rb', line 15

def get_warranty_info(serial)
	uri = "https://selfsolve.apple.com/wcResults.do"
	options = {:sn=>serial, :continue=>"Continue", :cn=>"", :locale=>"", :caller=>"", :num=>"0"}
	response = HTTPClient.post(uri,options)
	response_body = response.content
	repair_covered = response_body.split('warrantyPage.warrantycheck.displayHWSupportInfo').last.split('Repairs and Service Coverage: ')[1] =~ /^Active/ ? true : false
	expiration_date = response_body.split('Estimated Expiration Date: ')[1].split('<')[0] if repair_covered == true
	expiration_date = "EXPIRED" if expiration_date.nil?
	warranty_info = {:repair_covered => repair_covered, :expiration_date => expiration_date}
	return warranty_info
end

#info(serial = nil) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/osxwarranty/base.rb', line 7

def info(serial = nil)
	@serial = serial
	warranty_info = get_warranty_info(@serial)
	model = get_model_info(serial)
	asdinfo = asdcheck(model)
	warranty_info = warranty_info.merge({:model => model, :asdinfo => asdinfo})
	return warranty_info
end