Sha256: 9b5bcbbcd37b8b178e3f41faf8ebe51ada2951d9a4b114bf803ad67beaae555d

Contents?: true

Size: 803 Bytes

Versions: 3

Compression:

Stored size: 803 Bytes

Contents

# Identify if tracking numbers are valid, and which service they belong to

# Information on validating tracking numbers found here:
# http://answers.google.com/answers/threadview/id/207899.html

require 'base'
require 'usps'
require 'fedex'
require 'ups'
require 'dhl'

class TrackingNumber
  TYPES = [UPS, FedExExpress, FedExGround, FedExGround18, FedExGround96, USPS91, USPS20, USPS13, DHL]

  def self.search(body)
    TYPES.collect { |type| type.search(body) }.flatten
  end

  def self.detect(tracking_number)
    detected = TYPES.collect do |test|
      t = test.new(tracking_number)
      t if t.valid?
    end
    found = detected.compact.first

    return found if found
    return Unknown.new(tracking_number)
  end

  def self.new(tracking_number)
    self.detect(tracking_number)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tracking_number-0.3.2 lib/tracking_number.rb
tracking_number-0.3.1 lib/tracking_number.rb
tracking_number-0.3.0 lib/tracking_number.rb