kronk 1.7.8 → 1.8.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.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kronk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.8
4
+ version: 1.8.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-10 00:00:00.000000000 Z
12
+ date: 2012-01-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &2152119260 !ruby/object:Gem::Requirement
16
+ requirement: &70357826961820 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.5'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2152119260
24
+ version_requirements: *70357826961820
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: cookiejar
27
- requirement: &2152118280 !ruby/object:Gem::Requirement
27
+ requirement: &70357826961200 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.3.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2152118280
35
+ version_requirements: *70357826961200
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: plist
38
- requirement: &2152090240 !ruby/object:Gem::Requirement
38
+ requirement: &70357826960660 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 3.1.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2152090240
46
+ version_requirements: *70357826960660
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: nokogiri
49
- requirement: &2152088080 !ruby/object:Gem::Requirement
49
+ requirement: &70357826960080 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '1.4'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2152088080
57
+ version_requirements: *70357826960080
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: mocha
60
- requirement: &2152085080 !ruby/object:Gem::Requirement
60
+ requirement: &70357826959520 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,21 +65,10 @@ dependencies:
65
65
  version: 0.9.12
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2152085080
69
- - !ruby/object:Gem::Dependency
70
- name: em-http-request
71
- requirement: &2152143020 !ruby/object:Gem::Requirement
72
- none: false
73
- requirements:
74
- - - ~>
75
- - !ruby/object:Gem::Version
76
- version: 1.0.0
77
- type: :development
78
- prerelease: false
79
- version_requirements: *2152143020
68
+ version_requirements: *70357826959520
80
69
  - !ruby/object:Gem::Dependency
81
70
  name: hoe
82
- requirement: &2152140980 !ruby/object:Gem::Requirement
71
+ requirement: &70357826958980 !ruby/object:Gem::Requirement
83
72
  none: false
84
73
  requirements:
85
74
  - - ~>
@@ -87,7 +76,7 @@ dependencies:
87
76
  version: '2.12'
88
77
  type: :development
89
78
  prerelease: false
90
- version_requirements: *2152140980
79
+ version_requirements: *70357826958980
91
80
  description: ! 'Kronk runs diffs against data from live and cached http responses.
92
81
 
93
82
  Kronk was made possible by the sponsoring of AT&T Interactive.'
@@ -109,10 +98,6 @@ files:
109
98
  - Rakefile
110
99
  - bin/kronk
111
100
  - lib/kronk.rb
112
- - lib/kronk/async.rb
113
- - lib/kronk/async/em_ext.rb
114
- - lib/kronk/async/request.rb
115
- - lib/kronk/async/response.rb
116
101
  - lib/kronk/cmd.rb
117
102
  - lib/kronk/constants.rb
118
103
  - lib/kronk/core_ext.rb
@@ -121,6 +106,8 @@ files:
121
106
  - lib/kronk/diff/ascii_format.rb
122
107
  - lib/kronk/diff/color_format.rb
123
108
  - lib/kronk/diff/output.rb
109
+ - lib/kronk/http.rb
110
+ - lib/kronk/buffered_io.rb
124
111
  - lib/kronk/path.rb
125
112
  - lib/kronk/path/matcher.rb
126
113
  - lib/kronk/path/match.rb
@@ -128,10 +115,10 @@ files:
128
115
  - lib/kronk/player.rb
129
116
  - lib/kronk/player/benchmark.rb
130
117
  - lib/kronk/player/input_reader.rb
131
- - lib/kronk/player/output.rb
132
118
  - lib/kronk/player/request_parser.rb
133
119
  - lib/kronk/player/suite.rb
134
120
  - lib/kronk/player/stream.rb
121
+ - lib/kronk/player/tsv.rb
135
122
  - lib/kronk/plist_parser.rb
136
123
  - lib/kronk/queue_runner.rb
137
124
  - lib/kronk/request.rb
@@ -142,6 +129,8 @@ files:
142
129
  - lib/kronk/xml_parser.rb
143
130
  - lib/kronk/yaml_parser.rb
144
131
  - script/kronk_completion
132
+ - test/mocks/200_gzip.txt
133
+ - test/mocks/200_inflate.txt
145
134
  - test/mocks/200_response.json
146
135
  - test/mocks/200_response.plist
147
136
  - test/mocks/200_response.txt
@@ -192,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
192
181
  version: '0'
193
182
  requirements: []
194
183
  rubyforge_project: kronk
195
- rubygems_version: 1.8.10
184
+ rubygems_version: 1.8.11
196
185
  signing_key:
197
186
  specification_version: 3
