wrest 0.0.9-java → 0.1.0-java

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.
Files changed (154) hide show
  1. data/CHANGELOG +34 -0
  2. data/README.rdoc +16 -10
  3. data/Rakefile +362 -124
  4. data/VERSION.yml +2 -2
  5. data/examples/delicious.rb +17 -7
  6. data/examples/facebook.rb +101 -0
  7. data/examples/keep_alive.rb +37 -0
  8. data/examples/twitter.rb +3 -3
  9. data/examples/twitter_public_timeline.rb +11 -4
  10. data/examples/wow_realm_status.rb +8 -2
  11. data/{spec/functional/sample_rails_app/public/favicon.ico → init.rb} +0 -0
  12. data/lib/wrest/components/{attributes_container → container}/alias_accessors.rb +4 -4
  13. data/lib/wrest/components/{attributes_container → container}/typecaster.rb +1 -1
  14. data/lib/wrest/components/{attributes_container.rb → container.rb} +46 -16
  15. data/lib/wrest/components/mutators.rb +4 -4
  16. data/lib/wrest/components/translators/json.rb +2 -2
  17. data/lib/wrest/components/translators/xml.rb +3 -2
  18. data/lib/wrest/components/translators.rb +3 -3
  19. data/lib/wrest/components.rb +3 -3
  20. data/lib/wrest/core_ext/hash.rb +1 -1
  21. data/lib/wrest/core_ext/string.rb +1 -1
  22. data/lib/wrest/curl/delete.rb +23 -0
  23. data/lib/wrest/curl/get.rb +23 -0
  24. data/lib/wrest/curl/options.rb +16 -0
  25. data/lib/wrest/curl/post.rb +23 -0
  26. data/lib/wrest/curl/put.rb +23 -0
  27. data/lib/wrest/curl/request.rb +95 -0
  28. data/lib/wrest/curl/response.rb +63 -0
  29. data/lib/wrest/curl/session.rb +57 -0
  30. data/lib/wrest/curl.rb +49 -0
  31. data/lib/wrest/exceptions.rb +16 -1
  32. data/lib/wrest/http_shared/headers.rb +350 -0
  33. data/lib/wrest/http_shared/standard_headers.rb +21 -0
  34. data/lib/wrest/http_shared/standard_tokens.rb +18 -0
  35. data/lib/wrest/http_shared.rb +24 -0
  36. data/lib/wrest/native/connection_factory.rb +23 -0
  37. data/lib/wrest/{http → native}/delete.rb +1 -1
  38. data/lib/wrest/{http → native}/get.rb +1 -1
  39. data/lib/wrest/{http → native}/options.rb +1 -1
  40. data/lib/wrest/{http → native}/post.rb +1 -1
  41. data/lib/wrest/{http → native}/put.rb +1 -1
  42. data/lib/wrest/{http → native}/redirection.rb +4 -1
  43. data/lib/wrest/{http → native}/request.rb +32 -20
  44. data/lib/wrest/{http → native}/response.rb +12 -4
  45. data/lib/wrest/native/session.rb +57 -0
  46. data/lib/wrest/native.rb +32 -0
  47. data/lib/wrest/resource/base.rb +1 -1
  48. data/lib/wrest/resource.rb +1 -1
  49. data/lib/wrest/test/request_patches.rb +5 -0
  50. data/lib/wrest/test.rb +1 -0
  51. data/lib/wrest/uri.rb +31 -3
  52. data/lib/wrest/version.rb +2 -2
  53. data/lib/wrest.rb +52 -16
  54. data/spec/unit/spec_helper.rb +12 -3
  55. data/spec/unit/wrest/components/attributes_container/alias_accessors_spec.rb +2 -2
  56. data/spec/unit/wrest/components/attributes_container/typecaster_spec.rb +6 -6
  57. data/spec/unit/wrest/components/attributes_container_spec.rb +44 -12
  58. data/spec/unit/wrest/components/translators/xml_spec.rb +7 -3
  59. data/spec/unit/wrest/curl/request_spec.rb +19 -0
  60. data/spec/unit/wrest/curl/response_spec.rb +16 -0
  61. data/spec/unit/wrest/http/response_spec.rb +17 -38
  62. data/spec/unit/wrest/{http → native}/redirection_spec.rb +5 -5
  63. data/spec/unit/wrest/{http → native}/request_spec.rb +15 -14
  64. data/spec/unit/wrest/native/response_spec.rb +72 -0
  65. data/spec/unit/wrest/native/session_spec.rb +74 -0
  66. data/spec/unit/wrest/resource/base_spec.rb +2 -2
  67. data/spec/unit/wrest/uri_spec.rb +51 -11
  68. data/wrest.gemspec +168 -0
  69. metadata +60 -164
  70. data/lib/wrest/http.rb +0 -25
  71. data/spec/functional/sample_rails_app/README +0 -3
  72. data/spec/functional/sample_rails_app/Rakefile +0 -10
  73. data/spec/functional/sample_rails_app/app/controllers/application_controller.rb +0 -10
  74. data/spec/functional/sample_rails_app/app/controllers/lead_bottles_controller.rb +0 -7
  75. data/spec/functional/sample_rails_app/app/helpers/application_helper.rb +0 -3
  76. data/spec/functional/sample_rails_app/app/models/bottle.rb +0 -3
  77. data/spec/functional/sample_rails_app/app/models/glass_bottle.rb +0 -3
  78. data/spec/functional/sample_rails_app/app/models/lead_bottle.rb +0 -3
  79. data/spec/functional/sample_rails_app/config/boot.rb +0 -110
  80. data/spec/functional/sample_rails_app/config/database.yml +0 -16
  81. data/spec/functional/sample_rails_app/config/environment.rb +0 -42
  82. data/spec/functional/sample_rails_app/config/environments/development.rb +0 -17
  83. data/spec/functional/sample_rails_app/config/environments/production.rb +0 -28
  84. data/spec/functional/sample_rails_app/config/environments/test.rb +0 -28
  85. data/spec/functional/sample_rails_app/config/initializers/backtrace_silencers.rb +0 -7
  86. data/spec/functional/sample_rails_app/config/initializers/inflections.rb +0 -10
  87. data/spec/functional/sample_rails_app/config/initializers/mime_types.rb +0 -5
  88. data/spec/functional/sample_rails_app/config/initializers/new_rails_defaults.rb +0 -19
  89. data/spec/functional/sample_rails_app/config/initializers/session_store.rb +0 -15
  90. data/spec/functional/sample_rails_app/config/locales/en.yml +0 -5
  91. data/spec/functional/sample_rails_app/config/routes.rb +0 -3
  92. data/spec/functional/sample_rails_app/db/development.sqlite3 +0 -0
  93. data/spec/functional/sample_rails_app/db/migrate/20090319115628_create_bottle.rb +0 -13
  94. data/spec/functional/sample_rails_app/db/schema.rb +0 -20
  95. data/spec/functional/sample_rails_app/db/test.sqlite3 +0 -0
  96. data/spec/functional/sample_rails_app/log/development.log +0 -1
  97. data/spec/functional/sample_rails_app/public/404.html +0 -30
  98. data/spec/functional/sample_rails_app/public/422.html +0 -30
  99. data/spec/functional/sample_rails_app/public/500.html +0 -30
  100. data/spec/functional/sample_rails_app/public/images/rails.png +0 -0
  101. data/spec/functional/sample_rails_app/public/index.html +0 -275
  102. data/spec/functional/sample_rails_app/public/robots.txt +0 -5
  103. data/spec/functional/sample_rails_app/script/about +0 -4
  104. data/spec/functional/sample_rails_app/script/autospec +0 -6
  105. data/spec/functional/sample_rails_app/script/console +0 -3
  106. data/spec/functional/sample_rails_app/script/dbconsole +0 -3
  107. data/spec/functional/sample_rails_app/script/destroy +0 -3
  108. data/spec/functional/sample_rails_app/script/generate +0 -3
  109. data/spec/functional/sample_rails_app/script/performance/benchmarker +0 -3
  110. data/spec/functional/sample_rails_app/script/performance/profiler +0 -3
  111. data/spec/functional/sample_rails_app/script/plugin +0 -3
  112. data/spec/functional/sample_rails_app/script/runner +0 -3
  113. data/spec/functional/sample_rails_app/script/server +0 -3
  114. data/spec/functional/sample_rails_app/script/spec +0 -10
  115. data/spec/functional/sample_rails_app/script/spec_server +0 -9
  116. data/spec/functional/sample_rails_app/test/performance/browsing_test.rb +0 -9
  117. data/spec/functional/sample_rails_app/test/test_helper.rb +0 -38
  118. data/spec/functional/sample_rails_app/tmtags +0 -2559
  119. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/MIT-LICENSE +0 -20
  120. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/README.rdoc +0 -100
  121. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/Rakefile +0 -18
  122. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/init.rb +0 -5
  123. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/install.rb +0 -1
  124. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full/base.rb +0 -140
  125. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full/controllers/resources.rb +0 -16
  126. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full/controllers/resources_controller.rb +0 -26
  127. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full/controllers/routes_controller.rb +0 -16
  128. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full/core_extensions/api.rb +0 -26
  129. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full/core_extensions/exception.rb +0 -23
  130. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full/core_extensions/from_json.rb +0 -15
  131. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full/dispatch.rb +0 -235
  132. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full/models/resourced_route.rb +0 -84
  133. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full/query.rb +0 -337
  134. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full/render/html.rb +0 -50
  135. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full/render/json.rb +0 -75
  136. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full/render/xml.rb +0 -65
  137. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full/render.rb +0 -63
  138. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full/retrieve.rb +0 -74
  139. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full/version.rb +0 -9
  140. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/lib/resource_full.rb +0 -14
  141. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/spec/resource_full/base_spec.rb +0 -88
  142. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/spec/resource_full/controllers/resources_spec.rb +0 -29
  143. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/spec/resource_full/dispatch_spec.rb +0 -262
  144. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/spec/resource_full/models/resourced_route_spec.rb +0 -62
  145. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/spec/resource_full/query/parameter_spec.rb +0 -57
  146. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/spec/resource_full/query_spec.rb +0 -462
  147. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/spec/resource_full/render/html_spec.rb +0 -4
  148. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/spec/resource_full/render/json_spec.rb +0 -107
  149. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/spec/resource_full/render/xml_spec.rb +0 -98
  150. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/spec/resource_full/render_spec.rb +0 -5
  151. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/spec/resource_full/retrieve_spec.rb +0 -173
  152. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/spec/spec_helper.rb +0 -98
  153. data/spec/functional/sample_rails_app/vendor/plugins/resource_full/uninstall.rb +0 -1
  154. data/spec/functional/spec_helper.rb +0 -0
