activeresource-response 0.0.7 → 0.0.8

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.
data/Gemfile CHANGED
@@ -2,3 +2,4 @@ source "http://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in activeresource-response.gemspec
4
4
  gemspec
5
+ _
data/README.rdoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = Activeresource-response
2
2
 
3
- This gem adds possibility to access http response object from result (single object or collection) of activeresource call (methods : find, all, first, last )
3
+ This gem adds possibility to access http response object from result (single object or collection) of activeresource call (methods : find, all, first, last, get )
4
4
 
5
5
 
6
6
 
@@ -60,8 +60,8 @@ Client Side
60
60
  end
61
61
  end
62
62
 
63
-
64
- == Gem also creates http_response method for ActiveResource::Connection class (no matter if find method was called or one of custom methods, which invokes http connection)
63
+
64
+ == Every time when http connection invoked ActiveResource connection object stores http response. You can access it with http_response method.
65
65
  Example
66
66
 
67
67
  class Order < ActiveResource::Base
@@ -80,7 +80,24 @@ Example
80
80
  Order.connection.http_response.to_hash
81
81
  # => {"content-type"=>["application/json; charset=utf-8"], "x-ua-compatible"=>["IE=Edge"], "etag"=>["\"573cabd02b2f1f90405f7f4f77995fab\""], "cache-control"=>["max-age=0, private, must-revalidate"], "x-request-id"=>["2911c13a0c781044c474450ed789613d"], "x-runtime"=>["0.071018"], "content-length"=>["260"], "server"=>["WEBrick/1.3.1 (Ruby/1.9.2/2011-02-18)"], "date"=>["Sun, 19 Feb 2012 10:21:29 GMT"], "connection"=>["close"]}
82
82
 
83
-
83
+
84
+
85
+ == Headers and cookies methods to get symbolized collections
86
+ You can get cookies and headers from response
87
+ Example
88
+
89
+ class Country < ActiveResource::Base
90
+ self.site = 'http://0.0.0.0:3000/'
91
+ add_response_method :my_response # our new method
92
+ end
93
+ countries = Country.all
94
+ countries.my_response.headers
95
+
96
+ # => {:content_type=>["application/json; charset=utf-8"], :x_ua_compatible=>["IE=Edge"], ..., :set_cookie=>["bar=foo; path=/", "foo=bar; path=/"]}
97
+
98
+
99
+ countries.my_response.cookies
100
+ # => {:bar=>"foo", :foo=>"bar"}
84
101
 
85
102
  == About Http response
86
103
  http response is object of Net::HTTPOK, Net::HTTPClientError or one of other subclasses
@@ -91,4 +108,7 @@ of Net::HTTPResponse class. For more information see documentation http://www.r
91
108
 
92
109
  http://phpblog.com.ua/2012/01/rails-activeresource-i-zagolovki/
93
110
 
94
- http://stackoverflow.com/questions/5972429/active-resource-responses-how-to-get-them
111
+ http://stackoverflow.com/questions/5972429/active-resource-responses-how-to-get-them
112
+
113
+
114
+ == Please, feel free to contact me if you have any questions
@@ -14,7 +14,11 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.add_dependency('activeresource', '>= 3.0')
16
16
 
17
- s.rubyforge_project = "activeresource-response"
17
+
18
+
19
+ s.extra_rdoc_files = %w( README.rdoc )
20
+ s.rdoc_options.concat ['--main', 'README.rdoc']
21
+
18
22
 
19
23
  s.files = `git ls-files`.split("\n")
20
24
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -1,4 +1,6 @@
1
+ require 'cgi'
1
2
  require "activeresource-response/version"
3
+ require "activeresource-response/http_response"
2
4
  require "activeresource-response/connection"
3
5
  require "activeresource-response/response_method"
4
6
  ActiveResource::Connection.send :include, ActiveresourceResponse::Connection
@@ -4,8 +4,13 @@ module ActiveresourceResponse
4
4
  base.class_eval do
5
5
  alias_method :origin_handle_response, :handle_response
