trackerific 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +2 -1
- data/Gemfile.lock +5 -1
- data/Rakefile +16 -0
- data/VERSION +1 -1
- data/doc/Trackerific.html +30 -20
- data/doc/Trackerific/Base.html +56 -89
- data/doc/Trackerific/Details.html +84 -33
- data/doc/Trackerific/Error.html +1 -1
- data/doc/Trackerific/Event.html +97 -59
- data/doc/Trackerific/FedEx.html +48 -89
- data/doc/Trackerific/UPS.html +46 -78
- data/doc/Trackerific/USPS.html +56 -145
- data/doc/_index.html +1 -1
- data/doc/file.README.html +1 -1
- data/doc/index.html +1 -1
- data/doc/method_list.html +13 -53
- data/doc/top-level-namespace.html +1 -1
- data/lib/fedex.rb +32 -17
- data/lib/trackerific.rb +41 -10
- data/lib/trackerific_details.rb +22 -3
- data/lib/trackerific_event.rb +27 -7
- data/lib/ups.rb +21 -12
- data/lib/usps.rb +32 -19
- data/spec/lib/trackerific_spec.rb +1 -7
- data/trackerific.gemspec +7 -7
- metadata +21 -7
- data/.yardoc/checksums +0 -6
- data/.yardoc/objects/root.dat +0 -0
- data/.yardoc/proxy_types +0 -0
    
        data/lib/ups.rb
    CHANGED
    
    | @@ -5,24 +5,23 @@ module Trackerific | |
| 5 5 |  | 
| 6 6 | 
             
              # Provides package tracking support for UPS.
         | 
| 7 7 | 
             
              class UPS < Base
         | 
| 8 | 
            +
                # setup HTTParty
         | 
| 8 9 | 
             
                include ::HTTParty
         | 
| 9 10 | 
             
                format :xml
         | 
| 11 | 
            +
                # use the test site for Rails development, production for everything else
         | 
| 10 12 | 
             
                base_uri defined?(Rails) ? case Rails.env
         | 
| 11 13 | 
             
                  when 'test','development' then 'https://wwwcie.ups.com/ups.app/xml'
         | 
| 12 14 | 
             
                  when 'production' then 'https://www.ups.com/ups.app/xml'
         | 
| 13 15 | 
             
                end : 'https://www.ups.com/ups.app/xml'
         | 
| 14 16 |  | 
| 15 | 
            -
                #  | 
| 16 | 
            -
                #  | 
| 17 | 
            -
                #
         | 
| 18 | 
            -
                # @return [Array] the required options for tracking a UPS package.
         | 
| 19 | 
            -
                def required_options
         | 
| 20 | 
            -
                  [:key, :user_id, :password]
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
                
         | 
| 23 | 
            -
                # Tracks a UPS package.
         | 
| 24 | 
            -
                # A Trackerific::Error is raised when a package cannot be tracked.
         | 
| 17 | 
            +
                # Tracks a UPS package
         | 
| 18 | 
            +
                # @param [String] package_id the package identifier
         | 
| 25 19 | 
             
                # @return [Trackerific::Details] the tracking details
         | 
| 20 | 
            +
                # @raise [Trackerific::Error] raised when the server returns an error (invalid credentials, tracking package, etc.)
         | 
| 21 | 
            +
                # @example Track a package
         | 
| 22 | 
            +
                #   ups = Trackerific::UPS.new key: 'api key', user_id: 'user', password: 'secret'
         | 
| 23 | 
            +
                #   details = ups.track_package("1Z12345E0291980793")
         | 
| 24 | 
            +
                # @api public
         | 
| 26 25 | 
             
                def track_package(package_id)
         | 
| 27 26 | 
             
                  super
         | 
| 28 27 | 
             
                  # connect to UPS via HTTParty
         | 
| @@ -40,8 +39,16 @@ module Trackerific | |
| 40 39 |  | 
| 41 40 | 
             
                protected
         | 
| 42 41 |  | 
| 42 | 
            +
                # The required options for tracking a UPS package
         | 
| 43 | 
            +
                # @return [Array] the required options for tracking a UPS package.
         | 
| 44 | 
            +
                # @api private
         | 
| 45 | 
            +
                def required_options
         | 