@@ -1,173 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe "ResourceFull::Retrieve", :type => :controller do
4
- controller_name "resource_full_mock_users"
5
-
6
- before :each do
7
- ResourceFullMockUser.delete_all
8
- ResourceFullMockUsersController.resource_identifier = :id
9
- ResourceFullMockUsersController.queryable_params = []
10
- end
11
-
12
- it "defines custom methods based on the class name" do
13
- controller.should respond_to(
14
- :find_resource_full_mock_user,
15
- :find_all_resource_full_mock_users,
16
- :update_resource_full_mock_user,
17
- :destroy_resource_full_mock_user,
18
- :new_resource_full_mock_user
19
- )
20
- end
21
-
22
- it "changes the custom methods if the model name is changed" do
23
- controller.class.exposes ResourceFullMock
24
- controller.should respond_to(:find_resource_full_mock)
25
- controller.should_not respond_to(:find_resource_full_mock_user)
26
- controller.class.exposes ResourceFullMockUser # cleanup
27
- end
28
-
29
- it "finds the requested model object" do
30
- user = ResourceFullMockUser.create!
31
- get :show, :id => user.id
32
- assigns(:resource_full_mock_user).should == user
33
- end
34
-
35
- describe "resource_identifier and identified_by" do
36
- controller_name "resource_full_mock_users"
37
-
38
- before :each do
39
- ResourceFullMockUser.delete_all
40
- ResourceFullMockUsersController.resource_identifier = :id
41
- end
42
-
43
- def get_should_retrieve_by_first_name
44
- eustace = ResourceFullMockUser.create! :first_name => "eustace"
45
- eustace_noise = ResourceFullMockUser.create! :first_name => eustace.id
46
- get :show, :id => "eustace"
47
- assigns(:resource_full_mock_user).should == eustace
48
- end
49
-
50
- def get_should_retrieve_by_id
51
- jimbo = ResourceFullMockUser.create! :first_name => "jimbo"
52
- jimbo_noise = ResourceFullMockUser.create! :first_name => jimbo.id
53
- get :show, :id => jimbo.id
54
- assigns(:resource_full_mock_user).should == jimbo
55
- end
56
-
57
- it "finds the requested model object using the correct column if the resource_identifier attribute has been overridden" do
58
- ResourceFullMockUsersController.resource_identifier = :first_name
59
- get_should_retrieve_by_first_name
60
- end
61
-
62
- it "doesn't find the requested model object if there are none to find" do
63
- ResourceFullMockUsersController.resource_identifier = :first_name
64
- get :show, :id => "eustace"
65
- assigns(:resource_full_mock_user).should be_nil
66
- end
67
-
68
- it "finds the requested model object using the correct column if a block is provided to resource_identifier" do
69
- ResourceFullMockUsersController.resource_identifier = lambda do |id|
70
- if id =~ /[0-9]+/
71
- :id
72
- else :first_name end
73
- end
74
- get_should_retrieve_by_first_name
75
- get_should_retrieve_by_id
76
- end
77
-
78
- it "finds the requested model object only if the optional block provided to identifed_by is true" do
79
- ResourceFullMockUsersController.identified_by :first_name, :if => lambda { |id| id =~ /[a-zA-Z]+/ }
80
- get_should_retrieve_by_first_name
81
- get_should_retrieve_by_id
82
- end
83
-
84
- it "finds the requested model object unless the optional block provided to identifed_by is true" do
85
- ResourceFullMockUsersController.identified_by :first_name, :unless => lambda { |id| id =~ /[0-9]+/ }
86
- get_should_retrieve_by_first_name
87
- get_should_retrieve_by_id
88
- end
89
-
90
- it "finds the requested model object unless it requests a fallback to a numeric id" do
91
- ResourceFullMockUsersController.identified_by :first_name, :unless => :id_numeric
92
- get_should_retrieve_by_first_name
93
- get_should_retrieve_by_id
94
- end
95
- end
96
-
97
- it "updates the requested model object based on the given parameters" do
98
- user = ResourceFullMockUser.create! :last_name => "threepwood"
99
- post :update, :id => user.id, :resource_full_mock_user => { :last_name => "guybrush" }
100
- user.reload.last_name.should == "guybrush"
101
- end
102
-
103
- it "updates the requested model object using the correct column if the resource_identifier attribute has been overridden" do
104
- ResourceFullMockUsersController.resource_identifier = :first_name
105
- user = ResourceFullMockUser.create! :first_name => "guybrush"
106
- post :update, :id => "guybrush", :resource_full_mock_user => { :last_name => "threepwood" }
107
- user.reload.last_name.should == "threepwood"
108
- end
109
-
110
- it "creates a new model object based on the given parameters" do
111
- put :create, :resource_full_mock_user => { :first_name => "guybrush", :last_name => "threepwood" }
112
- ResourceFullMockUser.count.should == 1
113
- ResourceFullMockUser.find(:first).first_name.should == "guybrush"
114
- end
115
-
116
- it "creates a new model object appropriately if a creational parameter is queryable but not placed in the model object params, as with a nested route" do
117
- ResourceFullMockUsersController.queryable_with :first_name
118
- put :create, :first_name => "guybrush", :resource_full_mock_user => { :last_name => "threepwood" }
119
- ResourceFullMockUser.count.should == 1
120
- user = ResourceFullMockUser.find :first
121
- user.first_name.should == "guybrush"
122
- user.last_name.should == "threepwood"
123
- end
124
-
125
- it "deletes the requested model object" do
126
- user = ResourceFullMockUser.create!
127
- delete :destroy, :id => user.id
128
- ResourceFullMockUser.exists?(user.id).should be_false
129
- end
130
-
131
- it "deletes the requested model object using the correct column if the resource_identifier attribute has been overridden" do
132
- ResourceFullMockUsersController.resource_identifier = :first_name
133
- user = ResourceFullMockUser.create! :first_name => "guybrush"
134
- delete :destroy, :id => "guybrush"
135
- ResourceFullMockUser.exists?(user.id).should be_false
136
- end
137
-
138
- describe "with pagination" do
139
- controller_name "resource_full_mock_users"
140
-
141
- before :each do
142
- ResourceFullMockUser.delete_all
143
- @users = (1..6).collect { ResourceFullMockUser.create! }
144
- end
145
-
146
- after :all do
147
- ResourceFullMockUser.delete_all
148
- end
149
-
150
- it "limits the query to the correct number of records given that parameter" do
151
- ResourceFullMockUsersController.queryable_with :limit, :scope => lambda {|limit| { :limit => limit }}
152
- get :index, :limit => 2
153
- assigns(:resource_full_mock_users).should == @users[0..1]
154
- end
155
-
156
- it "offsets the query by the correct number of records" do
157
- ResourceFullMockUsersController.queryable_with :limit, :scope => lambda {|limit| { :limit => limit }}
158
- ResourceFullMockUsersController.queryable_with :offset, :scope => lambda {|offset| { :offset => offset }}
159
- get :index, :offset => 4, :limit => 2
160
- assigns(:resource_full_mock_users).should == @users[4..5]
161
- end
162
-
163
- xit "doesn't attempt to paginate if pagination is disabled" do
164
- ResourceFullMockUsersController.queryable_with :limit, :scope => lambda {|limit| { :limit => limit }}
165
- ResourceFullMockUsersController.queryable_with :offset, :scope => lambda {|offset| { :offset => offset }}
166
- ResourceFullMockUsersController.paginatable = false
167
- get :index, :offset => 4, :limit => 2
168
- assigns(:resource_full_mock_users).should == @users
169
- ResourceFullMockUsersController.paginatable = true # cleanup
170
- end
171
- end
172
-
173
- end
@@ -1,98 +0,0 @@
1
- # This file is copied to ~/spec when you run 'ruby script/generate rspec'
2
- # from the project root directory.
3
- ENV["RAILS_ENV"] = "test"
4
-
5
- require File.expand_path(File.dirname(__FILE__) + '/../../../../config/environment')
6
- require 'spec'
7
- require 'spec/rails'
8
- require 'resource_full/core_extensions/from_json'
9
-
10
- Spec::Runner.configure do |config|
11
- # If you're not using ActiveRecord you should remove these
12
- # lines, delete config/database.yml and disable :active_record
13
- # in your config/boot.rb
14
- config.use_transactional_fixtures = true
15
- config.use_instantiated_fixtures = false
16
- config.fixture_path = RAILS_ROOT + '/vendor/plugins/resource_full/spec/fixtures/'
17
- config.mock_with :mocha
18
-
19
- config.before(:all) do
20
- ActiveRecord::Base.connection.create_table "resource_full_mock_addresses", :force => true do |t|
21
- t.string "street"
22
- t.string "city"
23
- t.string "state_code"
24
- t.integer "zip"
25
- t.integer "resource_full_mock_user_id"
26
- t.timestamps
27
- end
28
-
29
- ActiveRecord::Base.connection.create_table "resource_full_mock_users", :force => true do |t|
30
- t.string "first_name"
31
- t.string "last_name"
32
- t.date "birthdate"
33
- t.string "email"
34
- t.string "join_date"
35
- t.integer "income"
36
- t.integer "resource_full_mock_employer_id"
37
- t.timestamps
38
- end
39
-
40
- ActiveRecord::Base.connection.create_table "resource_full_mock_employers", :force => true do |t|
41
- t.string "name"
42
- t.string "email"
43
- t.timestamps
44
- end
45
- end
46
- end
47
-
48
- ActionController::Routing::Routes.draw do |map|
49
- map.foo '/foo', :controller => 'resource_full_mocks', :action => 'foo'
50
- map.resources :resource_full_mocks, :resource_full_sub_mocks, :resource_full_mock_addresses
51
- map.resources :resource_full_mock_users, :collection => {:count => :get} do |users|
52
- users.resources :resource_full_mock_addresses
53
- end
54
- map.resources :resources, :controller => 'resource_full/controllers/resources' do |resource|
55
- resource.resources :routes, :controller => 'resource_full/controllers/routes'
56
- end
57
- end
58
-
59
- class ResourceFullMock
60
- def self.table_name; "mock"; end
61
- end
62
- class ResourceFullSubMock < ResourceFullMock; end
63
-
64
- # TODO Remove these or find a better way to handle ActiveRecord dependencies.
65
- class ResourceFullMockEmployer < ActiveRecord::Base
66
- has_many :resource_full_mock_users
67
- end
68
-
69
- class ResourceFullMockUser < ActiveRecord::Base
70
- belongs_to :resource_full_mock_employer
71
- has_many :resource_full_mock_addresses
72
- end
73
-
74
- class ResourceFullMockAddress < ActiveRecord::Base
75
- belongs_to :resource_full_mock_user
76
- end
77
-
78
- class ResourceFullMocksController < ResourceFull::Base
79
- # dispatch_spec custom methods spec, approx. line 98
80
- def foo
81
- render :xml => { :foo => "bar" }.to_xml
82
- end
83
- end
84
- class ResourceFullSubMocksController < ResourceFullMocksController; end
85
- class ResourceFullMockUsersController < ResourceFull::Base; end
86
- class ResourceFullMockAddressesController < ResourceFull::Base; end
87
-
88
- ActionController::Routing.use_controllers! %w{
89
- resource_full_mock_users
90
- resource_full_mock_addresses
91
- resource_full_mocks
92
- resource_full_sub_mocks
93
- resource_full/controllers/routes
94
- resource_full/controllers/resources
95
- }
96
-
97
- def putsh(stuff); puts ERB::Util.h(stuff) + "<br/>"; end
98
- def ph(stuff); puts ERB::Util.h(stuff.inspect) + "<br/>"; end
@@ -1 +0,0 @@
1
- # Uninstall hook code here
File without changes