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
|