checkability 0.4.0 → 0.6.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.
- checksums.yaml +5 -5
 - data/Rakefile +2 -0
 - data/bin/checkability +1 -0
 - data/lib/checkability.rb +4 -0
 - data/lib/checkability/acts_as_checkable.rb +13 -9
 - data/lib/checkability/chain_of_resp/abstract_handler.rb +42 -0
 - data/lib/checkability/chain_of_resp/handler.rb +31 -0
 - data/lib/checkability/checkable.rb +31 -19
 - data/lib/checkability/external_api_checker.rb +17 -11
 - data/lib/checkability/external_api_connector.rb +2 -0
 - data/lib/checkability/railtie.rb +2 -0
 - data/lib/checkability/storage_checker.rb +9 -5
 - data/lib/checkability/validator.rb +6 -4
 - data/lib/checkability/version.rb +3 -1
 - data/lib/tasks/checkability_tasks.rake +1 -0
 - metadata +9 -8
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 2 
     | 
    
         
            +
            SHA256:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: b81bedd5fd904185fc57a5627f6848dbb608ba3fa5155653c6d096aed6f4c95c
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 29948f5309901c9769b899e4660c8d7a0677e29dbf2b1f36af663525dfc1d957
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 693df60213127f59a954ef39977c86ad78ac32198b478f7f55e45a8b4df900c3b61cd1d58ac3540db9557979545908266bb2a9c3de60f5051227e079ae6d6444
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 45e80fe8b9b1bf424e529c93b48d66329772bc776dfbccf8055539ca832f219ac3f67685a11621ff4dfb32c23f6d7cebe819f92530d864fda84f60aa74c04aee
         
     | 
    
        data/Rakefile
    CHANGED
    
    
    
        data/bin/checkability
    CHANGED
    
    
    
        data/lib/checkability.rb
    CHANGED
    
    | 
         @@ -1,3 +1,5 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            require 'active_record'
         
     | 
| 
       2 
4 
     | 
    
         
             
            require 'active_support'
         
     | 
| 
       3 
5 
     | 
    
         
             
            require_relative 'checkability/version'
         
     | 
| 
         @@ -7,5 +9,7 @@ require_relative 'checkability/external_api_checker' 
     | 
|
| 
       7 
9 
     | 
    
         
             
            require_relative 'checkability/external_api_connector'
         
     | 
| 
       8 
10 
     | 
    
         
             
            require_relative 'checkability/validator'
         
     | 
| 
       9 
11 
     | 
    
         
             
            require_relative 'checkability/acts_as_checkable'
         
     | 
| 
      
 12 
     | 
    
         
            +
            require_relative 'checkability/chain_of_resp/handler'
         
     | 
| 
      
 13 
     | 
    
         
            +
            require_relative 'checkability/chain_of_resp/abstract_handler'
         
     | 
| 
       10 
14 
     | 
    
         | 
| 
       11 
15 
     | 
    
         
             
            ActiveRecord::Base.include Checkability::ActsAsCheckable
         
     | 
| 
         @@ -1,3 +1,5 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            module Checkability
         
     | 
| 
       2 
4 
     | 
    
         
             
              # Adding class and instance methods
         
     | 
| 
       3 
5 
     | 
    
         
             
              #
         
     | 
| 
         @@ -10,9 +12,7 @@ module Checkability 
     | 
|
| 
       10 
12 
     | 
    
         | 
| 
       11 
13 
     | 
    
         
             
                class_methods do
         
     | 
| 
       12 
14 
     | 
    
         
             
                  def acts_as_checkable(options = {})
         
     | 
| 
       13 
     | 
    
         
            -
                    if !options.is_a?(Hash) && !options.empty?
         
     | 
| 
       14 
     | 
    
         
            -
                      raise ArgumentError, "Hash expected, got #{options.class.name}"
         
     | 
| 
       15 
     | 
    
         
            -
                    end
         
     | 
| 
      
 15 
     | 
    
         
            +
                    raise ArgumentError, "Hash expected, got #{options.class.name}" if !options.is_a?(Hash) && !options.empty?
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
                    class_attribute :checkable_conf
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
         @@ -24,12 +24,20 @@ module Checkability 
     | 
|
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
                def perform_check
         
     | 
| 
       26 
26 
     | 
    
         
             
                  _setup
         
     | 
| 
       27 
     | 
    
         
            -
                  self.allowed =  
     | 
| 
       28 
     | 
    
         
            -
                  messages << "'#{ 
     | 