| 46 | 
            +
                  [:key, :user_id, :password]
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
                
         | 
| 43 49 | 
             
                # Parses the response from UPS
         | 
| 44 50 | 
             
                # @return [Trackerific::Details]
         | 
| 51 | 
            +
                # @api private
         | 
| 45 52 | 
             
                def parse_success_response(http_response)
         | 
| 46 53 | 
             
                  # get the activity from the UPS response
         | 
| 47 54 | 
             
                  activity = http_response['TrackResponse']['Shipment']['Package']['Activity']
         | 
| @@ -70,14 +77,16 @@ module Trackerific | |
| 70 77 | 
             
                  )
         | 
| 71 78 | 
             
                end
         | 
| 72 79 |  | 
| 73 | 
            -
                # Parses a UPS tracking response, and returns any errors | 
| 80 | 
            +
                # Parses a UPS tracking response, and returns any errors
         | 
| 74 81 | 
             
                # @return [String] the UPS tracking error
         | 
| 82 | 
            +
                # @api private
         | 
| 75 83 | 
             
                def parse_error_response(http_response)
         | 
| 76 84 | 
             
                  http_response['TrackResponse']['Response']['Error']['ErrorDescription']
         | 
| 77 85 | 
             
                end
         | 
| 78 86 |  | 
| 79 | 
            -
                # Builds the XML request to send to UPS for tracking a package | 
| 87 | 
            +
                # Builds the XML request to send to UPS for tracking a package
         | 
| 80 88 | 
             
                # @return [String] the XML request
         | 
| 89 | 
            +
                # @api private
         | 
| 81 90 | 
             
                def build_xml_request
         | 
| 82 91 | 
             
                  xml = ""
         | 
| 83 92 | 
             
                  builder = ::Builder::XmlMarkup.new(:target => xml)
         | 
    
        data/lib/usps.rb
    CHANGED
    
    | @@ -6,34 +6,35 @@ module Trackerific | |
| 6 6 |  | 
| 7 7 | 
             
              # Provides package tracking support for USPS.
         | 
| 8 8 | 
             
              class USPS < Base
         | 
| 9 | 
            +
                # setup HTTParty
         | 
| 9 10 | 
             
                include HTTParty
         | 
| 10 11 | 
             
                format :xml
         | 
| 12 | 
            +
                # use the test site for Rails development, production for everything else
         | 
| 11 13 | 
             
                base_uri defined?(Rails) ? case Rails.env
         | 
| 12 14 | 
             
                  when 'test', 'development' then 'http://testing.shippingapis.com'
         | 
| 13 15 | 
             
                  when 'production' then 'https://secure.shippingapis.com'
         | 
| 14 16 | 
             
                end : 'https://secure.shippingapis.com'
         | 
| 15 17 |  | 
| 16 | 
            -
                 | 
| 17 | 
            -
             | 
| 18 | 
            -
                  @options = options
         | 
| 19 | 
            -
                end
         | 
| 20 | 
            -
                
         | 
| 21 | 
            -
                # The required option for tracking a UPS package is :user_id
         | 
| 22 | 
            -
                #
         | 
| 23 | 
            -
                # @return [Array] the required options for tracking a UPS package.
         | 
| 24 | 
            -
                def required_options
         | 
| 25 | 
            -
                  [:user_id]
         | 
| 26 | 
            -
                end
         | 
| 27 | 
            -
                
         | 
| 28 | 
            -
                # Tracks a USPS package.
         | 
| 29 | 
            -
                # A Trackerific::Error is raised when a package cannot be tracked.
         | 
| 18 | 
            +
                # Tracks a USPS package
         | 
| 19 | 
            +
                # @param [String] package_id the package identifier
         | 
| 30 20 | 
             
                # @return [Trackerific::Details] the tracking details
         | 
| 21 | 
            +
                # @raise [Trackerific::Error] raised when the server returns an error (invalid credentials, tracking package, etc.)
         | 
| 22 | 
            +
                # @example Track a package
         | 
| 23 | 
            +
                #   usps = Trackerific::USPS.new user_id: 'user'
         | 
| 24 | 
            +
                #   details = ups.track_package("EJ958083578US")
         | 
| 25 | 
            +
                # @api public    
         | 
