postcode_validation 0.0.4 → 0.0.5
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.
- checksums.yaml +4 -4
- data/README.md +6 -5
- data/lib/postcode_validation/domain/potential_address_match.rb +14 -3
- data/lib/postcode_validation/gateway/pca_potential_address_match.rb +2 -1
- data/lib/postcode_validation/use_case/validate_address.rb +1 -1
- data/lib/postcode_validation/version.rb +1 -1
- metadata +23 -23
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b1b7365d65c023287b34e28abfc3cfe8b1db68f1
         | 
| 4 | 
            +
              data.tar.gz: 9d6173ff64a453177a2785b00268ef0e05174377
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d9a0615d997a863c470ed6a9730d90f677be4dc45a10bd9c6b46e1c9532f962976007477ea23a1fdf2ce2878c7ce9f20964c3ae5e1aa53fc2cb0ec76a9640bb7
         | 
| 7 | 
            +
              data.tar.gz: c3746ff38a800745b7a355155598132bf6bac61e8c46f6c2114ffa9acedeeae8bea91e9f3af45357745323a3ba1740652f91d8ac0c7449e5ac22c2aa1e5a8fc6
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,12 +1,12 @@ | |
| 1 1 | 
             
            # PostcodeValidation [](https://travis-ci.org/madetech/postcode_validation)
         | 
| 2 2 |  | 
| 3 3 | 
             
            This gem provides basic postcode validation functionality which can be used in any application
         | 
| 4 | 
            -
             | 
| 4 | 
            +
             | 
| 5 5 | 
             
            The specific validation that we perform goes beyond simple regex matching, to determine if the postcode actually exists.
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            To do this it uses PCAPredict.com's Capture+ API. | 
| 6 | 
            +
             | 
| 7 | 
            +
            To do this it uses PCAPredict.com's Capture+ API.
         | 
| 8 8 | 
             
            By leveraging this service we are able to provide validation against country's postcode that they support.
         | 
| 9 | 
            -
             | 
| 9 | 
            +
             | 
| 10 10 | 
             
            It also comes with out of the box plugins for:
         | 
| 11 11 |  | 
| 12 12 | 
             
            - Solidus
         | 
| @@ -29,7 +29,7 @@ Or install it yourself as: | |
| 29 29 |  | 
| 30 30 | 
             
            ## Usage
         | 
| 31 31 |  | 
| 32 | 
            -
            This gem relies on ```ENV['POSTCODE_ANYWHERE_KEY']``` being set to a valid PCAPredict service key for Capture+. | 
| 32 | 
            +
            This gem relies on ```ENV['POSTCODE_ANYWHERE_KEY']``` being set to a valid PCAPredict service key for Capture+.
         | 
| 33 33 |  | 
| 34 34 | 
             
            One of the easiest ways to do this is to use the ```dotenv``` gem for this in your host application.
         | 