| 
      
 27 
     | 
    
         
            +
                  self.allowed = Checkability::Checkable.new(self).check(checkable_conf)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  messages << "#{allowed}::'#{_value}' is #{_allowness}. "
         
     | 
| 
       29 
29 
     | 
    
         
             
                end
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
                private
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
      
 33 
     | 
    
         
            +
                def _value
         
     | 
| 
      
 34 
     | 
    
         
            +
                  send(_attr_name)
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                def _attr_name
         
     | 
| 
      
 38 
     | 
    
         
            +
                  checkable_conf[:attr_name] || :value
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
       33 
41 
     | 
    
         
             
                def _setup
         
     | 
| 
       34 
42 
     | 
    
         
             
                  self.allowed = nil
         
     | 
| 
       35 
43 
     | 
    
         
             
                  self.messages = []
         
     | 
| 
         @@ -38,9 +46,5 @@ module Checkability 
     | 
|
| 
       38 
46 
     | 
    
         
             
                def _allowness
         
     | 
| 
       39 
47 
     | 
    
         
             
                  allowed ? 'ALLOWED' : 'NOT allowed'
         
     | 
| 
       40 
48 
     | 
    
         
             
                end
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
                def _check
         
     | 
| 
       43 
     | 
    
         
            -
                  Checkability::Checkable.new(self).check(checkable_conf)
         
     | 
| 
       44 
     | 
    
         
            -
                end
         
     | 
| 
       45 
49 
     | 
    
         
             
              end
         
     | 
| 
       46 
50 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,42 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require_relative 'handler'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            module ChainOfResp
         
     | 
| 
      
 6 
     | 
    
         
            +
              # @abstract
         
     | 
| 
      
 7 
     | 
    
         
            +
              class AbstractHandler < ChainOfResp::Handler
         
     | 
| 
      
 8 
     | 
    
         
            +
                # @return [Handler]
         
     | 
| 
      
 9 
     | 
    
         
            +
                attr_reader :stop_process_on_failure, :stop_process_on_success
         
     | 
| 
      
 10 
     | 
    
         
            +
                attr_accessor :handler, :result
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                def initialize(opts = {})
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @stop_process_on_failure = opts[:stop_process_on_failure] || false
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @stop_process_on_success = opts[:stop_process_on_success] || false
         
     | 
| 
      
 15 
     | 
    
         
            +
                  @next_handler = nil
         
     | 
| 
      
 16 
     | 
    
         
            +
                  post_initialize(opts) # implemented in subclass
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                # @param [Handler] handler
         
     | 
| 
      
 20 
     | 
    
         
            +
                #
         
     | 
| 
      
 21 
     | 
    
         
            +
                # @return [Handler]
         
     | 
| 
      
 22 
     | 
    
         
            +
                def next_handler(handler)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  @handler = handler if handler
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                  handler
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                # @abstract
         
     | 
| 
      
 29 
     | 
    
         
            +
                #
         
     | 
| 
      
 30 
     | 
    
         
            +
                # @param [String] request
         
     | 
| 
      
 31 
     | 
    
         
            +
                #
         
     | 
| 
      
 32 
     | 
    
         
            +
                # @return [Boolean, nil]
         
     | 
| 
      
 33 
     | 
    
         
            +
                def handle(request)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  check = check_value(request) # imlemented in subclass
         
     | 
| 
      
 35 
     | 
    
         
            +
                  return true  if check && stop_process_on_success
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                  return false if !check && stop_process_on_failure
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                  handler&.handle(request)
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
              end
         
     | 
| 
      
 42 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module ChainOfResp
         
     | 
| 
      
 4 
     | 
    
         
            +
              # @abstract
         
     | 
| 
      
 5 
     | 
    
         
            +
              class Handler
         
     | 
| 
      
 6 
     | 
    
         
            +
                # @abstract
         
     | 
| 
      
 7 
     | 
    
         
            +
                #
         
     | 
| 
      
 8 
     | 
    
         
            +
                # @param [Handler] handler
         
     | 
| 
      
 9 
     | 
    
         
            +
                def next_handler=(_handler)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  raise NotImplementedError, "#{self.class} has not implemented method '#{__method__}'"
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                # @abstract
         
     | 
| 
      
 14 
     | 
    
         
            +
                #
         
     | 
| 
      
 15 
     | 
    
         
            +
                # @param [String] request
         
     | 
| 
      
 16 
     | 
    
         
            +
                #
         
     | 
| 
      
 17 
     | 
    
         
            +
                # @return [String, nil]
         
     | 