| 31 26 | 
             
                def track_package(package_id)
         | 
| 32 27 | 
             
                  super
         | 
| 28 | 
            +
                  # connect to the USPS shipping API via HTTParty
         | 
| 33 29 | 
             
                  response = self.class.get('/ShippingAPITest.dll', :query => {:API => 'TrackV2', :XML => build_xml_request}.to_query)
         | 
| 30 | 
            +
                  # throw any HTTP errors
         | 
| 34 31 | 
             
                  response.error! unless response.code == 200
         | 
| 32 | 
            +
                  # raise a Trackerific::Error if there is an error in the response, or if the
         | 
| 33 | 
            +
                  # tracking response is malformed
         | 
| 35 34 | 
             
                  raise Trackerific::Error, response['Error']['Description'] unless response['Error'].nil?
         | 
| 36 35 | 
             
                  raise Trackerific::Error, "Tracking information not found in response from server." if response['TrackResponse'].nil?
         | 
| 36 | 
            +
                  # get the tracking information from the response, and convert into a
         | 
| 37 | 
            +
                  # Trackerific::Details
         | 
| 37 38 | 
             
                  tracking_info = response['TrackResponse']['TrackInfo']
         | 
| 38 39 | 
             
                  details = []
         | 
| 39 40 | 
             
                  tracking_info['TrackDetail'].each do |d|
         | 
| @@ -47,6 +48,7 @@ module Trackerific | |
| 47 48 | 
             
                    desc = d[4..d.length].join(" ")
         | 
| 48 49 | 
             
                    details << Trackerific::Event.new(date, desc, "")
         | 
| 49 50 | 
             
                  end
         | 
| 51 | 
            +
                  # return the details
         | 
| 50 52 | 
             
                  Trackerific::Details.new(
         | 
| 51 53 | 
             
                    tracking_info['ID'],
         | 
| 52 54 | 
             
                    tracking_info['TrackSummary'],
         | 
| @@ -56,15 +58,26 @@ module Trackerific | |
| 56 58 |  | 
| 57 59 | 
             
                protected
         | 
| 58 60 |  | 
| 59 | 
            -
                #  | 
| 60 | 
            -
                # @return [ | 
| 61 | 
            +
                # The required options for tracking a UPS package
         | 
| 62 | 
            +
                # @return [Array] the required options for tracking a UPS package.
         | 
| 63 | 
            +
                # @api private
         | 
| 64 | 
            +
                def required_options
         | 
| 65 | 
            +
                  [:user_id]
         | 
| 66 | 
            +
                end
         | 
| 67 | 
            +
                
         | 
| 68 | 
            +
                # Builds an XML request to send to USPS
         | 
| 69 | 
            +
                # @return [String] the xml request
         | 
| 70 | 
            +
                # @api private
         | 
| 61 71 | 
             
                def build_xml_request
         | 
| 62 | 
            -
                   | 
| 63 | 
            -
                   | 
| 72 | 
            +
                  xml = ""
         | 
| 73 | 
            +
                  # set up the Builder
         | 
| 74 | 
            +
                  builder = ::Builder::XmlMarkup.new(:target => xml)
         | 
| 75 | 
            +
                  # build the request
         | 
| 64 76 | 
             
                  builder.TrackRequest(:USERID => @options[:user_id]) do |t|
         | 
| 65 77 | 
             
                    t.TrackID(:ID => @package_id)
         | 
| 66 78 | 
             
                  end
         | 
| 67 | 
            -
                  return  | 
| 79 | 
            +
                  # return the XML
         | 
| 80 | 
            +
                  xml
         | 
| 68 81 | 
             
                end
         | 
| 69 82 |  | 
| 70 83 | 
             
              end
         | 
| @@ -11,13 +11,7 @@ describe 'Trackerific::Base' do | |
| 11 11 | 
             
              before(:all) do
         | 
| 12 12 | 
             
                @base = Trackerific::Base.new
         | 
| 13 13 | 
             
              end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
              describe :required_options do
         | 
| 16 | 
            -
                it "should return an Array" do
         | 
| 17 | 
            -
                  @base.required_options().should be_kind_of Array
         | 
| 18 | 
            -
                end
         | 
| 19 | 
            -
              end
         | 
| 20 | 
            -
              
         | 
| 14 | 
            +
             | 
| 21 15 | 
             
              describe "tracking_service" do
         | 
| 22 16 | 
             
                include Trackerific
         | 
| 23 17 | 
             
                context "when given a UPS tracking number" do
         | 
    
        data/trackerific.gemspec
    CHANGED
    
    | @@ -5,7 +5,7 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{trackerific}
         | 
| 8 | 
            -
              s.version = "0.3. | 
| 8 | 
            +
              s.version = "0.3.2"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["Travis Haynes"]
         | 
| @@ -18,9 +18,6 @@ Gem::Specification.new do |s| | |
| 18 18 | 
             
              ]
         | 
