tshield 0.1.0.0 → 0.2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5a7d294c42976d89c07cca825390e6e844e3e56c
4
- data.tar.gz: d87640effc137257bde62a4c72c818b71d757833
3
+ metadata.gz: d6d02f83eebd27cd44d08a4c412fd85f0c80c880
4
+ data.tar.gz: d48b98aa498b0fe184d9a62105c5f5a2bd2e8b49
5
5
  SHA512:
6
- metadata.gz: 30a24c64d4d1ac312b2243e953790a62f48ac71e723ba498d12805be3f33b9f9aac3045c7d1016fb4b40db6c9fe3f67daa7d5cd8d209b14cc388f0e7ffc34cf5
7
- data.tar.gz: 18c76dbd343735d4dfeb47a0068cdc3580448c0d07dc157d8cd55fa269020d93fac91da6ff062311def15710daf02021db6afcb15da7e794466b36df74627ed4
6
+ metadata.gz: 925f01bebb1a163727ec0ab50afc1fd32118fc4d1397e67f4b563bcd9fd536564619e3297b78b1a20b7966922c96b16345b8bbfa30fe2cc721e5435c25461d64
7
+ data.tar.gz: 0df5eec384e06763f3c59b33cd3ff64d4715c3b8fedf71bde667403a46e594bf4e87e3d73ee264534202756ea187127ec30e7870b6441f1cc8ddf90af9ebd9a2
data/bin/tshield CHANGED
@@ -2,5 +2,6 @@
2
2
 
3
3
  require 'tshield'
4
4
 
5
+ TShield::Options.init
5
6
  TShield::Server.run!
6
7
 
@@ -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
+
@@ -1,9 +1,10 @@
1
1
  require 'httparty'
2
2
  require 'json'
3
- require 'digest/sha1'
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)
@@ -1,6 +1,6 @@
1
1
  module TShield
2
2
  class Response
3
- attr_accessor :body, :headers
3
+ attr_accessor :body, :headers, :original
4
4
 
5
5
  def initialize(body, headers)
6
6
  @body = body
@@ -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
 
@@ -1,7 +1,7 @@
1
1
  module TShield
2
2
  class Version
3
3
  MAJOR = 0
4
- MINOR = 1
4
+ MINOR = 2
5
5
  PATCH = 0
6
6
  PRE = 0
7
7
 
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.1.0.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-10-31 00:00:00.000000000 Z
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