| 
      
 18 
     | 
    
         
            +
                def handle(_request)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  raise NotImplementedError, "#{self.class} has not implemented method '#{__method__}'"
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                # @abstract
         
     | 
| 
      
 23 
     | 
    
         
            +
                #
         
     | 
| 
      
 24 
     | 
    
         
            +
                # @param [String] request
         
     | 
| 
      
 25 
     | 
    
         
            +
                #
         
     | 
| 
      
 26 
     | 
    
         
            +
                # @return [Boolean, true|false]
         
     | 
| 
      
 27 
     | 
    
         
            +
                def check_value(_request)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  raise NotImplementedError, "#{self.class} has not implemented method '#{__method__}'"
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,3 +1,5 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            module Checkability
         
     | 
| 
       2 
4 
     | 
    
         
             
              # Implements check method to Iterate on chechers
         
     | 
| 
       3 
5 
     | 
    
         
             
              # Possible to implemet as Iterator in future
         
     | 
| 
         @@ -7,32 +9,42 @@ module Checkability 
     | 
|
| 
       7 
9 
     | 
    
         | 
| 
       8 
10 
     | 
    
         
             
                def initialize(checkable)
         
     | 
| 
       9 
11 
     | 
    
         
             
                  @checkable = checkable
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @checkable.messages = []
         
     | 
| 
       10 
13 
     | 
    
         
             
                end
         
     | 
| 
       11 
14 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                #  
     | 
| 
       13 
     | 
    
         
            -
                # 
     | 
| 
       14 
     | 
    
         
            -
                # 
     | 
| 
       15 
     | 
    
         
            -
                # 
     | 
| 
       16 
     | 
    
         
            -
                #  
     | 
| 
       17 
     | 
    
         
            -
                # 
     | 
| 
      
 15 
     | 
    
         
            +
                # As in result handlers should behave like this:
         
     | 
| 
      
 16 
     | 
    
         
            +
                # validator    .set_next(storage)
         
     | 
| 
      
 17 
     | 
    
         
            +
                # storage      .set_next(api_validator)
         
     | 
| 
      
 18 
     | 
    
         
            +
                # api_validator.set_next(api_finder)
         
     | 
| 
      
 19 
     | 
    
         
            +
                # api_validator.set_next(nil)
         
     | 
| 
      
 20 
     | 
    
         
            +
                #
         
     | 
| 
      
 21 
     | 
    
         
            +
                # validator.handle(request)
         
     | 
| 
      
 22 
     | 
    
         
            +
                #
         
     | 
| 
       18 
23 
     | 
    
         
             
                def check(opts = {})
         
     | 
| 
       19 
     | 
    
         
            -
                   
     | 