| 19 19 | 
             
              s.files = [
         | 
| 20 20 | 
             
                ".rspec",
         | 
| 21 | 
            -
                ".yardoc/checksums",
         | 
| 22 | 
            -
                ".yardoc/objects/root.dat",
         | 
| 23 | 
            -
                ".yardoc/proxy_types",
         | 
| 24 21 | 
             
                "Gemfile",
         | 
| 25 22 | 
             
                "Gemfile.lock",
         | 
| 26 23 | 
             
                "LICENSE.txt",
         | 
| @@ -100,7 +97,8 @@ Gem::Specification.new do |s| | |
| 100 97 | 
             
                  s.add_development_dependency(%q<bundler>, [">= 1.0.13"])
         | 
| 101 98 | 
             
                  s.add_development_dependency(%q<jeweler>, [">= 1.5.2"])
         | 
| 102 99 | 
             
                  s.add_development_dependency(%q<rspec-rails>, [">= 2.6.1"])
         | 
| 103 | 
            -
                  s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
         | 
| 100 | 
            +
                  s.add_development_dependency(%q<ruby-debug19>, [">= 0.11.6"])
         | 
| 101 | 
            +
                  s.add_development_dependency(%q<yardstick>, [">= 0.4.0"])
         | 
| 104 102 | 
             
                else
         | 
| 105 103 | 
             
                  s.add_dependency(%q<rails>, [">= 3.0.0"])
         | 
| 106 104 | 
             
                  s.add_dependency(%q<httparty>, [">= 0.7.7"])
         | 
| @@ -108,7 +106,8 @@ Gem::Specification.new do |s| | |
| 108 106 | 
             
                  s.add_dependency(%q<bundler>, [">= 1.0.13"])
         | 
| 109 107 | 
             
                  s.add_dependency(%q<jeweler>, [">= 1.5.2"])
         | 
| 110 108 | 
             
                  s.add_dependency(%q<rspec-rails>, [">= 2.6.1"])
         | 
| 111 | 
            -
                  s.add_dependency(%q<ruby-debug19>, [">= 0"])
         | 
| 109 | 
            +
                  s.add_dependency(%q<ruby-debug19>, [">= 0.11.6"])
         | 
| 110 | 
            +
                  s.add_dependency(%q<yardstick>, [">= 0.4.0"])
         | 
| 112 111 | 
             
                end
         | 
| 113 112 | 
             
              else
         | 
| 114 113 | 
             
                s.add_dependency(%q<rails>, [">= 3.0.0"])
         | 
| @@ -117,7 +116,8 @@ Gem::Specification.new do |s| | |
| 117 116 | 
             
                s.add_dependency(%q<bundler>, [">= 1.0.13"])
         | 
| 118 117 | 
             
                s.add_dependency(%q<jeweler>, [">= 1.5.2"])
         | 
| 119 118 | 
             
                s.add_dependency(%q<rspec-rails>, [">= 2.6.1"])
         | 
| 120 | 
            -
                s.add_dependency(%q<ruby-debug19>, [">= 0"])
         | 
| 119 | 
            +
                s.add_dependency(%q<ruby-debug19>, [">= 0.11.6"])
         | 
| 120 | 
            +
                s.add_dependency(%q<yardstick>, [">= 0.4.0"])
         | 
| 121 121 | 
             
              end
         | 
| 122 122 | 
             
            end
         | 
| 123 123 |  | 
    
        metadata
    CHANGED
    
    | @@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version | |
| 5 5 | 
             
              segments: 
         | 
| 6 6 | 
             
              - 0
         | 
| 7 7 | 
             
              - 3
         | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              version: 0.3. | 
| 8 | 
            +
              - 2
         | 
| 9 | 
            +
              version: 0.3.2
         | 
| 10 10 | 
             
            platform: ruby
         | 
| 11 11 | 
             
            authors: 
         | 
| 12 12 | 
             
            - Travis Haynes
         | 
| @@ -116,10 +116,27 @@ dependencies: | |
| 116 116 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 117 117 | 
             
                    segments: 
         | 
| 118 118 | 
             
                    - 0
         | 
| 119 | 
            -
                     | 
| 119 | 
            +
                    - 11
         | 
| 120 | 
            +
                    - 6
         | 
| 121 | 
            +
                    version: 0.11.6
         | 
| 120 122 | 
             
              type: :development
         | 
| 121 123 | 
             
              prerelease: false
         | 
| 122 124 | 
             
              version_requirements: *id007
         | 
| 125 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 126 | 
            +
              name: yardstick
         | 
| 127 | 
            +
              requirement: &id008 !ruby/object:Gem::Requirement 
         | 
| 128 | 
            +
                none: false
         | 
| 129 | 
            +
                requirements: 
         | 
| 130 | 
            +
                - - ">="
         | 
| 131 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 132 | 
            +
                    segments: 
         | 
| 133 | 
            +
                    - 0
         | 
| 134 | 
            +
                    - 4
         | 
| 135 | 
            +
                    - 0
         | 
| 136 | 
            +
                    version: 0.4.0
         | 
| 137 | 
            +
              type: :development
         | 
| 138 | 
            +
              prerelease: false
         | 
| 139 | 
            +
              version_requirements: *id008
         | 
| 123 140 | 
             
            description: Trackerific provides USPS, FedEx and UPS package tracking to Rails.
         | 
| 124 141 | 
             
            email: travis.j.haynes@gmail.com
         | 
| 125 142 | 
             
            executables: []
         | 
| @@ -131,9 +148,6 @@ extra_rdoc_files: | |
| 131 148 | 
             
            - README.rdoc
         | 
| 132 149 | 
             
            files: 
         | 
| 133 150 | 
             
            - .rspec
         | 
| 134 | 
            -
            - .yardoc/checksums
         | 
| 135 | 
            -
            - .yardoc/objects/root.dat
         | 
| 136 | 
            -
            - .yardoc/proxy_types
         | 
| 137 151 | 
             
            - Gemfile
         | 
| 138 152 | 
             
            - Gemfile.lock
         | 
| 139 153 | 
             
            - LICENSE.txt
         | 
| @@ -198,7 +212,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 198 212 | 
             
              requirements: 
         | 
| 199 213 | 
             
              - - ">="
         | 
| 200 214 | 
             
                - !ruby/object:Gem::Version 
         | 
| 201 | 
            -
                  hash:  | 
| 215 | 
            +
                  hash: 154150799
         | 
| 202 216 | 
             
                  segments: 
         | 
| 203 217 | 
             
                  - 0
         | 
| 204 218 | 
             
                  version: "0"
         | 
    
        data/.yardoc/checksums
    DELETED
    
    | @@ -1,6 +0,0 @@ | |
| 1 | 
            -
            lib/ups.rb 2b98972c48bd4032d5a6cd2017549ce394e8ea0d
         | 
| 2 | 
            -
            lib/usps.rb b6e83100cd5225341ce5a61f0ff843440309e063
         | 
| 3 | 
            -
            lib/fedex.rb ba42d502349530fe2518303c23d2b8babecd5f2d
         | 
| 4 | 
            -
            lib/trackerific.rb 78b145e898c315d3e80aaef686877cb674621fed
         | 
| 5 | 
            -
            lib/trackerific_event.rb 21e48404ba7b8b90114ce0d74d38248a637a0452
         | 
| 6 | 
            -
            lib/trackerific_details.rb d3c5cc1844259f2889b4d82920b12ad57fe4d412
         | 
    
        data/.yardoc/objects/root.dat
    DELETED
    
    | Binary file | 
    
        data/.yardoc/proxy_types
    DELETED
    
    | Binary file |