faraday-cookie_jar2 0.1.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 430e0c0782e16cf6065f9f006d844904bf7231d87ab49cc3e9ddf7bcb0fc7a9a
4
+ data.tar.gz: f63bd421d6688a5b9e0e75e15bfd3a121d88df39e6b695e240c186f6c367fd4f
5
+ SHA512:
6
+ metadata.gz: 53ca7f690ed3080194d4407ae56181253cd8068e334db617aa14fa9da98612081fd3fa1cbf48b812052b61ff7a6fe3e75a6e864ae48973169d0e83f2a42a7a15
7
+ data.tar.gz: 7247976d00d29d260f113bebf398cbeac9074213289ef63de646854924c73957b35f66fbea6d1ab36e05fca791f15f198533bf7563d6673f75506bb9b7d60e75
data/CHANGELOG.md ADDED
@@ -0,0 +1,31 @@
1
+ ## 0.0.7 Tue Sep 1 20:25:00 PDT 2020
2
+
3
+ - Avoid loading Faraday by assuming Faraday registry API (chesterbr)
4
+ - To support change above, require Faraday 0.8 as a minimum (chesterbr)
5
+
6
+ ## 0.0.6 Tue Jan 21 16:34:35 PST 2014
7
+
8
+ - Support Faraday 0.9 registry API (cameron-martin)
9
+ - Support specifying CookieJar in configuration (cameron-martin)
10
+
11
+ ## 0.0.5 Mon Jan 20 21:53:13 PST 2014
12
+
13
+ - Lock faraday dependency to < 0.9.0 for now
14
+ - Ability to add extra cookies in addition to the ones in Cookie Jar (nanjingboy)
15
+
16
+ ## 0.0.4 Mon Aug 12 23:11:46 PDT 2013
17
+
18
+ - Fix a crash when there's no valid response header #3
19
+
20
+ ## 0.0.3 Sun Apr 21 08:14:32 CST 2013
21
+
22
+ - Switch to http-cookie gem (knu) #2
23
+
24
+ ## 0.0.2
25
+
26
+ - Repackaging
27
+ - Typo in README (tmaesaka) #1
28
+
29
+ ## 0.0.1
30
+
31
+ - Initial release
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in faraday-cookie_jar2.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Tatsuhiko Miyagawa
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,40 @@
1
+ # Faraday::CookieJar
2
+
3
+ Faraday middleware to manage client-side cookies
4
+
5
+ ## Description
6
+ Note: This is a fork of [miyagawa/faraday-cookie_jar](https://github.com/miyagawa/faraday-cookie_jar) and released the updated version to the rubygems as [faraday-cookie_jar2](https://rubygems.org/gems/faraday-cookie_jar2)
7
+
8
+ This gem is a piece of Faraday middleware that adds client-side Cookies management, using [http-cookie gem](https://github.com/sparklemotion/http-cookie).
9
+
10
+ ## Installation
11
+
12
+ Add this line to your application's Gemfile:
13
+
14
+ gem 'faraday-cookie_jar2'
15
+
16
+ And then execute:
17
+
18
+ $ bundle
19
+
20
+ Or install it yourself as:
21
+
22
+ $ gem install faraday-cookie_jar2
23
+
24
+ ## Usage
25
+
26
+ ```ruby
27
+ require 'faraday-cookie_jar2'
28
+
29
+ conn = Faraday.new(:url => "http://example.com") do |builder|
30
+ builder.use :cookie_jar
31
+ builder.adapter Faraday.default_adapter
32
+ end
33
+
34
+ conn.get "/foo" # gets cookie
35
+ conn.get "/bar" # sends cookie
36
+ ```
37
+
38
+ ## Author
39
+
40
+ Tatsuhiko Miyagawa
data/Rakefile ADDED
@@ -0,0 +1,5 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rspec/core/rake_task'
4
+ RSpec::Core::RakeTask.new(:spec)
5
+ task :default => :spec
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('lib', __dir__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'faraday/cookie_jar/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "faraday-cookie_jar2"
8
+ spec.version = Faraday::CookieJarVersion::VERSION
9
+ spec.authors = ["Tatsuhiko Miyagawa"]
10
+ spec.email = ["miyagawa@bulknews.net"]
11
+ spec.description = %q{Cookie jar middleware for Faraday}
12
+ spec.summary = %q{Manages client-side cookie jar for Faraday HTTP client}
13
+ spec.homepage = "https://github.com/ashiqueps/faraday-cookie_jar"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = Dir.glob("{lib,spec}/**/*") + %w[README.md LICENSE.txt CHANGELOG.md Rakefile Gemfile faraday-cookie_jar2.gemspec]
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.required_ruby_version = ">= 2.7.0"
22
+
23
+ spec.add_dependency "faraday", ">= 0.8.0"
24
+ spec.add_dependency "http-cookie", "~> 1.0"
25
+
26
+ spec.add_development_dependency "bundler", ">= 2.0"
27
+ spec.add_development_dependency "rake", ">= 12.3.3"
28
+ spec.add_development_dependency "rspec", "~> 3.2"
29
+ spec.add_development_dependency "sinatra"
30
+ spec.add_development_dependency "sham_rack"
31
+ end
@@ -0,0 +1,5 @@
1
+ module Faraday
2
+ module CookieJarVersion
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,37 @@
1
+ require "faraday"
2
+ require "http/cookie_jar"
3
+
4
+ module Faraday
5
+ class CookieJar < Faraday::Middleware
6
+ def initialize(app, options = {})
7
+ super(app)
8
+ @jar = options[:jar] || HTTP::CookieJar.new
9
+ end
10
+
11
+ def call(env)
12
+ cookies = @jar.cookies(env[:url])
13
+ unless cookies.empty?
14
+ cookie_value = HTTP::Cookie.cookie_value(cookies)
15
+ if env[:request_headers]["Cookie"]
16
+ unless env[:request_headers]["Cookie"] == cookie_value
17
+ env[:request_headers]["Cookie"] = cookie_value + ';' + env[:request_headers]["Cookie"]
18
+ end
19
+ else
20
+ env[:request_headers]["Cookie"] = cookie_value
21
+ end
22
+ end
23
+
24
+ @app.call(env).on_complete do |res|
25
+ if res[:response_headers]
26
+ if set_cookie = res[:response_headers]["Set-Cookie"]
27
+ @jar.parse(set_cookie, env[:url])
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ if Faraday::Middleware.respond_to? :register_middleware
36
+ Faraday::Middleware.register_middleware :cookie_jar => Faraday::CookieJar
37
+ end
@@ -0,0 +1 @@
1
+ require 'faraday/cookie_jar'
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe Faraday::CookieJar do
4
+ let(:conn) { Faraday.new(:url => 'http://faraday.example.com') }
5
+ let(:cookie_jar) { HTTP::CookieJar.new }
6
+
7
+ before do
8
+ conn.use :cookie_jar
9
+ conn.adapter :net_http # for sham_rock
10
+ end
11
+
12
+ it 'get default cookie' do
13
+ conn.get('/default')
14
+ expect(conn.get('/dump').body).to eq('foo=bar')
15
+ end
16
+
17
+ it 'does not send cookies to wrong path' do
18
+ conn.get('/path')
19
+ expect(conn.get('/dump').body).to_not eq('foo=bar')
20
+ end
21
+
22
+ it 'expires cookie' do
23
+ conn.get('/expires')
24
+ expect(conn.get('/dump').body).to eq('foo=bar')
25
+ sleep 2
26
+ expect(conn.get('/dump').body).to_not eq('foo=bar')
27
+ end
28
+
29
+ it 'fills an injected cookie jar' do
30
+
31
+ conn_with_jar = Faraday.new(:url => 'http://faraday.example.com') do |conn|
32
+ conn.use :cookie_jar, jar: cookie_jar
33
+ conn.adapter :net_http # for sham_rock
34
+ end
35
+
36
+ conn_with_jar.get('/default')
37
+
38
+ expect(cookie_jar.empty?).to be false
39
+
40
+ end
41
+
42
+ it 'multiple cookies' do
43
+ conn.get('/default')
44
+
45
+ response = conn.send('get') do |request|
46
+ request.url '/multiple_cookies'
47
+ request.headers.merge!({:Cookie => 'language=english'})
48
+ end
49
+
50
+ expect(response.body).to eq('foo=bar;language=english')
51
+ end
52
+ end
53
+
@@ -0,0 +1,9 @@
1
+ require 'rspec'
2
+ require 'faraday-cookie_jar2'
3
+
4
+ require 'sham_rack'
5
+ require_relative 'support/fake_app'
6
+
7
+ ShamRack.at('faraday.example.com').rackup do
8
+ run FakeApp
9
+ end
@@ -0,0 +1,23 @@
1
+ require 'sinatra'
2
+
3
+ class FakeApp < Sinatra::Application
4
+ get '/dump' do
5
+ "foo=#{request.cookies['foo']}"
6
+ end
7
+
8
+ get '/default' do
9
+ response.set_cookie "foo", :value => "bar"
10
+ end
11
+
12
+ get '/path' do
13
+ response.set_cookie "foo", :value => "bar", :path => "/path"
14
+ end
15
+
16
+ get '/expires' do
17
+ response.set_cookie "foo", :value => "bar", :expires => Time.now + 1
18
+ end
19
+
20
+ get '/multiple_cookies' do
21
+ "foo=#{request.cookies['foo']};language=#{request.cookies['language']}"
22
+ end
23
+ end
metadata ADDED
@@ -0,0 +1,153 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: faraday-cookie_jar2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Tatsuhiko Miyagawa
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 2025-11-11 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: faraday
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 0.8.0
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 0.8.0
26
+ - !ruby/object:Gem::Dependency
27
+ name: http-cookie
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: bundler
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '2.0'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '2.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: rake
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 12.3.3
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 12.3.3
68
+ - !ruby/object:Gem::Dependency
69
+ name: rspec
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.2'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '3.2'
82
+ - !ruby/object:Gem::Dependency
83
+ name: sinatra
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: sham_rack
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ description: Cookie jar middleware for Faraday
111
+ email:
112
+ - miyagawa@bulknews.net
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files: []
116
+ files:
117
+ - CHANGELOG.md
118
+ - Gemfile
119
+ - LICENSE.txt
120
+ - README.md
121
+ - Rakefile
122
+ - faraday-cookie_jar2.gemspec
123
+ - lib/faraday-cookie_jar2.rb
124
+ - lib/faraday/cookie_jar.rb
125
+ - lib/faraday/cookie_jar/version.rb
126
+ - spec/faraday-cookie_jar2/cookie_jar_spec.rb
127
+ - spec/spec_helper.rb
128
+ - spec/support/fake_app.rb
129
+ homepage: https://github.com/ashiqueps/faraday-cookie_jar
130
+ licenses:
131
+ - MIT
132
+ metadata: {}
133
+ rdoc_options: []
134
+ require_paths:
135
+ - lib
136
+ required_ruby_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: 2.7.0
141
+ required_rubygems_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ requirements: []
147
+ rubygems_version: 3.6.2
148
+ specification_version: 4
149
+ summary: Manages client-side cookie jar for Faraday HTTP client
150
+ test_files:
151
+ - spec/faraday-cookie_jar2/cookie_jar_spec.rb
152
+ - spec/spec_helper.rb
153
+ - spec/support/fake_app.rb