198
187
  summary: Kronk runs diffs against data from live and cached http responses
data/lib/kronk/async.rb DELETED
@@ -1,118 +0,0 @@
1
- require 'kronk'
2
- require 'kronk/async/em_ext'
3
- require 'kronk/async/request'
4
- require 'kronk/async/response'
5
-
6
- class Kronk
7
-
8
- ##
9
- # Returns an EM::MultiRequest instance from a url, file, or IO pair.
10
- # Calls the given block with a Kronk::Diff object on completion or error.
11
- # Assigns @response, @responses, @diff. Must be called from an EM loop.
12
- #
13
- # kronk.compare_async uri1, uri2 do |diff, err|
14
- # # handle diff, responses, or error
15
- # end
16
-
17
- def compare_async uri1, uri2
18
- multi = EM::MultiRequest.new
19
-
20
- str1 = str2 = ""
21
- res1 = res2 = nil
22
- err1 = err2 = nil
23
-
24
- conn1 = request_async uri1 do |res, err|
25
- err1 = err and next if err
26
- res1 = res
27
- str1 = res.stringify
28
- end
29
-
30
- conn2 = request_async uri2 do |res, err|
31
- err2 = err and next if err
32
- res2 = res
33
- str2 = res.stringify
34
- end
35
-
36
- multi.add :left, conn1
37
- multi.add :right, conn2
38
-
39
- multi.callback do
40
- next yield(nil, (err1 || err2)) if err1 || err2
41
-
42
- @responses = [res1, res2]
43
- @response = res2
44
-
45
- opts = {:labels => [res1.uri, res2.uri]}.merge @options
46
- @diff = Diff.new str1, str2, opts
47
-
48
- yield @diff
49
- end
50
-
51
- multi
52
-
53
- rescue => e
54
- yield nil, e
55
- end
56
-
57
-
58
- ##
59
- # Returns an EventMachine Connection instance from a url, file, or IO.
60
- # Calls the given block with a Kronk::Response object on completion or error.
61
- # Assigns @response, @responses, @diff. Must be called from an EM loop.
62
- #
63
- # kronk.request_async uri do |resp, err|
64
- # # handle response or error
65
- # end
66
-
67
- def request_async uri
68
- options = Kronk.config[:no_uri_options] ? @options : options_for_uri(uri)
69
-
70
- rdir = options[:follow_redirects]
71
-
72
- handler = Proc.new do |resp, err|
73
- next yield(resp, err) if err
74
-
75
- resp.parser = options[:parser] if options[:parser]
76
- resp.stringify_opts = options
77
-
78
- if resp.redirect? && (rdir == true || Fixnum === rdir && rdir > 0)
79
- Cmd.verbose "Following redirect to #{resp.location}"
80
-
81
- rdir = rdir - 1 if Fixnum === rdir
82
- opts = options_for_uri resp.location
83
- resp.follow_redirect_async(opts, &handler)
84
-
85
- else
86
- @responses = [resp]
87
- @response = resp
88
- @diff = nil
89
-
90
- yield resp if block_given?
91
-
92
- resp
93
- end
94
- end
95
-
96
- if IO === uri
97
- Cmd.verbose "Reading IO #{uri}"
98
- Response.from_async_io(uri, &handler)
99
-
100
- elsif StringIO === uri
101
- Cmd.verbose "Reading IO #{uri}"
102
- handler.call Response.new(uri)
103
-
104
- elsif File.file? uri.to_s
105
- Cmd.verbose "Reading file: #{uri}\n"
106
- handler.call Response.read_file(uri)
107
-
108
- else
109
- req = Request.new uri, options
110
- Cmd.verbose "Retrieving URL: #{req.uri}\n"
111
- conn = req.retrieve_async(&handler)
112
- conn.callback{ Kronk.history << uri }
113
- end
114
-
115
- rescue => e
116
- yield nil, e
117
- end
118
- end
@@ -1,34 +0,0 @@
1
- require 'em-http-request'
2
-
3
- module EventMachine
4
- class HttpClient
5
- attr_accessor :raw_response
6
-
7
- alias em_parse_response_header parse_response_header
8
-
9
- def parse_response_header header, version, status
10
- out = em_parse_response_header header, version, status
11
-
12
- rheader = @response_header
13
-
14
- @raw_response = "HTTP/#{rheader.http_version} "
15
- @raw_response << "#{rheader.status} #{rheader.http_reason}\r\n"
16
-
17
- header.each do |key, val|
18
- @raw_response << "#{key}: #{val}\r\n"
19
- end
20
-
21
- @raw_response << "\r\n"
22
-
23
- out
24
- end
25
-
26
-
27
- alias em_on_decoded_body_data on_decoded_body_data
28
-
29
- def on_decoded_body_data data
30
- @raw_response << data
31
- em_on_decoded_body_data data
32
- end
33
- end
34
- end
@@ -1,73 +0,0 @@
1
- class Kronk
2
- class Request
3
-
4
- class EMError < Kronk::Exception; end
5
-
6
- ##
7
- # Retrieve this requests' response asynchronously with em-http-request.
8
- # Returns a EM::HttpConnection instance.
9
- #
10
- # Passing a block will yield a Kronk::Response instance and/or
11
- # an Exception instance if an error was caught.
12
- #
13
- # req = Request.new "example.com"
14
- # em_req = req.retrieve_async do |kronk_response, err|
15
- # # do something with Kronk::Response instance here
16
- # end
17
- #
18
- # em_req.callback { ... }
19
- # em_req.error { ... }
20
-
21
- def retrieve_async &block
22
- header_opts = @headers.dup
23
-
24
- if @auth && !@auth.empty?
25
- header_opts['Authorization'] ||= []
26
- header_opts['Authorization'][0] = @auth[:username] if @auth[:username]
27
- header_opts['Authorization'][1] = @auth[:password] if @auth[:password]
28
- end
29
-
30
- conn = async_http
31
-
32
- start_time = Time.now
33
- req = conn.setup_request @http_method,
34
- :head => header_opts, :body => @body, &block
35
-
36
- req.callback do |resp|
37
- elapsed_time = Time.now - start_time
38
- @response = Response.new resp.raw_response, nil, self
39
- @response.time = elapsed_time
40
- yield @response, nil
41
- end if block_given?
42
-
43
- req.errback do |c|
44
- err = c.error ?
45
- EMError.new(c.error) :
46
- Kronk::NotFoundError.new("#{@uri} could not be found")
47
-
48
- yield nil, err
49
- end
50
-
51
- req
52
- end
53
-
54
-
55
- ##
56
- # Return an EM::HttpRequest instance.
57
-
58
- def async_http
59
- unless @proxy.empty?
60
- proxy_opts = @proxy.dup
61
- proxy_opts[:authorization] = [
62
- proxy_opts.delete(:username),
63
- proxy_opts.delete(:password)
64
- ] if proxy_opts[:username] || proxy_opts[:password]
65
- end
66
-
67
- EventMachine::HttpRequest.new @uri,
68
- :connect_timeout => @timeout,
69
- :inactivity_timeout => @timeout,
70
- :proxy => proxy_opts
71
- end
72
- end
73
- end
@@ -1,70 +0,0 @@
1
- class Kronk
2
- class Response
3
-
4
- class AsyncHandler < EM::Connection
5
- attr_accessor :buffer
6
-
7
- def initialize req
8
- @buffer = ""
9
- @callback = nil
10
- @_req = req
11
- @_res = nil
12
- end
13
-
14
-
15
- def callback &block
16
- @callback = block
17
- end
18
-
19
-
20
- def receive_data str
21
- @buffer << str
22
- end
23
-
24
-
25
- def unbind
26
- return unless @callback
27
-
28
- @_res = Kronk::Response.new @buffer, nil, @_req
29
- err = Kronk::Request::EMError.new "IO read error" if error?
30
-
31
- @callback.call @_res, err
32
-
33
- rescue => e
34
- @callback.call @_res, e
35
- end
36
- end
37
-
38
-
39
- ##
40
- # Response.new with asynchronous IO input.
41
- # Returns an EM::Connection subclass (AsyncHandler) instance.
42
- #
43
- # Passing a block will yield a Kronk::Response instance and/or
44
- # an Exception instance if an error was caught.
45
- #
46
- # conn = Response.from_async_io do |resp, err|
47
- # # do something with Kronk::Response instance here
48
- # end
49
-
50
- def self.from_async_io io, req=nil, &block
51
- conn = EM.attach io, AsyncHandler, req
52
- conn.comm_inactivity_timeout = 2
53
- conn.callback(&block)
54
- conn
55
- end
56
-
57
-
58
- ##
59
- # Follow the redirect and return a new Response instance.
60
- # Returns nil if not redirect-able.
61
- #
62
- # Passing a block will yield a Kronk::Response instance and/or
63
- # an Exception instance if an error was caught.
64
-
65
- def follow_redirect_async opts={}, &block
66
- return if !redirect?
67
- Request.new(self.location, opts).retrieve_async(&block)
68
- end
69
- end
70
- end