Skip to content

Commit fc72e66

Browse files
author
Łukasz Śliwa
committed
Refactored cookies class after @dblock notice. Write and read method.
1 parent d2cb2dc commit fc72e66

File tree

2 files changed

+18
-31
lines changed

2 files changed

+18
-31
lines changed

lib/grape/cookies.rb

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,23 @@ module Grape
22
class Cookies
33

44
def initialize
5-
@send = true
65
@cookies = {}
76
@send_cookies = {}
87
end
98

10-
def without_send
11-
@send = false
12-
yield self if block_given?
13-
@send = true
9+
def read(request)
10+
request.cookies.each do |name, value|
11+
@cookies[name.to_sym] = value
12+
end
13+
end
14+
15+
def write(header)
16+
@cookies.select { |key, value|
17+
@send_cookies[key.to_sym] == true
18+
}.each { |name, value|
19+
Rack::Utils.set_cookie_header!(
20+
header, name, value.instance_of?(Hash) ? value : { :value => value })
21+
}
1422
end
1523

1624
def [](name)
@@ -19,17 +27,11 @@ def [](name)
1927

2028
def []=(name, value)
2129
@cookies[name.to_sym] = value
22-
@send_cookies[name.to_sym] = true if @send
30+
@send_cookies[name.to_sym] = true
2331
end
2432

25-
def each(opt = nil, &block)
26-
if opt == :to_send
27-
@cookies.select { |key, value|
28-
@send_cookies[key.to_sym] == true
29-
}.each(&block)
30-
else
31-
@cookies.each(&block)
32-
end
33+
def each(&block)
34+
@cookies.each(&block)
3335
end
3436

3537
def delete(name)

lib/grape/endpoint.rb

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -138,13 +138,13 @@ def call(env)
138138
@header = {}
139139
@request = Rack::Request.new(@env)
140140

141-
get_cookies
141+
cookies.read(@request)
142142

143143
run_filters self.class.options[:befores]
144144
response_text = instance_eval &self.class.block
145145
run_filters self.class.options[:afters]
146146

147-
set_cookies
147+
cookies.write(header)
148148

149149
[status, header, [body || response_text]]
150150
end
@@ -156,20 +156,5 @@ def run_filters(filters)
156156
instance_eval &filter
157157
end
158158
end
159-
160-
def get_cookies
161-
cookies.without_send do |c|
162-
@request.cookies.each do |name, value|
163-
c[name] = value
164-
end
165-
end
166-
end
167-
168-
def set_cookies
169-
cookies.each(:to_send) do |name, value|
170-
Rack::Utils.set_cookie_header!(
171-
header, name, value.instance_of?(Hash) ? value : { :value => value })
172-
end
173-
end
174159
end
175160
end

0 commit comments

Comments
 (0)