tshield 0.1.0.0 → 0.2.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/bin/tshield +1 -0
- data/lib/tshield/options.rb +64 -0
- data/lib/tshield/request.rb +7 -2
- data/lib/tshield/response.rb +1 -1
- data/lib/tshield/server.rb +11 -4
- data/lib/tshield/version.rb +1 -1
- data/tshield.gemspec +1 -0
- metadata +23 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d6d02f83eebd27cd44d08a4c412fd85f0c80c880
|
4
|
+
data.tar.gz: d48b98aa498b0fe184d9a62105c5f5a2bd2e8b49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 925f01bebb1a163727ec0ab50afc1fd32118fc4d1397e67f4b563bcd9fd536564619e3297b78b1a20b7966922c96b16345b8bbfa30fe2cc721e5435c25461d64
|
7
|
+
data.tar.gz: 0df5eec384e06763f3c59b33cd3ff64d4715c3b8fedf71bde667403a46e594bf4e87e3d73ee264534202756ea187127ec30e7870b6441f1cc8ddf90af9ebd9a2
|
data/bin/tshield
CHANGED
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
require 'tshield/version'
|
4
|
+
|
5
|
+
module TShield
|
6
|
+
class Options
|
7
|
+
|
8
|
+
attr_reader :debug
|
9
|
+
|
10
|
+
def self.init
|
11
|
+
@@instance = TShield::Options.new
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.instance
|
15
|
+
@@instance
|
16
|
+
end
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
parse
|
20
|
+
end
|
21
|
+
|
22
|
+
def break?(args = {})
|
23
|
+
check_breakpoint(args)
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
def check_breakpoint(args)
|
28
|
+
check_breakpoint_moment(args)
|
29
|
+
end
|
30
|
+
|
31
|
+
def check_breakpoint_moment(args)
|
32
|
+
@options["#{args[:moment]}_pattern".to_sym] =~ args[:path]
|
33
|
+
end
|
34
|
+
|
35
|
+
def parse
|
36
|
+
@options = {}
|
37
|
+
OptionParser.new do |opts|
|
38
|
+
opts.banner = "Usage: tshield [options]"
|
39
|
+
|
40
|
+
opts.on('-b', '--break-before-request [PATTERN]',
|
41
|
+
'Breakpoint before request') do |pattern|
|
42
|
+
@options[:before_pattern] = Regexp.new(pattern)
|
43
|
+
end
|
44
|
+
|
45
|
+
opts.on('-a', '--break-after-request [PATTERN]',
|
46
|
+
'Breakpoint after request') do |pattern|
|
47
|
+
@options[:after_pattern] = Regexp.new(pattern)
|
48
|
+
end
|
49
|
+
|
50
|
+
opts.on("-v", "--version", "Show version") do
|
51
|
+
puts TShield::Version
|
52
|
+
exit
|
53
|
+
end
|
54
|
+
|
55
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
56
|
+
puts opts
|
57
|
+
exit
|
58
|
+
end
|
59
|
+
end.parse!
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
data/lib/tshield/request.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
require 'httparty'
|
2
2
|
require 'json'
|
3
|
-
require '
|
3
|
+
require 'byebug'
|
4
4
|
|
5
5
|
require 'tshield/configuration'
|
6
6
|
require 'tshield/counter'
|
7
|
+
require 'tshield/options'
|
7
8
|
require 'tshield/response'
|
8
9
|
|
9
10
|
module TShield
|
@@ -29,11 +30,15 @@ module TShield
|
|
29
30
|
|
30
31
|
if exists
|
31
32
|
@response = get_current_response
|
33
|
+
@response.original = false
|
32
34
|
else
|
33
35
|
raw = HTTParty.send("#{method}", @url, @options)
|
34
36
|
save(raw)
|
35
37
|
@response = TShield::Response.new(raw.body, raw.header)
|
38
|
+
@response.original = true
|
36
39
|
end
|
40
|
+
debugger if TShield::Options.instance.break?(path: @path, moment: :after)
|
41
|
+
@response
|
37
42
|
end
|
38
43
|
|
39
44
|
private
|
@@ -87,7 +92,7 @@ module TShield
|
|
87
92
|
domain_path = File.join(request_path, domain.gsub(/.*:\/\//, ''))
|
88
93
|
Dir.mkdir(domain_path) unless File.exists?(domain_path)
|
89
94
|
|
90
|
-
path_path = File.join(domain_path, @path.gsub(/\//, '-'))
|
95
|
+
path_path = File.join(domain_path, @path.gsub(/\//, '-').gsub(/^-/, ''))
|
91
96
|
Dir.mkdir(path_path) unless File.exists?(path_path)
|
92
97
|
|
93
98
|
method_path = File.join(path_path, method)
|
data/lib/tshield/response.rb
CHANGED
data/lib/tshield/server.rb
CHANGED
@@ -2,6 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'sinatra'
|
4
4
|
|
5
|
+
require 'byebug'
|
6
|
+
|
7
|
+
require 'tshield/options'
|
5
8
|
require 'tshield/configuration'
|
6
9
|
require 'tshield/request'
|
7
10
|
|
@@ -36,10 +39,12 @@ module TShield
|
|
36
39
|
|
37
40
|
private
|
38
41
|
def treat(params, request)
|
42
|
+
path = params.fetch('captures', [])[0]
|
43
|
+
|
44
|
+
debugger if TShield::Options.instance.break?(path: path, moment: :before)
|
39
45
|
|
40
46
|
method = request.request_method
|
41
47
|
request_content_type = request.content_type
|
42
|
-
path = params.fetch('captures', [])[0]
|
43
48
|
|
44
49
|
headers = {
|
45
50
|
'Content-Type' => request.content_type || 'application/json'
|
@@ -62,11 +67,13 @@ module TShield
|
|
62
67
|
options[:body] = result
|
63
68
|
end
|
64
69
|
|
65
|
-
logger.info(
|
66
|
-
"method=#{method} path=#{path} content-type=#{request_content_type}")
|
67
|
-
|
68
70
|
set_content_type content_type
|
71
|
+
|
69
72
|
response = TShield::Request.new(path, options).response
|
73
|
+
|
74
|
+
logger.info(
|
75
|
+
"original=#{response.original} method=#{method} path=#{path} content-type=#{request_content_type}")
|
76
|
+
|
70
77
|
response.body
|
71
78
|
end
|
72
79
|
|
data/lib/tshield/version.rb
CHANGED
data/tshield.gemspec
CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_dependency("httparty", "~> 0.14", ">= 0.14.0")
|
25
25
|
s.add_dependency("sinatra", "~> 1.4", ">= 1.4.0")
|
26
26
|
s.add_dependency("json", "~> 2.0", ">= 2.0")
|
27
|
+
s.add_dependency("byebug", "~> 9.0", ">= 9.0.0")
|
27
28
|
s.add_development_dependency("rspec", "~> 3.5", ">= 3.5.0")
|
28
29
|
s.add_development_dependency("webmock", "~> 2.1", ">= 2.1.0")
|
29
30
|
s.add_development_dependency("simplecov", "~> 0.12", ">= 0.12.0")
|
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.
|
4
|
+
version: 0.2.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-
|
11
|
+
date: 2016-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -70,6 +70,26 @@ dependencies:
|
|
70
70
|
- - ">="
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: '2.0'
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: byebug
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '9.0'
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 9.0.0
|
83
|
+
type: :runtime
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '9.0'
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 9.0.0
|
73
93
|
- !ruby/object:Gem::Dependency
|
74
94
|
name: rspec
|
75
95
|
requirement: !ruby/object:Gem::Requirement
|
@@ -144,6 +164,7 @@ files:
|
|
144
164
|
- lib/tshield.rb
|
145
165
|
- lib/tshield/configuration.rb
|
146
166
|
- lib/tshield/counter.rb
|
167
|
+
- lib/tshield/options.rb
|
147
168
|
- lib/tshield/request.rb
|
148
169
|
- lib/tshield/response.rb
|
149
170
|
- lib/tshield/server.rb
|