6
6
  def handle_response(response)
7
+ begin
8
+ origin_handle_response(response)
9
+ rescue StandardError => e
10
+ raise e
11
+ end
12
+ response.extend(ActiveresourceResponse::HttpResponse)
7
13
  Thread.current[:ActiveResourceHttpResponse] = response
8
- origin_handle_response(response)
9
14
  end
10
15
  def http_response
11
16
  Thread.current[:ActiveResourceHttpResponse]
@@ -0,0 +1,28 @@
1
+ module ActiveresourceResponse
2
+ module HttpResponse
3
+ def headers
4
+ @_active_resource_response_headers || symbolize_keys(to_hash)
5
+ end
6
+ def cookies
7
+ unless @_active_resource_response_cookies
8
+ cookies = (self.headers[:set_cookie] || {}).inject({}) do |out, cookie_str|
9
+ CGI::Cookie::parse(cookie_str).each do |key, cookie|
10
+ out[key] = cookie.value.first unless ['expires', 'path'].include? key
11
+ end
12
+ out
13
+ end
14
+ @_active_resource_response_cookies = symbolize_keys(cookies)
15
+ end
16
+ @_active_resource_response_cookies
17
+ end
18
+
19
+ private
20
+ def symbolize_keys(hash)
21
+ hash.inject({}) do |out, (key, value)|
22
+ out[key.gsub(/-/, '_').downcase.to_sym] = value
23
+ out
24
+ end
25
+ end
26
+
27
+ end
28
+ end
@@ -1,5 +1,5 @@
1
1
  module ActiveresourceResponse
2
2
  module Version
3
- VERSION = "0.0.7"
3
+ VERSION = "0.0.8"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,45 +1,36 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: activeresource-response
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 7
9
- version: 0.0.7
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.8
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Igor Fedoronchuk
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2012-03-13 00:00:00 +02:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-04-03 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: activeresource
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 3
29
- - 0
30
- version: "3.0"
16
+ requirement: &70107787486000 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '3.0'
31
22
  type: :runtime
32
- version_requirements: *id001
33
- description: "This gem adds possibility to access http response object from result of ActiveResource::Base find method "
34
- email:
23
+ prerelease: false
24
+ version_requirements: *70107787486000
25
+ description: ! 'This gem adds possibility to access http response object from result
26
+ of ActiveResource::Base find method '
27
+ email:
35
28
  - fedoronchuk@gmail.com
36
29
  executables: []
37
-
38
30
  extensions: []
39
-
40
- extra_rdoc_files: []
41
-
42
- files:
31
+ extra_rdoc_files:
32
+ - README.rdoc
33
+ files:
43
34
  - .gitignore
44
35
  - Gemfile
45
36
  - LICENSE
@@ -48,37 +39,33 @@ files:
48
39
  - activeresource-response.gemspec
49
40
  - lib/activeresource-response.rb
50
41
  - lib/activeresource-response/connection.rb
42
+ - lib/activeresource-response/http_response.rb
51
43
  - lib/activeresource-response/response_method.rb
52
44
  - lib/activeresource-response/version.rb
53
- has_rdoc: true
54
45
  homepage: https://github.com/Fivell/activeresource-response
55
46
  licenses: []
56
-
57
47
  post_install_message:
58
- rdoc_options: []
59
-
60
- require_paths:
48
+ rdoc_options:
49
+ - --main
50
+ - README.rdoc
51
+ require_paths:
61
52
  - lib
62
- required_ruby_version: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- segments:
67
- - 0
68
- version: "0"
69
- required_rubygems_version: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- segments:
74
- - 0
75
- version: "0"
53
+ required_ruby_version: !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ! '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ required_rubygems_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
76
65
  requirements: []
77
-
78
- rubyforge_project: activeresource-response
79
- rubygems_version: 1.3.6
66
+ rubyforge_project:
67
+ rubygems_version: 1.8.17
80
68
  signing_key:
81
69
  specification_version: 3
82
70
  summary: activeresource extension
83
71
  test_files: []
84
-