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 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