From 665303445703f6a5afcf6bc7a6803d82ed551661 Mon Sep 17 00:00:00 2001 From: Corey Osman Date: Fri, 16 Dec 2011 14:51:35 -0800 Subject: [PATCH 1/3] updated vendor files to uses Date.strptime instead of Time.strptime --- lib/vendors/base_vendor.rb | 4 ++-- lib/vendors/dell_vendor.rb | 6 +++--- lib/vendors/fujitsu_vendor.rb | 4 ++-- lib/vendors/hp_vendor.rb | 9 +++++---- lib/vendors/ibm_vendor.rb | 4 ++-- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/lib/vendors/base_vendor.rb b/lib/vendors/base_vendor.rb index 7094c6d..db9eea1 100644 --- a/lib/vendors/base_vendor.rb +++ b/lib/vendors/base_vendor.rb @@ -3,7 +3,7 @@ require 'nokogiri' require 'json' require 'time' - +require 'date' require 'pry' module WarrantyCheck @@ -75,4 +75,4 @@ def get_html end -end \ No newline at end of file +end diff --git a/lib/vendors/dell_vendor.rb b/lib/vendors/dell_vendor.rb index cc6777c..25bf28d 100644 --- a/lib/vendors/dell_vendor.rb +++ b/lib/vendors/dell_vendor.rb @@ -19,8 +19,8 @@ def check details_description = tds[0].text.strip details_provider = tds[1].text.strip - details_start_date = Time.strptime(tds[2].text.strip, "%m/%d/%Y") - details_end_date = Time.strptime(tds[3].text.strip, "%m/%d/%Y") + details_start_date = Date.strptime(tds[2].text.strip, "%m/%d/%Y") + details_end_date = Date.strptime(tds[3].text.strip, "%m/%d/%Y") details_days_left = tds[4].text.strip.to_i warranty = { @@ -43,4 +43,4 @@ def check end -end \ No newline at end of file +end diff --git a/lib/vendors/fujitsu_vendor.rb b/lib/vendors/fujitsu_vendor.rb index a2d9110..f3e51b7 100644 --- a/lib/vendors/fujitsu_vendor.rb +++ b/lib/vendors/fujitsu_vendor.rb @@ -26,7 +26,7 @@ def check return if td1 =~ /^Error/ - expiration_date = Time.strptime(td3, "%d/%m/%Y") + expiration_date = Date.strptime(td3, "%d/%m/%Y") warranty = { :description => sprintf("%s - %s", td1, td2), @@ -39,4 +39,4 @@ def check end -end \ No newline at end of file +end diff --git a/lib/vendors/hp_vendor.rb b/lib/vendors/hp_vendor.rb index e3661c8..91652bd 100644 --- a/lib/vendors/hp_vendor.rb +++ b/lib/vendors/hp_vendor.rb @@ -21,11 +21,12 @@ def check @warranty_type ||= (tds.size == 7 ? tds[0].text.strip : nil) n = (tds.size == 7 ? 0 : -1) - + puts "Start: #{tds[n+2].text.strip}" + puts "Start: #{tds[n+3].text.strip}" details_warranty_type = @warranty_type details_service_type = tds[n+1].text.strip - details_start_date = Time.strptime(tds[n+2].text.strip, "%d %b %Y") - details_end_date = Time.strptime(tds[n+3].text.strip, "%d %b %Y") + details_start_date = Date.strptime(tds[n+2].text.strip, "%d %b %Y") + details_end_date = Date.strptime(tds[n+3].text.strip, "%d %b %Y") details_status = tds[n+4].text.strip details_service_level = tds[n+5].text.strip details_deliverables = tds[n+6].text.strip @@ -52,4 +53,4 @@ def check end -end \ No newline at end of file +end diff --git a/lib/vendors/ibm_vendor.rb b/lib/vendors/ibm_vendor.rb index d82033f..f19eede 100644 --- a/lib/vendors/ibm_vendor.rb +++ b/lib/vendors/ibm_vendor.rb @@ -24,7 +24,7 @@ def check details_type_model = tds1[2].text.strip details_serial_number = tds1[4].text.strip details_location = tds2[0].text.strip - details_expiration_date = Time.strptime(tds2[2].text.strip, "%Y-%m-%d") + details_expiration_date = Date.strptime(tds2[2].text.strip, "%Y-%m-%d") warranty = { :description => "", @@ -45,4 +45,4 @@ def check end -end \ No newline at end of file +end From 3f8a6d351cc8460cc329d7829eae488930d7e3a2 Mon Sep 17 00:00:00 2001 From: Corey Osman Date: Sat, 17 Dec 2011 18:07:46 -0800 Subject: [PATCH 2/3] added warranty class to hp vendor --- lib/vendors/base_vendor.rb | 7 +++++++ lib/vendors/hp_vendor.rb | 39 ++++++++++++++++++-------------------- lib/warranty-check.rb | 3 ++- lib/warranty.rb | 26 +++++++++++++++++++++++++ 4 files changed, 53 insertions(+), 22 deletions(-) create mode 100644 lib/warranty.rb diff --git a/lib/vendors/base_vendor.rb b/lib/vendors/base_vendor.rb index db9eea1..6cc3cfa 100644 --- a/lib/vendors/base_vendor.rb +++ b/lib/vendors/base_vendor.rb @@ -47,6 +47,13 @@ def html @html ||= get_html end + def warrantystatus + # return true when at least one warranty is still valid + @warranties.each do | w | + return true if w.expired == false + end + end + def dom @dom ||= Nokogiri::HTML(html) end diff --git a/lib/vendors/hp_vendor.rb b/lib/vendors/hp_vendor.rb index 91652bd..2f41369 100644 --- a/lib/vendors/hp_vendor.rb +++ b/lib/vendors/hp_vendor.rb @@ -21,31 +21,28 @@ def check @warranty_type ||= (tds.size == 7 ? tds[0].text.strip : nil) n = (tds.size == 7 ? 0 : -1) - puts "Start: #{tds[n+2].text.strip}" - puts "Start: #{tds[n+3].text.strip}" - details_warranty_type = @warranty_type - details_service_type = tds[n+1].text.strip + details_warranty_type = @warranty_type.gsub(/[\t\n\r]+/, "") + details_service_type = tds[n+1].text.strip.gsub(/[\t\n\r]+/, "") details_start_date = Date.strptime(tds[n+2].text.strip, "%d %b %Y") details_end_date = Date.strptime(tds[n+3].text.strip, "%d %b %Y") - details_status = tds[n+4].text.strip - details_service_level = tds[n+5].text.strip - details_deliverables = tds[n+6].text.strip + details_status = tds[n+4].text.strip.gsub(/\s+/, "") + details_service_level = tds[n+5].text.strip.gsub(/\st+/, "") + details_deliverables = tds[n+6].text.strip.gsub(/[\t\n\r]+/, "") - warranty = { - :description => "#{details_warranty_type} - #{details_service_type}", - :expired => (details_status == "Expired" ? true : false), - :expire_date => details_end_date, + # create new warranty object + + warranty = Warranty.new() + warranty.description = "#{details_warranty_type} - #{details_service_type}" + warranty.expired = (details_status == "Expired" ? true : false) + warranty.warranty_type = details_warranty_type + warranty.service_type = details_service_type + warranty.start_date = details_start_date + warranty.end_date = details_end_date + warranty.status = details_status + warranty.service_level = details_service_level + warranty.deliverables = details_deliverables - :details => { - :warranty_type => details_warranty_type, - :service_type => details_service_type , - :start_date => details_start_date , - :end_date => details_end_date , - :status => details_status , - :service_level => details_service_level, - :deliverables => details_deliverables , - } - } + @warranties << warranty end diff --git a/lib/warranty-check.rb b/lib/warranty-check.rb index 76a9541..8c5d744 100644 --- a/lib/warranty-check.rb +++ b/lib/warranty-check.rb @@ -4,5 +4,6 @@ require 'vendors/ibm_vendor' require 'vendors/apple_vendor' require 'vendors/fujitsu_vendor' +require 'warranty' +require 'classify' -require 'classify' \ No newline at end of file diff --git a/lib/warranty.rb b/lib/warranty.rb new file mode 100644 index 0000000..f6e491a --- /dev/null +++ b/lib/warranty.rb @@ -0,0 +1,26 @@ +module WarrantyCheck + + class Warranty + attr_accessor :description, :expired, :expire_date, :warrantydetails, :warranty_type, + :service_type, :start_date, :end_date, :status, :service_level, :deliverables + + def warrantydetails + # this method is just a summary of the details as the individual details can be accessed by themselves + if @warrantydetails.nil? + @warrantydetails = { + "warranty_type" => @warranty_type, + "service_type" => @service_type, + "start_date" => @start_date, + "end_date" => @end_date, + "status" => @status, + "service_level" => @service_level, + "deliverables" => @deliverables, + } + end + return @warrantydetails + + end + + end + +end From 4e242367f572fb37249bb33d5fe0d4d6d1dc7b83 Mon Sep 17 00:00:00 2001 From: Corey Osman Date: Wed, 21 Dec 2011 20:22:25 -0800 Subject: [PATCH 3/3] modified vendors to use new warranty object, not tested --- lib/vendors/apple_vendor.rb | 31 +++++++++++++++---------------- lib/vendors/base_vendor.rb | 11 +++++++---- lib/vendors/dell_vendor.rb | 21 ++++++++------------- lib/vendors/fujitsu_vendor.rb | 11 ++++------- lib/vendors/ibm_vendor.rb | 23 ++++++++++------------- lib/warranty.rb | 6 ++++-- 6 files changed, 48 insertions(+), 55 deletions(-) diff --git a/lib/vendors/apple_vendor.rb b/lib/vendors/apple_vendor.rb index 6596f56..d73bf4f 100644 --- a/lib/vendors/apple_vendor.rb +++ b/lib/vendors/apple_vendor.rb @@ -18,25 +18,24 @@ def check @warranties = [] if json["ERROR_CODE"].nil? - - @warranties << { - :description => sprintf("%s - %s", json["PROD_DESCR"].strip, json["PH_SUPPORT_COVERAGE_SUBHEADER"].split(':').first.strip), - :expired => json["PH_SUPPORT_COVERAGE_SUBHEADER"].split(':').last.strip == "Expired", - :expire_date => (" " * 10), - :details => json - } - - @warranties << { - :description => sprintf("%s - %s", json["PROD_DESCR"].strip, json["HW_REPAIR_COVERAGE_SUBHEADER"].split(':').first.strip), - :expired => json["HW_REPAIR_COVERAGE_SUBHEADER"].split(':').last.strip == "Expired", - :expire_date => (" " * 10), - :details => json - } - + w1 = Warranty.new() + w1.description = sprintf("%s - %s", json["PROD_DESCR"].strip, + json["PH_SUPPORT_COVERAGE_SUBHEADER"].split(':').first.strip) + w1.expired = json["PH_SUPPORT_COVERAGE_SUBHEADER"].split(':').last.strip == "Expired" + w1.expire_date = (" " * 10) + w1.details = json + @warranties << w1 + w2 = Warranty.new() + w2.description = sprintf("%s - %s", json["PROD_DESCR"].strip, + json["HW_REPAIR_COVERAGE_SUBHEADER"].split(':').first.strip) + w2.expired = json["HW_REPAIR_COVERAGE_SUBHEADER"].split(':').last.strip == "Expired" + w2.expire_date = (" " * 10) + w2.details = json + @warranties << w2 end end end -end \ No newline at end of file +end diff --git a/lib/vendors/base_vendor.rb b/lib/vendors/base_vendor.rb index 6cc3cfa..8a00f36 100644 --- a/lib/vendors/base_vendor.rb +++ b/lib/vendors/base_vendor.rb @@ -1,4 +1,5 @@ require 'net/http' +require 'net/https' require 'uri' require 'nokogiri' require 'json' @@ -48,10 +49,12 @@ def html end def warrantystatus - # return true when at least one warranty is still valid - @warranties.each do | w | - return true if w.expired == false - end + # return true when at least one warranty is still valid + validwarranty = false + @warranties.each do | w | + validwarranty = true if w.expired == false + end + return validwarranty end def dom diff --git a/lib/vendors/dell_vendor.rb b/lib/vendors/dell_vendor.rb index 25bf28d..5ac5e8b 100644 --- a/lib/vendors/dell_vendor.rb +++ b/lib/vendors/dell_vendor.rb @@ -23,19 +23,14 @@ def check details_end_date = Date.strptime(tds[3].text.strip, "%m/%d/%Y") details_days_left = tds[4].text.strip.to_i - warranty = { - :description => "#{details_description} (#{details_provider})", - :expired => (details_days_left == 0 ? true : false), - :expire_date => details_end_date, - - :details => { - :description => details_description, - :provider => details_provider , - :start_date => details_start_date , - :end_date => details_end_date , - :days_left => details_days_left - } - } + warranty = Warranty.new() + warranty.description = "#{details_description} (#{details_provider})" + warranty.expired = (details_days_left == 0 ? true : false) + warranty.expire_date = details_end_date + warranty.provider = details_provider + warranty.start_date = details_start_date + warranty.end_date = details_end_date + warranty.days_left = details_days_left @warranties << warranty end diff --git a/lib/vendors/fujitsu_vendor.rb b/lib/vendors/fujitsu_vendor.rb index f3e51b7..93bd537 100644 --- a/lib/vendors/fujitsu_vendor.rb +++ b/lib/vendors/fujitsu_vendor.rb @@ -27,13 +27,10 @@ def check return if td1 =~ /^Error/ expiration_date = Date.strptime(td3, "%d/%m/%Y") - - warranty = { - :description => sprintf("%s - %s", td1, td2), - :expired => (expiration_date < Time.now ? true : false), - :expire_date => expiration_date - } - + warranty = Warranty.new() + warranty.description = sprintf("%s - %s", td1, td2) + warranty.expired = (expiration_date < Time.now ? true : false) + warranty.expire_date = expiration_date @warranties << warranty end diff --git a/lib/vendors/ibm_vendor.rb b/lib/vendors/ibm_vendor.rb index f19eede..99e6180 100644 --- a/lib/vendors/ibm_vendor.rb +++ b/lib/vendors/ibm_vendor.rb @@ -26,19 +26,16 @@ def check details_location = tds2[0].text.strip details_expiration_date = Date.strptime(tds2[2].text.strip, "%Y-%m-%d") - warranty = { - :description => "", - :expired => (details_expiration_date < Time.now ? true : false), - :expire_date => details_expiration_date, - - :details => { - :product_id => details_product_id , - :type_model => details_type_model , - :serial_number => details_serial_number , - :location => details_location , - :expiration_date => details_expiration_date, - } - } + warranty = Warranty.new() + warranty.description = "" + warranty.expired = (details_expiration_date < Time.now ? true : false) + warranty.expire_date = details_expiration_date + warranty.product_id = details_product_id , + warranty.type_model = details_type_model , + warranty.serial_number = details_serial_number , + warranty.location = details_location , + warranty.expiration_date = details_expiration_date, + @warranties << warranty end diff --git a/lib/warranty.rb b/lib/warranty.rb index f6e491a..c42168e 100644 --- a/lib/warranty.rb +++ b/lib/warranty.rb @@ -1,8 +1,10 @@ module WarrantyCheck class Warranty - attr_accessor :description, :expired, :expire_date, :warrantydetails, :warranty_type, - :service_type, :start_date, :end_date, :status, :service_level, :deliverables + attr_accessor :description, :expired, :expire_date, :warrantydetails, + :warranty_type, :status, :service_level, :deliverables, :product_id, :serial_number, + :location, :service_type, :type_model, :start_date, :end_date, :details, + :provider, :days_left, :expiration_date def warrantydetails # this method is just a summary of the details as the individual details can be accessed by themselves