| 35 35 |  | 
| @@ -86,3 +86,4 @@ Key contributions: | |
| 86 86 |  | 
| 87 87 | 
             
            * [Craig J. Bass](https://github.com/craigjbass)
         | 
| 88 88 | 
             
            * [Seb Ashton](https://github.com/sebashton)
         | 
| 89 | 
            +
            * [Chris Blackburn](https://github.com/chrisblackburn)
         | 
| @@ -1,18 +1,29 @@ | |
| 1 1 | 
             
            module PostcodeValidation
         | 
| 2 2 | 
             
              module Domain
         | 
| 3 3 | 
             
                class PotentialAddressMatch
         | 
| 4 | 
            -
                  def initialize(text:)
         | 
| 4 | 
            +
                  def initialize(text:, description:)
         | 
| 5 5 | 
             
                    @text = text
         | 
| 6 | 
            +
                    @description = description
         | 
| 6 7 | 
             
                  end
         | 
| 7 8 |  | 
| 8 9 | 
             
                  def postcode_matches?(postcode)
         | 
| 9 | 
            -
                    letters_and_numbers_only( | 
| 10 | 
            +
                    normalised_postcode = letters_and_numbers_only(postcode.upcase)
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    text_includes?(normalised_postcode) || description_includes?(normalised_postcode)
         | 
| 10 13 | 
             
                  end
         | 
| 11 14 |  | 
| 12 | 
            -
                  attr_reader :text
         | 
| 15 | 
            +
                  attr_reader :text, :description
         | 
| 13 16 |  | 
| 14 17 | 
             
                  private
         | 
| 15 18 |  | 
| 19 | 
            +
                  def text_includes?(postcode)
         | 
| 20 | 
            +
                    letters_and_numbers_only(text).include?(postcode)
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  def description_includes?(postcode)
         | 
| 24 | 
            +
                    letters_and_numbers_only(description).include?(postcode)
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
             | 
| 16 27 | 
             
                  def letters_and_numbers_only(postcode)
         | 
| 17 28 | 
             
                    postcode.gsub(/[^0-9a-zA-Z]/, '')
         | 
| 18 29 | 
             
                  end
         | 
| @@ -14,7 +14,8 @@ module PostcodeValidation | |
| 14 14 | 
             
                    response.map do |row|
         | 
| 15 15 | 
             
                      raise PCARequestError, error_message(row) if row.key?('Error')
         | 
| 16 16 |  | 
| 17 | 
            -
                      PostcodeValidation::Domain::PotentialAddressMatch.new(text: row['Text'] | 
| 17 | 
            +
                      PostcodeValidation::Domain::PotentialAddressMatch.new(text: row['Text'],
         | 
| 18 | 
            +
                                                                            description: row['Description'])
         | 
| 18 19 | 
             
                    end
         | 
| 19 20 | 
             
                  end
         | 
| 20 21 |  | 
| @@ -27,7 +27,7 @@ module PostcodeValidation | |
| 27 27 | 
             
                    matches = potential_address_matches
         | 
| 28 28 | 
             
                    return false if matches.first.nil?
         | 
| 29 29 |  | 
| 30 | 
            -
                    matches. | 
| 30 | 
            +
                    matches.each { |address| return true if address.postcode_matches? postcode }
         | 
| 31 31 | 
             
                    false
         | 
| 32 32 | 
             
                  end
         | 
| 33 33 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,111 +1,111 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: postcode_validation
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.5
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Craig J. Bass
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2017-02-06 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: httparty
         | 
| 15 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 | 
            -
                - -  | 
| 17 | 
            +
                - - '>='
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 19 | 
             
                    version: '0'
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 | 
            -
                - -  | 
| 24 | 
            +
                - - '>='
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: '0'
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: bundler
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 | 
            -
                - -  | 
| 31 | 
            +
                - - ~>
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 33 | 
             
                    version: '1.13'
         | 
| 34 34 | 
             
              type: :development
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 | 
            -
                - -  | 
| 38 | 
            +
                - - ~>
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 40 | 
             
                    version: '1.13'
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 42 | 
             
              name: rake
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 44 | 
             
                requirements:
         | 
| 45 | 
            -
                - -  | 
| 45 | 
            +
                - - ~>
         | 
| 46 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 47 | 
             
                    version: '10.0'
         | 
| 48 48 | 
             
              type: :development
         | 
| 49 49 | 
             
              prerelease: false
         | 
| 50 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 | 
            -
                - -  | 
| 52 | 
            +
                - - ~>
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 54 | 
             
                    version: '10.0'
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 56 | 
             
              name: rspec
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 58 | 
             
                requirements:
         | 
| 59 | 
            -
                - -  | 
| 59 | 
            +
                - - ~>
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 61 | 
             
                    version: '3.0'
         | 
| 62 62 | 
             
              type: :development
         | 
| 63 63 | 
             
              prerelease: false
         | 
| 64 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 65 | 
             
                requirements:
         | 
| 66 | 
            -
                - -  | 
| 66 | 
            +
                - - ~>
         | 
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 68 | 
             
                    version: '3.0'
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 70 | 
             
              name: vcr
         | 
| 71 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 72 | 
             
                requirements:
         | 
| 73 | 
            -
                - -  | 
| 73 | 
            +
                - - '>='
         | 
| 74 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 75 | 
             
                    version: '0'
         | 
| 76 76 | 
             
              type: :development
         | 
| 77 77 | 
             
              prerelease: false
         | 
| 78 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 79 | 
             
                requirements:
         | 
| 80 | 
            -
                - -  | 
| 80 | 
            +
                - - '>='
         | 
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 82 | 
             
                    version: '0'
         | 
| 83 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 84 | 
             
              name: webmock
         | 
| 85 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 86 | 
             
                requirements:
         | 
| 87 | 
            -
                - -  | 
| 87 | 
            +
                - - '>='
         | 
| 88 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 89 | 
             
                    version: '0'
         | 
| 90 90 | 
             
              type: :development
         | 
| 91 91 | 
             
              prerelease: false
         | 
| 92 92 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 93 | 
             
                requirements:
         | 
| 94 | 
            -
                - -  | 
| 94 | 
            +
                - - '>='
         | 
| 95 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 96 | 
             
                    version: '0'
         | 
| 97 97 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 98 98 | 
             
              name: dotenv
         | 
| 99 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 100 | 
             
                requirements:
         | 
| 101 | 
            -
                - -  | 
| 101 | 
            +
                - - '>='
         | 
| 102 102 | 
             
                  - !ruby/object:Gem::Version
         | 
| 103 103 | 
             
                    version: '0'
         | 
| 104 104 | 
             
              type: :development
         | 
| 105 105 | 
             
              prerelease: false
         | 
| 106 106 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 107 | 
             
                requirements:
         | 
| 108 | 
            -
                - -  | 
| 108 | 
            +
                - - '>='
         | 
| 109 109 | 
             
                  - !ruby/object:Gem::Version
         | 
| 110 110 | 
             
                    version: '0'
         | 
| 111 111 | 
             
            description: 
         | 
| @@ -115,10 +115,10 @@ executables: [] | |
| 115 115 | 
             
            extensions: []
         | 
| 116 116 | 
             
            extra_rdoc_files: []
         | 
| 117 117 | 
             
            files:
         | 
| 118 | 
            -
            -  | 
| 119 | 
            -
            -  | 
| 120 | 
            -
            -  | 
| 121 | 
            -
            -  | 
| 118 | 
            +
            - .env
         | 
| 119 | 
            +
            - .gitignore
         | 
| 120 | 
            +
            - .rspec
         | 
| 121 | 
            +
            - .travis.yml
         | 
| 122 122 | 
             
            - Gemfile
         | 
| 123 123 | 
             
            - LICENSE.txt
         | 
| 124 124 | 
             
            - README.md
         | 
| @@ -142,17 +142,17 @@ require_paths: | |
| 142 142 | 
             
            - lib
         | 
| 143 143 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 144 144 | 
             
              requirements:
         | 
| 145 | 
            -
              - -  | 
| 145 | 
            +
              - - '>='
         | 
| 146 146 | 
             
                - !ruby/object:Gem::Version
         | 
| 147 147 | 
             
                  version: '0'
         | 
| 148 148 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 149 149 | 
             
              requirements:
         | 
| 150 | 
            -
              - -  | 
| 150 | 
            +
              - - '>='
         | 
| 151 151 | 
             
                - !ruby/object:Gem::Version
         | 
| 152 152 | 
             
                  version: '0'
         | 
| 153 153 | 
             
            requirements: []
         | 
| 154 154 | 
             
            rubyforge_project: 
         | 
| 155 | 
            -
            rubygems_version: 2. | 
| 155 | 
            +
            rubygems_version: 2.0.14.1
         | 
| 156 156 | 
             
            signing_key: 
         | 
| 157 157 | 
             
            specification_version: 4
         | 
| 158 158 | 
             
            summary: Provides really basic postcode validation (intended for eCommerce platforms).
         |