cassette-rails 0.0.1 → 0.0.2

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.
Files changed (3) hide show
  1. checksums.yaml +5 -5
  2. data/lib/cassette.rb +21 -16
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 824a2094c5317f57e06e2f32dbada2066f7f3324
4
- data.tar.gz: 6ea30e2c82aff9fce15249876092f78fab799eef
2
+ SHA256:
3
+ metadata.gz: d174177399805ad96eb44eb5121f0297be901aa4642f8e5ef4bb152fa77267a0
4
+ data.tar.gz: 94f429242d21df333f278df291cc278753ad94deb6008f9d86e886f395a4b5c7
5
5
  SHA512:
6
- metadata.gz: eb0615acb72a5abb531330fe7a8030db580b9bf2de82ed69142c926ca4501424b33a6fc4e90af1a817d7390ef62d24f1ef8c9348cf62a8b88b6df915362b1b7a
7
- data.tar.gz: 528f4c4a5d48d027a9bba3a8cb54358baf1f336b754532970be7e59fa812f3fe28aaa2549a69dd6900f7af3639d97a6932fe7b0fe86dab59d980a6b5b1f863af
6
+ metadata.gz: 90ff2ae3581a5a51cf58178f7f84b44df9c794ce3f7b740685a446a54fc4e73b175fc084e6afc738bf6acd7afe14dedd770c45c01af6120836c6c2d9f9e1f932
7
+ data.tar.gz: 90342e0e969232236e6bae1af5ad9166e94a328f1b4966008ac976c1675f7605d55c2acef309ac0ac3361a48516810d8f5efbee32cef9e161d025838d52f1dd2
data/lib/cassette.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  require 'uri'
2
+ require "base64"
3
+ require 'json'
2
4
 
3
5
  class CassetteMiddleware
4
6
  def initialize app
@@ -16,21 +18,21 @@ class CassetteMiddleware
16
18
  request = ActionDispatch::Request.new(env)
17
19
  status, response_headers, response = @app.call(env)
18
20
  payload = {
19
- "request.method": request.method,
20
- "request.path": request.path,
21
- "request.body": stream_to_string(request.body),
22
- "request.query": request.GET.map { |k, v| "#{k}=#{v}"},
23
- "request.cookies": cookies_from_jar(request.cookie_jar),
24
- "request.headers": relevant_headers(request.headers),
25
- "response.status": status.to_s,
26
- "response.body": response.body,
27
- "response.headers": header_hash_to_list(response_headers),
21
+ "path": request.path,
22
+ "method": request.method,
23
+ "status": status,
24
+ "request_query": request.query_string,
25
+ "request_body": Base64.encode64(stream_to_string(request.body)),
26
+ "request_cookies": cookies_from_jar(request.cookie_jar),
27
+ "request_headers": relevant_headers(request.headers),
28
+ "response_body": Base64.encode64(response.body),
29
+ "response_headers": header_hash_to_dict(response_headers),
28
30
  }
29
31
 
30
32
  File.open(bulk_file_path, 'a') { |f|
31
33
  f.flock(File::LOCK_EX)
32
34
  f.puts(bulk_file_separator)
33
- f.puts(URI.encode_www_form(payload))
35
+ f.puts(JSON.generate(payload))
34
36
  }
35
37
 
36
38
  return status, response_headers, response
@@ -38,13 +40,16 @@ class CassetteMiddleware
38
40
 
39
41
  def relevant_headers(env)
40
42
  relevant = env.select { |k,v| (k.start_with? 'HTTP_' or k.upcase == "CONTENT_TYPE") and k.upcase != "HTTP_COOKIE" }
41
- header_hash_to_list(relevant)
43
+ header_hash_to_dict(relevant)
42
44
  end
43
45
 
44
- def header_hash_to_list(hash)
45
- hash.collect {|k,v| [k.sub(/^HTTP_/, ''), v]}
46
+ def header_hash_to_dict(hash)
47
+ headers = hash.collect {|k,v| [k.sub(/^HTTP_/, ''), v]}
46
48
  .collect {|k,v| [k.downcase.sub('_', '-'), v]}
47
- .map { |k, v| "#{k}=#{v}"}
49
+
50
+ next_headers = Hash.new { |hash, key| hash[key] = [] }
51
+ headers.each { |header| next_headers[header[0]] << header[1] }
52
+ next_headers
48
53
  end
49
54
 
50
55
  def stream_to_string(stream)
@@ -55,8 +60,8 @@ class CassetteMiddleware
55
60
  end
56
61
 
57
62
  def cookies_from_jar(cookie_jar)
58
- cookies = []
59
- cookie_jar.each { |cookie| cookies << "#{cookie[0]}=#{cookie[1]}" }
63
+ cookies = Hash.new { |hash, key| hash[key] = [] }
64
+ cookie_jar.each { |cookie| cookies[cookie[0]] << cookie[1] }
60
65
  cookies
61
66
  end
62
67
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cassette-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joachim Lindqvist
@@ -37,7 +37,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
37
37
  version: '0'
38
38
  requirements: []
39
39
  rubyforge_project:
40
- rubygems_version: 2.5.2.3
40
+ rubygems_version: 2.7.6.2
41
41
  signing_key:
42
42
  specification_version: 4
43
43
  summary: Rails middleware for cassette.dev