httparty_with_cookies 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,16 @@
1
+ SPEC = Gem::Specification.new do |s|
2
+ s.name = 'httparty_with_cookies'
3
+ s.version = '0.1.0'
4
+ s.date = Time.now.strftime('%Y-%m-%d')
5
+ s.author = 'Arthur Silva'
6
+ s.summary = 'Basic automatic cookie handling for HTTParty'
7
+ s.email = 'awls99@gmail.com'
8
+ s.homepage = 'https://github.com/awls99/httparty-with-cookies'
9
+ s.description = 'This gem works mostly as HTTParty, but has automatic saving and sending of cookies to the server.'
10
+ s.add_dependency 'httparty'
11
+ s.add_development_dependency 'rspec'
12
+ s.add_development_dependency 'sinatra'
13
+ s.files = Dir.glob("{lib}/*").push __FILE__
14
+ s.require_path = 'lib'
15
+ s.has_rdoc = false
16
+ end
@@ -0,0 +1,53 @@
1
+ require 'httparty'
2
+
3
+ module HTTParty_with_cookies
4
+ # include HTTParty
5
+ attr :cookies
6
+
7
+ def self.included(base)
8
+ base.extend HTTParty
9
+ base.send :include, HTTParty
10
+ end
11
+
12
+ #####this way we can support the same http verbs as httparty
13
+ HTTParty::Request::SupportedHTTPMethods.each do | netclass |
14
+ method_sym = netclass.to_s.split('::').last.downcase.to_sym
15
+ define_method method_sym do |uri, options={}, &block|
16
+
17
+ base_headers = {'Cookie' => request_cookies}
18
+ if options[:headers]
19
+ options[:headers] = base_headers.merge options[:headers]
20
+ else
21
+ options[:headers] = base_headers
22
+ end
23
+ options[:headers] = options[:headers].delete_if{|k,v| v == {}}
24
+ @last_response = self.class.method( method_sym ).call uri, options, &block
25
+ set_cookies
26
+ return @last_response
27
+ end
28
+ end
29
+
30
+
31
+ def request_cookies
32
+ URI.unescape( @cookies.to_a.map do |cookie|
33
+ cookie.join('=')
34
+ end.join(';') )
35
+ end
36
+ def set_cookies #ugly hack to get the correct cookie array from the headers
37
+ response_cookies = @last_response.headers.instance_variable_get(:@header)['set-cookie']
38
+ return unless response_cookies and !response_cookies.empty?
39
+ response_cookies = [ response_cookies ] if response_cookies.is_a? String
40
+ response_cookies.each do |cookie|
41
+ add_cookies( cookie.split(';')[0] )
42
+ end
43
+ end
44
+
45
+ private
46
+ def add_cookies *cookies
47
+ @cookies||= {}
48
+ cookies.each do |cookie|
49
+ key, value = cookie.split '='
50
+ @cookies[ key ] = value
51
+ end
52
+ end
53
+ end
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: httparty_with_cookies
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Arthur Silva
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-10-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: httparty
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: sinatra
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: This gem works mostly as HTTParty, but has automatic saving and sending
63
+ of cookies to the server.
64
+ email: awls99@gmail.com
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - lib/httparty_with_cookies.rb
70
+ - httparty-with-cookies.gemspec
71
+ homepage: https://github.com/awls99/httparty-with-cookies
72
+ licenses: []
73
+ post_install_message:
74
+ rdoc_options: []
75
+ require_paths:
76
+ - lib
77
+ required_ruby_version: !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ requirements: []
90
+ rubyforge_project:
91
+ rubygems_version: 1.8.24
92
+ signing_key:
93
+ specification_version: 3
94
+ summary: Basic automatic cookie handling for HTTParty
95
+ test_files: []