api_valve 0.0.1.beta.2 → 0.0.1.beta.3
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/lib/api_valve/proxy.rb +35 -3
- data/lib/api_valve.rb +5 -0
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: a274e16dfc06a57221ef6912fccb8fe4134deebb7a937ebb8c0e906658b1a0af
         | 
| 4 | 
            +
              data.tar.gz: 56baccd5fc56ca6cff54ed2614627b62233a1559d059890188b83b8b8bf012ac
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a56cbce9c1dfa4192482e1f2a4619835e14d4cd6973ca0efe976398ccc070db7dd8e09c7f04f3ad168db7798a9ba1dacfe11957cd02c9812441086cbff29b086
         | 
| 7 | 
            +
              data.tar.gz: b122661096332f3a5b7b92f9d69dd2c8d2c6f8ecd86427adbdadd25a5f99ccef9c7ac861a4465dcaf8b52a99af5e6273868af5b7907f6f2ee450778d02add5ce
         | 
    
        data/lib/api_valve/proxy.rb
    CHANGED
    
    | @@ -1,23 +1,55 @@ | |
| 1 | 
            -
            require 'byebug'
         | 
| 2 | 
            -
             | 
| 3 1 | 
             
            module ApiValve
         | 
| 4 2 | 
             
              class Proxy
         | 
| 5 3 | 
             
                include ActiveSupport::Callbacks
         | 
| 6 4 |  | 
| 7 5 | 
             
                FORWARDER_OPTIONS = %w(endpoint request response permission_handler).freeze
         | 
| 8 6 |  | 
| 7 | 
            +
                class_attribute :permission_handler, :request, :response
         | 
| 8 | 
            +
                self.permission_handler = Forwarder::PermissonHandler
         | 
| 9 | 
            +
                self.request = Forwarder::Request
         | 
| 10 | 
            +
                self.response = Forwarder::Response
         | 
| 11 | 
            +
             | 
| 9 12 | 
             
                define_callbacks :call
         | 
| 10 13 |  | 
| 11 14 | 
             
                class << self
         | 
| 15 | 
            +
                  def from_config(file_name = nil)
         | 
| 16 | 
            +
                    file_name ||= name.underscore
         | 
| 17 | 
            +
                    path = find_config(file_name)
         | 
| 18 | 
            +
                    raise "Config not found for #{name.underscore}(.yml|.yml.erb) in #{ApiValve.config_paths.inspect}" unless path
         | 
| 19 | 
            +
                    yaml = File.read(path)
         | 
| 20 | 
            +
                    yaml = ERB.new(yaml, nil, '-').result if path.fnmatch? '*.erb'
         | 
| 21 | 
            +
                    from_yaml yaml
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
             | 
| 12 24 | 
             
                  def from_yaml(string)
         | 
| 13 25 | 
             
                    from_hash YAML.load(string) # rubocop:disable Security/YAMLLoad
         | 
| 14 26 | 
             
                  end
         | 
| 15 27 |  | 
| 16 28 | 
             
                  def from_hash(config)
         | 
| 17 29 | 
             
                    config = config.with_indifferent_access
         | 
| 18 | 
            -
                    forwarder = Forwarder.new(config | 
| 30 | 
            +
                    forwarder = Forwarder.new(forwarder_config(config))
         | 
| 19 31 | 
             
                    new(forwarder).tap { |proxy| proxy.build_routes_from_config config }
         | 
| 20 32 | 
             
                  end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  private
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                  def find_config(file_name)
         | 
| 37 | 
            +
                    ApiValve.config_paths.each do |dir|
         | 
| 38 | 
            +
                      path = dir.join("#{file_name}.yml")
         | 
| 39 | 
            +
                      return path if path.exist?
         | 
| 40 | 
            +
                      path = dir.join("#{file_name}.yml.erb")
         | 
| 41 | 
            +
                      return path if path.exist?
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
                    nil
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  def forwarder_config(config)
         | 
| 47 | 
            +
                    {
         | 
| 48 | 
            +
                      permission_handler: {klass: permission_handler},
         | 
| 49 | 
            +
                      request: {klass: request},
         | 
| 50 | 
            +
                      response: {klass: response}
         | 
| 51 | 
            +
                    }.with_indifferent_access.deep_merge config.slice(*FORWARDER_OPTIONS)
         | 
| 52 | 
            +
                  end
         | 
| 21 53 | 
             
                end
         | 
| 22 54 |  | 
| 23 55 | 
             
                attr_reader :request, :forwarder, :router
         | 
    
        data/lib/api_valve.rb
    CHANGED
    
    | @@ -7,6 +7,7 @@ require 'active_support/core_ext/module' | |
| 7 7 | 
             
            require 'active_support/json'
         | 
| 8 8 | 
             
            require 'active_support/rescuable'
         | 
| 9 9 | 
             
            require 'benchmark'
         | 
| 10 | 
            +
            require 'byebug'
         | 
| 10 11 | 
             
            require 'faraday'
         | 
| 11 12 | 
             
            require 'multi_json'
         | 
| 12 13 | 
             
            require 'logger'
         | 
| @@ -35,6 +36,10 @@ module ApiValve | |
| 35 36 | 
             
                false
         | 
| 36 37 | 
             
              end
         | 
| 37 38 |  | 
| 39 | 
            +
              config_accessor :config_paths do
         | 
| 40 | 
            +
                []
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
             | 
| 38 43 | 
             
              # :nocov:
         | 
| 39 44 | 
             
              def self.configure
         | 
| 40 45 | 
             
                yield config
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: api_valve
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0.1.beta. | 
| 4 | 
            +
              version: 0.0.1.beta.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - mkon
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2018-05- | 
| 11 | 
            +
            date: 2018-05-23 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activesupport
         |