tshield 0.0.1.1 → 0.1.0.0
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/tshield/configuration.rb +6 -2
- data/lib/tshield/request.rb +24 -4
- data/lib/tshield/server.rb +16 -4
- data/lib/tshield/version.rb +3 -3
- data/spec/tshield/configuration_spec.rb +1 -1
- data/spec/tshield/fixtures/config/tshield.yml +5 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a7d294c42976d89c07cca825390e6e844e3e56c
|
4
|
+
data.tar.gz: d87640effc137257bde62a4c72c818b71d757833
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30a24c64d4d1ac312b2243e953790a62f48ac71e723ba498d12805be3f33b9f9aac3045c7d1016fb4b40db6c9fe3f67daa7d5cd8d209b14cc388f0e7ffc34cf5
|
7
|
+
data.tar.gz: 18c76dbd343735d4dfeb47a0068cdc3580448c0d07dc157d8cd55fa269020d93fac91da6ff062311def15710daf02021db6afcb15da7e794466b36df74627ed4
|
@@ -14,12 +14,16 @@ module TShield
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def get_domain_for(path)
|
17
|
-
domains.each do |url,
|
18
|
-
return url if
|
17
|
+
domains.each do |url, config|
|
18
|
+
config['paths'].each { |p| return url if path =~ Regexp.new(p) }
|
19
19
|
end
|
20
20
|
nil
|
21
21
|
end
|
22
22
|
|
23
|
+
def get_headers(domain)
|
24
|
+
domains[domain]['headers'] || {}
|
25
|
+
end
|
26
|
+
|
23
27
|
private
|
24
28
|
def self.load_configuration
|
25
29
|
config_path = File.join('config', 'tshield.yml')
|
data/lib/tshield/request.rb
CHANGED
@@ -21,7 +21,11 @@ module TShield
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def request
|
24
|
-
@
|
24
|
+
if not (@options[:raw_query].nil? or @options[:raw_query].empty?)
|
25
|
+
@path = "#{@path}?#{@options[:raw_query]}"
|
26
|
+
end
|
27
|
+
|
28
|
+
@url = "#{domain}#{@path}"
|
25
29
|
|
26
30
|
if exists
|
27
31
|
@response = get_current_response
|
@@ -33,6 +37,10 @@ module TShield
|
|
33
37
|
end
|
34
38
|
|
35
39
|
private
|
40
|
+
def domain
|
41
|
+
@domain ||= @configuration.get_domain_for(@path)
|
42
|
+
end
|
43
|
+
|
36
44
|
def method
|
37
45
|
@options[:method].downcase
|
38
46
|
end
|
@@ -71,9 +79,21 @@ module TShield
|
|
71
79
|
end
|
72
80
|
|
73
81
|
def destiny
|
74
|
-
destiny_path
|
75
|
-
|
76
|
-
File.join(
|
82
|
+
return @destiny_path if @destiny_path
|
83
|
+
|
84
|
+
request_path = File.join('requests')
|
85
|
+
Dir.mkdir(request_path) unless File.exists?(request_path)
|
86
|
+
|
87
|
+
domain_path = File.join(request_path, domain.gsub(/.*:\/\//, ''))
|
88
|
+
Dir.mkdir(domain_path) unless File.exists?(domain_path)
|
89
|
+
|
90
|
+
path_path = File.join(domain_path, @path.gsub(/\//, '-'))
|
91
|
+
Dir.mkdir(path_path) unless File.exists?(path_path)
|
92
|
+
|
93
|
+
method_path = File.join(path_path, method)
|
94
|
+
Dir.mkdir(method_path) unless File.exists?(method_path)
|
95
|
+
|
96
|
+
@destiny_path = File.join(method_path, 'requests.json')
|
77
97
|
end
|
78
98
|
|
79
99
|
def write(content)
|
data/lib/tshield/server.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'sinatra'
|
4
4
|
|
5
|
+
require 'tshield/configuration'
|
5
6
|
require 'tshield/request'
|
6
7
|
|
7
8
|
module TShield
|
@@ -10,8 +11,8 @@ module TShield
|
|
10
11
|
configure :production, :development do
|
11
12
|
enable :logging
|
12
13
|
end
|
13
|
-
|
14
|
-
PATHP = /([a-zA-Z\/\.-]+)/
|
14
|
+
|
15
|
+
PATHP = /([a-zA-Z\/\.-_]+)/
|
15
16
|
|
16
17
|
get (PATHP) do
|
17
18
|
treat(params, request)
|
@@ -41,12 +42,15 @@ module TShield
|
|
41
42
|
path = params.fetch('captures', [])[0]
|
42
43
|
|
43
44
|
headers = {
|
44
|
-
'Content-Type' => request.content_type
|
45
|
+
'Content-Type' => request.content_type || 'application/json'
|
45
46
|
}
|
46
47
|
|
48
|
+
add_headers(headers, path)
|
49
|
+
|
47
50
|
options = {
|
48
51
|
method: method,
|
49
|
-
headers: headers
|
52
|
+
headers: headers,
|
53
|
+
raw_query: request.env['QUERY_STRING']
|
50
54
|
}
|
51
55
|
|
52
56
|
if ['POST', 'PUT', 'PATCH'].include? method
|
@@ -70,6 +74,14 @@ module TShield
|
|
70
74
|
content_type :json
|
71
75
|
end
|
72
76
|
|
77
|
+
def add_headers(headers, path)
|
78
|
+
@configuration ||= TShield::Configuration.singleton
|
79
|
+
domain = @configuration.get_domain_for(path)
|
80
|
+
@configuration.get_headers(domain).each do |source, destiny|
|
81
|
+
headers[destiny] = request.env[source] unless request.env[source].nil?
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
73
85
|
end
|
74
86
|
end
|
75
87
|
|
data/lib/tshield/version.rb
CHANGED
@@ -9,7 +9,7 @@ describe TShield::Configuration do
|
|
9
9
|
|
10
10
|
describe 'load configurations from yaml' do
|
11
11
|
it 'recover domains' do
|
12
|
-
expect(@configuration.domains['example.org']).to(
|
12
|
+
expect(@configuration.domains['example.org']['paths']).to(
|
13
13
|
include('/api/one', '/api/two'))
|
14
14
|
end
|
15
15
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tshield
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Diego Rubin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -178,5 +178,5 @@ specification_version: 4
|
|
178
178
|
summary: Proxy for mocks API responses
|
179
179
|
test_files:
|
180
180
|
- spec/spec_helper.rb
|
181
|
-
- spec/tshield/configuration_spec.rb
|
182
181
|
- spec/tshield/fixtures/config/tshield.yml
|
182
|
+
- spec/tshield/configuration_spec.rb
|