Class: Scraper::ImeiReport

Inherits:
Object
  • Object
show all
Defined in:
lib/scraper/imei_report.rb

Overview

ImeiReport class which comunicates with parser and crawler

Instance Method Summary (collapse)

Constructor Details

- (ImeiReport) initialize

Initialize



9
10
11
12
# File 'lib/scraper/imei_report.rb', line 9

def initialize
  @crawler = Crawler::AppleImei.new
  @parser = Parser::ImeiPage.new
end

Instance Method Details

- (Hash) get(imei)

Get IMEI info

Parameters:

  • imei (String)

Returns:

  • (Hash)

    returns parsed info about the IMEI



21
22
23
24
25
26
27
28
29
# File 'lib/scraper/imei_report.rb', line 21

def get(imei)
  ret = {imei: imei, valid: valid?(imei)}
  return ret unless ret[:valid]

  @crawler.request_imei(imei)
  ret[:status] = @crawler.status_code
  ret[:result] = @parser.parse(@crawler.page) if @crawler.parsable?
  ret
end

- (Boolean) valid?(imei)

Validate IMEI number

Parameters:

  • imei (Integer, String)

Returns:

  • (Boolean)

    returns result of IMEI validation



38
39
40
41
42
43
44
45
46
47
# File 'lib/scraper/imei_report.rb', line 38

def valid?(imei)
  imei = imei.to_s
  return false unless /\A\d{15}\z/ =~ imei

  nums = imei[0, 14].split("").map(&:to_i)
    .each_with_index
    .map { |n, i| (i % 2).zero? ? n : (n*2).to_s.split("") }
  sum = [nums].flatten.map(&:to_i).reduce(&:+)
  10 - sum % 10 == imei[-1].to_i
end