cassette-rack 0.4.0 → 0.4.1
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/lib/cassette-rack/configure.rb +10 -2
- data/lib/cassette-rack/decorator/response.rb +2 -0
- data/lib/cassette-rack/default.rb +0 -5
- data/lib/cassette-rack/drawer.rb +2 -0
- data/lib/cassette-rack/engine.rb +26 -7
- data/lib/cassette-rack/version.rb +1 -1
- data/lib/templates/layouts/application.html.liquid +14 -2
- data/lib/templates/layouts/preview.liquid +1 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c827fb45c350323207577d2f55c0b8907c0c1cf
|
4
|
+
data.tar.gz: 1dea33463a3ac0d384a37bab30248ed9612006e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90e36902bde61636a5ea50a0efc279589b987ad559bf7dc9f5bb02dc05b6be0bbc34a3cc6ec60a9ec210b85efce1ca178e8345f55204d098478bf581e2029b52
|
7
|
+
data.tar.gz: 1345cf19838a737f75c03c46a933329cca0dac88d24c70e881329911e4781808d3ab0426717ba97227c9c6e3009b4fc38f1dbf1ddf12099ff50d92252a407054
|
@@ -3,7 +3,7 @@ require 'vcr'
|
|
3
3
|
module CassetteRack
|
4
4
|
module Configure
|
5
5
|
class << self
|
6
|
-
attr_accessor :
|
6
|
+
attr_accessor :cassette_path, :url
|
7
7
|
|
8
8
|
def setup
|
9
9
|
keys.each do |key|
|
@@ -18,7 +18,7 @@ module CassetteRack
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def keys
|
21
|
-
@keys ||= %i[
|
21
|
+
@keys ||= %i[cassette_path url]
|
22
22
|
end
|
23
23
|
|
24
24
|
def source_path
|
@@ -37,6 +37,10 @@ module CassetteRack
|
|
37
37
|
@content_layout ||= File.expand_path('content.md.liquid', File.join(self.templates_path, 'layouts'))
|
38
38
|
end
|
39
39
|
|
40
|
+
def preview_layout
|
41
|
+
@preview_layout ||= File.expand_path('preview.liquid', File.join(self.templates_path, 'layouts'))
|
42
|
+
end
|
43
|
+
|
40
44
|
def application_template
|
41
45
|
File.read(self.application_layout)
|
42
46
|
end
|
@@ -44,6 +48,10 @@ module CassetteRack
|
|
44
48
|
def content_template
|
45
49
|
File.read(self.content_layout)
|
46
50
|
end
|
51
|
+
|
52
|
+
def preview_template
|
53
|
+
File.read(self.preview_layout)
|
54
|
+
end
|
47
55
|
end
|
48
56
|
end
|
49
57
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
module CassetteRack
|
2
2
|
module Default
|
3
|
-
CASSETTE_EXTENSION = 'yml'.freeze
|
4
3
|
CASSETTE_PATH = 'spec/cassettes'.freeze
|
5
4
|
URL = 'http://localhost:3000'.freeze
|
6
5
|
|
@@ -9,10 +8,6 @@ module CassetteRack
|
|
9
8
|
Hash[CassetteRack::Configure.keys.map{|key| [key, send(key)]}]
|
10
9
|
end
|
11
10
|
|
12
|
-
def cassette_extension
|
13
|
-
CASSETTE_EXTENSION
|
14
|
-
end
|
15
|
-
|
16
11
|
def cassette_path
|
17
12
|
CASSETTE_PATH
|
18
13
|
end
|
data/lib/cassette-rack/drawer.rb
CHANGED
data/lib/cassette-rack/engine.rb
CHANGED
@@ -19,22 +19,37 @@ module CassetteRack
|
|
19
19
|
private
|
20
20
|
def controller(env)
|
21
21
|
request = Rack::Request.new(env)
|
22
|
+
params = Hash[URI.decode_www_form(request.query_string)]
|
23
|
+
body = Hash[URI.decode_www_form(request.body.read)]
|
22
24
|
drawer = CassetteRack::Drawer.new(request.path_info)
|
23
25
|
|
24
|
-
case
|
26
|
+
case body['_method']
|
27
|
+
when 'delete'
|
28
|
+
request_method = body['_method'].upcase
|
29
|
+
else
|
30
|
+
request_method = request.request_method
|
31
|
+
end
|
32
|
+
|
33
|
+
case request_method
|
25
34
|
when 'DELETE'
|
26
35
|
drawer.delete
|
27
36
|
end
|
28
37
|
|
29
|
-
|
30
|
-
|
31
|
-
|
38
|
+
case params['response']
|
39
|
+
when 'preview'
|
40
|
+
template = Liquid::Template.parse(CassetteRack::Configure.preview_template)
|
41
|
+
body = template.render('body' => drawer.http.response.body)
|
42
|
+
else
|
43
|
+
tree = CassetteRack::Tree.create(CassetteRack::Configure.source_path)
|
44
|
+
cassettes_tag = render_branch(tree, request.script_name, request.path_info)
|
45
|
+
cassette_tag = render_leaf(drawer, request.script_name + request.path_info)
|
46
|
+
|
47
|
+
template = Liquid::Template.parse(CassetteRack::Configure.application_template)
|
48
|
+
body = template.render('cassettes_tag' => cassettes_tag, 'cassette_tag' => cassette_tag)
|
49
|
+
end
|
32
50
|
|
33
51
|
status = 200
|
34
52
|
headers = {'Content-Type' => 'text/html'}
|
35
|
-
template = Liquid::Template.parse(CassetteRack::Configure.application_template)
|
36
|
-
body = template.render('cassettes_tag' => cassettes_tag, 'cassette_tag' => cassette_tag)
|
37
|
-
|
38
53
|
[status, headers, [body]]
|
39
54
|
end
|
40
55
|
|
@@ -68,10 +83,14 @@ module CassetteRack
|
|
68
83
|
def render_leaf(drawer, action)
|
69
84
|
if drawer.exist?
|
70
85
|
raw = drawer.render
|
86
|
+
raw += "<div class='btn-group'>\n"
|
87
|
+
raw += "<a class='btn btn-primary' href='#{action}?response=preview'>\n"
|
88
|
+
raw += "<span>Preview</span></a>\n"
|
71
89
|
raw += "<form method='post' action='#{action}'>\n"
|
72
90
|
raw += "<input name='_method' value='delete' type='hidden' />\n"
|
73
91
|
raw += "<input class='btn btn-danger' type='submit' value='Destroy'>\n"
|
74
92
|
raw += "</form>\n"
|
93
|
+
raw += "</div>\n"
|
75
94
|
else
|
76
95
|
raw = "<h3>Please select cassette</h3>"
|
77
96
|
end
|
@@ -80,20 +80,32 @@
|
|
80
80
|
}
|
81
81
|
|
82
82
|
.btn {
|
83
|
-
padding: 5px 10px;
|
84
83
|
margin-left: 10px;
|
85
84
|
cursor: pointer;
|
86
85
|
background-image: none;
|
87
86
|
border: 1px solid transparent;
|
88
|
-
padding: 8px 12px;
|
89
87
|
font-size: 12px;
|
88
|
+
text-decoration: none;
|
89
|
+
}
|
90
|
+
|
91
|
+
.btn-primary {
|
92
|
+
padding: 8px 12px;
|
93
|
+
color: #ffffff;
|
94
|
+
background-color: #008cba;
|
95
|
+
border-color: #0079a1;
|
90
96
|
}
|
91
97
|
|
92
98
|
.btn-danger {
|
99
|
+
padding: 10px 12px;
|
93
100
|
color: #ffffff;
|
94
101
|
background-color: #f04124;
|
95
102
|
border-color: #ea2f10;
|
96
103
|
}
|
104
|
+
|
105
|
+
.btn-group {
|
106
|
+
margin-left: 10px;
|
107
|
+
display: inline-flex;
|
108
|
+
}
|
97
109
|
</style>
|
98
110
|
</head>
|
99
111
|
<body>
|
@@ -0,0 +1 @@
|
|
1
|
+
{{ body }}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cassette-rack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ogom
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -137,6 +137,7 @@ files:
|
|
137
137
|
- lib/cassette-rack/version.rb
|
138
138
|
- lib/templates/layouts/application.html.liquid
|
139
139
|
- lib/templates/layouts/content.md.liquid
|
140
|
+
- lib/templates/layouts/preview.liquid
|
140
141
|
- spec/grant-front_spec.rb
|
141
142
|
- spec/lib/version_spec.rb
|
142
143
|
- spec/spec_helper.rb
|
@@ -168,3 +169,4 @@ test_files:
|
|
168
169
|
- spec/grant-front_spec.rb
|
169
170
|
- spec/lib/version_spec.rb
|
170
171
|
- spec/spec_helper.rb
|
172
|
+
has_rdoc:
|