| 
       20 
     | 
    
         
            -
                  opts[ 
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                  end
         
     | 
| 
       25 
     | 
    
         
            -
                  opts[:strategy].call(results)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  first_handler_name = opts[:first_handler]
         
     | 
| 
      
 25 
     | 
    
         
            +
                  _handlers(opts)[first_handler_name].handle(checkable)
         
     | 
| 
      
 26 
     | 
    
         
            +
                rescue StandardError => e
         
     | 
| 
      
 27 
     | 
    
         
            +
                  checkable.messages << "false::#{e}: #{opts}."
         
     | 
| 
      
 28 
     | 
    
         
            +
                  false
         
     | 
| 
       26 
29 
     | 
    
         
             
                end
         
     | 
| 
       27 
30 
     | 
    
         | 
| 
       28 
31 
     | 
    
         
             
                private
         
     | 
| 
       29 
32 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
                def  
     | 
| 
       31 
     | 
    
         
            -
                   
     | 
| 
       32 
     | 
    
         
            -
                   
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                   
     | 
| 
      
 33 
     | 
    
         
            +
                def _handlers(opts)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  handler_confs = opts[:handler_confs]
         
     | 
| 
      
 35 
     | 
    
         
            +
                  handlers = {}
         
     | 
| 
      
 36 
     | 
    
         
            +
                  handler_confs.each do |handler_name, handler_conf|
         
     | 
| 
      
 37 
     | 
    
         
            +
                    handlers[handler_name] = _make_handler(handler_name, handler_conf)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
                  handlers.each do |handler_name, handler|
         
     | 
| 
      
 40 
     | 
    
         
            +
                    next_handler_name = handler_confs[handler_name][:next_handler]
         
     | 
| 
      
 41 
     | 
    
         
            +
                    handler.next_handler(handlers[next_handler_name])
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                def _make_handler(_name, conf)
         
     | 
| 
      
 46 
     | 
    
         
            +
                  k = Checkability.const_get conf[:name].to_s.camelize
         
     | 
| 
      
 47 
     | 
    
         
            +
                  k.new(conf)
         
     | 
| 
       36 
48 
     | 
    
         
             
                end
         
     | 
| 
       37 
49 
     | 
    
         
             
              end
         
     | 
| 
       38 
50 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,16 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            require 'faraday'
         
     | 
| 
       2 
4 
     | 
    
         
             
            require 'net/http'
         
     | 
| 
       3 
5 
     | 
    
         
             
            require 'net/https'
         
     | 
| 
       4 
6 
     | 
    
         
             
            require 'json'
         
     | 
| 
       5 
7 
     | 
    
         | 
| 
      
 8 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            require_relative 'chain_of_resp/abstract_handler'
         
     | 
| 
       6 
11 
     | 
    
         
             
            module Checkability
         
     | 
| 
       7 
12 
     | 
    
         
             
              # Checks if postcode exists in external API
         
     | 
| 
       8 
13 
     | 
    
         
             
              #
         
     | 
| 
       9 
     | 
    
         
            -
              class ExternalApiChecker
         
     | 
| 
      
 14 
     | 
    
         
            +
              class ExternalApiChecker < ChainOfResp::AbstractHandler
         
     | 
| 
       10 
15 
     | 
    
         
             
                attr_reader :path, :path_suffix, :check_method, :connection, :http_verb,
         
     | 
| 
       11 
16 
     | 
    
         
             
                            :failure_message, :success_message
         
     | 
| 
       12 
17 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
                def  
     | 
| 
      
 18 
     | 
    
         
            +
                def post_initialize(conf = {})
         
     | 
| 
       14 
19 
     | 
    
         
             
                  @path = conf[:path]
         
     | 
| 
       15 
20 
     | 
    
         
             
                  @http_verb = conf[:http_verb] || :get
         
     | 
| 
       16 
21 
     | 
    
         
             
                  @path_suffix = conf[:path_suffix] || ''
         
     | 
| 
         @@ -21,8 +26,9 @@ module Checkability 
     | 
|
| 
       21 
26 
     | 
    
         
             
                end
         
     | 
| 
       22 
27 
     | 
    
         | 
| 
       23 
28 
     | 
    
         
             
                def check_value(checkable)
         
     | 
| 
       24 
     | 
    
         
            -
                  @resp = connection 
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
                  @resp = connection
         
     | 
| 
      
 30 
     | 
    
         
            +
                          .connect
         
     | 
| 
      
 31 
     | 
    
         
            +
                          .send(http_verb, "#{checkable.value.delete(' ')}#{path_suffix}")
         
     | 
| 
       26 
32 
     | 
    
         
             
                  result, message = _result_and_message
         
     | 
| 
       27 
33 
     | 
    
         
             
                  checkable.messages << message
         
     | 
| 
       28 
34 
     | 
    
         
             
                  result
         
     | 
| 
         @@ -30,8 +36,8 @@ module Checkability 
     | 
|
| 
       30 
36 
     | 
    
         | 
| 
       31 
37 
     | 
    
         
             
                private
         
     | 
| 
       32 
38 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
                def _message(str)
         
     | 
| 
       34 
     | 
    
         
            -
                  "#{path}: #{str}"
         
     | 
| 
      
 39 
     | 
    
         
            +
                def _message(str, res)
         
     | 
| 
      
 40 
     | 
    
         
            +
                  "#{res}::#{path}: #{str}"
         
     | 
| 
       35 
41 
     | 
    
         
             
                end
         
     | 
| 
       36 
42 
     | 
    
         | 
| 
       37 
43 
     | 
    
         
             
                def _parsed(resp)
         
     | 
| 
         @@ -39,14 +45,14 @@ module Checkability 
     | 
|
| 
       39 
45 
     | 
    
         
             
                end
         
     | 
| 
       40 
46 
     | 
    
         | 
| 
       41 
47 
     | 
    
         
             
                def _result_and_message
         
     | 
| 
       42 
     | 
    
         
            -
                  return [false, _message(@resp.status)] unless @resp.status == 200
         
     | 
| 
      
 48 
     | 
    
         
            +
                  return [false, _message(@resp.status, false)] unless @resp.status == 200
         
     | 
| 
       43 
49 
     | 
    
         | 
| 
       44 
     | 
    
         
            -
                  return [true, _message(success_message)] if check_method
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
      
 50 
     | 
    
         
            +
                  return [true, _message(success_message, true)] if check_method
         
     | 
| 
      
 51 
     | 
    
         
            +
                                                                    .call(_parsed(@resp))
         
     | 
| 
       46 
52 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
                  [false, _message(failure_message)]
         
     | 
| 
      
 53 
     | 
    
         
            +
                  [false, _message(failure_message, false)]
         
     | 
| 
       48 
54 
     | 
    
         
             
                rescue StandardError => e
         
     | 
| 
       49 
     | 
    
         
            -
                  [false, _message(e)]
         
     | 
| 
      
 55 
     | 
    
         
            +
                  [false, _message(e, false)]
         
     | 
| 
       50 
56 
     | 
    
         
             
                end
         
     | 
| 
       51 
57 
     | 
    
         
             
              end
         
     | 
| 
       52 
58 
     | 
    
         
             
            end
         
     | 
    
        data/lib/checkability/railtie.rb
    CHANGED
    
    
| 
         @@ -1,17 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require_relative 'chain_of_resp/abstract_handler'
         
     | 
| 
       1 
4 
     | 
    
         
             
            module Checkability
         
     | 
| 
       2 
5 
     | 
    
         
             
              # Checks if postcode exists in Storage
         
     | 
| 
       3 
6 
     | 
    
         
             
              #
         
     | 
| 
       4 
     | 
    
         
            -
              class StorageChecker
         
     | 
| 
      
 7 
     | 
    
         
            +
              class StorageChecker < ChainOfResp::AbstractHandler
         
     | 
| 
       5 
8 
     | 
    
         
             
                attr_reader :storage_class
         
     | 
| 
       6 
9 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
                def  
     | 
| 
      
 10 
     | 
    
         
            +
                def post_initialize(conf = {})
         
     | 
| 
       8 
11 
     | 
    
         
             
                  @storage_class = conf[:storage_class]
         
     | 
| 
       9 
12 
     | 
    
         
             
                end
         
     | 
| 
       10 
13 
     | 
    
         | 
| 
       11 
14 
     | 
    
         
             
                def check_value(checkable)
         
     | 
| 
       12 
15 
     | 
    
         
             
                  value = checkable.value.upcase
         
     | 
| 
       13 
16 
     | 
    
         
             
                  result = _present_in_storage(value)
         
     | 
| 
       14 
     | 
    
         
            -
                  checkable.messages << ( 
     | 
| 
      
 17 
     | 
    
         
            +
                  checkable.messages << (
         
     | 
| 
      
 18 
     | 
    
         
            +
                    result ? _message('Found', result) : _message('Not found', result))
         
     | 
| 
       15 
19 
     | 
    
         
             
                  result
         
     | 
| 
       16 
20 
     | 
    
         
             
                end
         
     | 
| 
       17 
21 
     | 
    
         | 
| 
         @@ -22,8 +26,8 @@ module Checkability 
     | 
|
| 
       22 
26 
     | 
    
         
             
                               .present?
         
     | 
| 
       23 
27 
     | 
    
         
             
                end
         
     | 
| 
       24 
28 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
                def _message(str)
         
     | 
| 
       26 
     | 
    
         
            -
                  "Allowed #{storage_class}s list: #{str}."
         
     | 
| 
      
 29 
     | 
    
         
            +
                def _message(str, res)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  "#{res}::Allowed #{storage_class}s list: #{str}."
         
     | 
| 
       27 
31 
     | 
    
         
             
                end
         
     | 
| 
       28 
32 
     | 
    
         
             
              end
         
     | 
| 
       29 
33 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,10 +1,12 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            module Checkability
         
     | 
| 
       2 
4 
     | 
    
         
             
              # Checks if postcode comply with regex
         
     | 
| 
       3 
5 
     | 
    
         
             
              #
         
     | 
| 
       4 
     | 
    
         
            -
              class Validator
         
     | 
| 
      
 6 
     | 
    
         
            +
              class Validator < ChainOfResp::AbstractHandler
         
     | 
| 
       5 
7 
     | 
    
         
             
                attr_reader :format
         
     | 
| 
       6 
8 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
                def  
     | 
| 
      
 9 
     | 
    
         
            +
                def post_initialize(conf = {})
         
     | 
| 
       8 
10 
     | 
    
         
             
                  @format = conf[:format]
         
     | 
| 
       9 
11 
     | 
    
         
             
                end
         
     | 
| 
       10 
12 
     | 
    
         | 
| 
         @@ -18,9 +20,9 @@ module Checkability 
     | 
|
| 
       18 
20 
     | 
    
         | 
| 
       19 
21 
     | 
    
         
             
                def _result_and_message(checkable)
         
     | 
| 
       20 
22 
     | 
    
         
             
                  if (checkable.value.delete(' ') =~ format[:regex]).nil?
         
     | 
| 
       21 
     | 
    
         
            -
                    [false, "Value is NOT COMPLY with format of #{format[:name]}."]
         
     | 
| 
      
 23 
     | 
    
         
            +
                    [false, "false::Value is NOT COMPLY with format of #{format[:name]}."]
         
     | 
| 
       22 
24 
     | 
    
         
             
                  else
         
     | 
| 
       23 
     | 
    
         
            -
                    [true, "Value is COMPLY with format of #{format[:name]}."]
         
     | 
| 
      
 25 
     | 
    
         
            +
                    [true, "true::Value is COMPLY with format of #{format[:name]}."]
         
     | 
| 
       24 
26 
     | 
    
         
             
                  end
         
     | 
| 
       25 
27 
     | 
    
         
             
                end
         
     | 
| 
       26 
28 
     | 
    
         
             
              end
         
     | 
    
        data/lib/checkability/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: checkability
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.6.2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Andrey Eremeev
         
     | 
| 
       8 
     | 
    
         
            -
            autorequire: 
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2021-04- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2021-04-03 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       13 
13 
     | 
    
         
             
            description: Provide Checkers functionality.
         
     | 
| 
       14 
14 
     | 
    
         
             
            email:
         
     | 
| 
         @@ -24,6 +24,8 @@ files: 
     | 
|
| 
       24 
24 
     | 
    
         
             
            - bin/checkability
         
     | 
| 
       25 
25 
     | 
    
         
             
            - lib/checkability.rb
         
     | 
| 
       26 
26 
     | 
    
         
             
            - lib/checkability/acts_as_checkable.rb
         
     | 
| 
      
 27 
     | 
    
         
            +
            - lib/checkability/chain_of_resp/abstract_handler.rb
         
     | 
| 
      
 28 
     | 
    
         
            +
            - lib/checkability/chain_of_resp/handler.rb
         
     | 
| 
       27 
29 
     | 
    
         
             
            - lib/checkability/checkable.rb
         
     | 
| 
       28 
30 
     | 
    
         
             
            - lib/checkability/external_api_checker.rb
         
     | 
| 
       29 
31 
     | 
    
         
             
            - lib/checkability/external_api_connector.rb
         
     | 
| 
         @@ -40,7 +42,7 @@ metadata: 
     | 
|
| 
       40 
42 
     | 
    
         
             
              homepage_uri: https://github.com/azazelo/checkability
         
     | 
| 
       41 
43 
     | 
    
         
             
              source_code_uri: https://rubygems.org
         
     | 
| 
       42 
44 
     | 
    
         
             
              changelog_uri: https://rubygems.org
         
     | 
| 
       43 
     | 
    
         
            -
            post_install_message: 
     | 
| 
      
 45 
     | 
    
         
            +
            post_install_message:
         
     | 
| 
       44 
46 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       45 
47 
     | 
    
         
             
            require_paths:
         
     | 
| 
       46 
48 
     | 
    
         
             
            - lib
         
     | 
| 
         @@ -48,16 +50,15 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       48 
50 
     | 
    
         
             
              requirements:
         
     | 
| 
       49 
51 
     | 
    
         
             
              - - ">="
         
     | 
| 
       50 
52 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       51 
     | 
    
         
            -
                  version:  
     | 
| 
      
 53 
     | 
    
         
            +
                  version: 2.6.2
         
     | 
| 
       52 
54 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       53 
55 
     | 
    
         
             
              requirements:
         
     | 
| 
       54 
56 
     | 
    
         
             
              - - ">="
         
     | 
| 
       55 
57 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       56 
58 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       57 
59 
     | 
    
         
             
            requirements: []
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
            signing_key: 
         
     | 
| 
      
 60 
     | 
    
         
            +
            rubygems_version: 3.0.3
         
     | 
| 
      
 61 
     | 
    
         
            +
            signing_key:
         
     | 
| 
       61 
62 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       62 
63 
     | 
    
         
             
            summary: Provide Checkers functionality.
         
     | 
| 
       63 
64 
     | 
    
         
             
            test_files: []
         
     |