Skip to content

Commit

Permalink
Merge pull request #5 from nanjingboy/master
Browse files Browse the repository at this point in the history
fix request header cookie set error
  • Loading branch information
miyagawa committed Jan 21, 2014
2 parents 3a831ce + 4fd0a7a commit 42acea7
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 2 deletions.
9 changes: 7 additions & 2 deletions lib/faraday/cookie_jar.rb
Expand Up @@ -11,7 +11,12 @@ def initialize(app, options = {})
def call(env)
cookies = @jar.cookies(env[:url])
unless cookies.empty?
env[:request_headers]["Cookie"] = HTTP::Cookie.cookie_value(cookies)
cookie_value = HTTP::Cookie.cookie_value(cookies)
if env[:request_headers]["Cookie"]
env[:request_headers]["Cookie"] = cookie_value + ';' + env[:request_headers]["Cookie"]
else
env[:request_headers]["Cookie"] = cookie_value
end
end

@app.call(env).on_complete do |res|
Expand All @@ -27,4 +32,4 @@ def call(env)

if Faraday.respond_to? :register_middleware
Faraday.register_middleware :cookie_jar => lambda { Faraday::CookieJar }
end
end
11 changes: 11 additions & 0 deletions spec/faraday-cookie_jar/cookie_jar_spec.rb
Expand Up @@ -24,5 +24,16 @@
sleep 2
conn.get('/dump').body.should_not == 'foo=bar'
end

it 'multiple cookies' do
conn.get('/default')

response = conn.send('get') do |request|
request.url '/multiple_cookies'
request.headers.merge!({:Cookie => 'language=english'})
end

response.body.should == 'foo=bar;language=english'
end
end

4 changes: 4 additions & 0 deletions spec/support/fake_app.rb
Expand Up @@ -16,4 +16,8 @@ class FakeApp < Sinatra::Application
get '/expires' do
response.set_cookie "foo", :value => "bar", :expires => Time.now + 1
end

get '/multiple_cookies' do
"foo=#{request.cookies['foo']};language=#{request.cookies['language']}"
end
end

0 comments on commit 42acea7

Please sign in to comment.