restfulie-nosqlite 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (516) hide show
  1. data/.gitignore +20 -0
  2. data/.gitmodules +3 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +22 -0
  5. data/LICENSE +17 -0
  6. data/README.textile +93 -0
  7. data/Rakefile +119 -0
  8. data/full-examples/.gitignore +4 -0
  9. data/full-examples/README.textile +1 -0
  10. data/full-examples/mikemaze/README.textile +6 -0
  11. data/full-examples/mikemaze/maze_basic.rb +37 -0
  12. data/full-examples/mikemaze/maze_solver_spec.rb +108 -0
  13. data/full-examples/rest_from_scratch/part_1/.gitignore +4 -0
  14. data/full-examples/rest_from_scratch/part_1/.rspec +1 -0
  15. data/full-examples/rest_from_scratch/part_1/Gemfile +33 -0
  16. data/full-examples/rest_from_scratch/part_1/Gemfile.lock +101 -0
  17. data/full-examples/rest_from_scratch/part_1/README +256 -0
  18. data/full-examples/rest_from_scratch/part_1/Rakefile +7 -0
  19. data/full-examples/rest_from_scratch/part_1/app/controllers/application_controller.rb +3 -0
  20. data/full-examples/rest_from_scratch/part_1/app/controllers/items_controller.rb +20 -0
  21. data/full-examples/rest_from_scratch/part_1/app/helpers/application_helper.rb +2 -0
  22. data/full-examples/rest_from_scratch/part_1/app/helpers/items_helper.rb +2 -0
  23. data/full-examples/rest_from_scratch/part_1/app/models/item.rb +2 -0
  24. data/full-examples/rest_from_scratch/part_1/app/views/items/_form.html.erb +25 -0
  25. data/full-examples/rest_from_scratch/part_1/app/views/items/edit.html.erb +6 -0
  26. data/full-examples/rest_from_scratch/part_1/app/views/items/index.html.erb +25 -0
  27. data/full-examples/rest_from_scratch/part_1/app/views/items/new.html.erb +5 -0
  28. data/full-examples/rest_from_scratch/part_1/app/views/items/show.html.erb +15 -0
  29. data/full-examples/rest_from_scratch/part_1/app/views/layouts/application.html.erb +14 -0
  30. data/full-examples/rest_from_scratch/part_1/autotest/discover.rb +1 -0
  31. data/full-examples/rest_from_scratch/part_1/config/application.rb +42 -0
  32. data/full-examples/rest_from_scratch/part_1/config/boot.rb +13 -0
  33. data/full-examples/rest_from_scratch/part_1/config/database.yml +22 -0
  34. data/full-examples/rest_from_scratch/part_1/config/environment.rb +5 -0
  35. data/full-examples/rest_from_scratch/part_1/config/environments/development.rb +26 -0
  36. data/full-examples/rest_from_scratch/part_1/config/environments/production.rb +49 -0
  37. data/full-examples/rest_from_scratch/part_1/config/environments/test.rb +35 -0
  38. data/full-examples/rest_from_scratch/part_1/config/initializers/backtrace_silencers.rb +7 -0
  39. data/full-examples/rest_from_scratch/part_1/config/initializers/inflections.rb +10 -0
  40. data/full-examples/rest_from_scratch/part_1/config/initializers/mime_types.rb +5 -0
  41. data/full-examples/rest_from_scratch/part_1/config/initializers/secret_token.rb +7 -0
  42. data/full-examples/rest_from_scratch/part_1/config/initializers/session_store.rb +8 -0
  43. data/full-examples/rest_from_scratch/part_1/config/locales/en.yml +5 -0
  44. data/full-examples/rest_from_scratch/part_1/config/routes.rb +60 -0
  45. data/full-examples/rest_from_scratch/part_1/config.ru +4 -0
  46. data/full-examples/rest_from_scratch/part_1/db/migrate/20100830171258_create_items.rb +14 -0
  47. data/full-examples/rest_from_scratch/part_1/db/schema.rb +22 -0
  48. data/full-examples/rest_from_scratch/part_1/db/seeds.rb +7 -0
  49. data/full-examples/rest_from_scratch/part_1/lib/tasks/.gitkeep +0 -0
  50. data/full-examples/rest_from_scratch/part_1/public/404.html +26 -0
  51. data/full-examples/rest_from_scratch/part_1/public/422.html +26 -0
  52. data/full-examples/rest_from_scratch/part_1/public/500.html +26 -0
  53. data/full-examples/rest_from_scratch/part_1/public/favicon.ico +0 -0
  54. data/full-examples/rest_from_scratch/part_1/public/images/rails.png +0 -0
  55. data/full-examples/rest_from_scratch/part_1/public/index.html +239 -0
  56. data/full-examples/rest_from_scratch/part_1/public/javascripts/application.js +2 -0
  57. data/full-examples/rest_from_scratch/part_1/public/javascripts/controls.js +965 -0
  58. data/full-examples/rest_from_scratch/part_1/public/javascripts/dragdrop.js +974 -0
  59. data/full-examples/rest_from_scratch/part_1/public/javascripts/effects.js +1123 -0
  60. data/full-examples/rest_from_scratch/part_1/public/javascripts/prototype.js +6001 -0
  61. data/full-examples/rest_from_scratch/part_1/public/javascripts/rails.js +175 -0
  62. data/full-examples/rest_from_scratch/part_1/public/robots.txt +5 -0
  63. data/full-examples/rest_from_scratch/part_1/public/stylesheets/.gitkeep +0 -0
  64. data/full-examples/rest_from_scratch/part_1/public/stylesheets/scaffold.css +56 -0
  65. data/full-examples/rest_from_scratch/part_1/script/rails +6 -0
  66. data/full-examples/rest_from_scratch/part_1/spec/items_spec.rb +31 -0
  67. data/full-examples/rest_from_scratch/part_1/spec/spec_helper.rb +27 -0
  68. data/full-examples/rest_from_scratch/part_1/test/fixtures/items.yml +9 -0
  69. data/full-examples/rest_from_scratch/part_1/test/functional/items_controller_test.rb +49 -0
  70. data/full-examples/rest_from_scratch/part_1/test/performance/browsing_test.rb +9 -0
  71. data/full-examples/rest_from_scratch/part_1/test/test_helper.rb +13 -0
  72. data/full-examples/rest_from_scratch/part_1/test/unit/helpers/items_helper_test.rb +4 -0
  73. data/full-examples/rest_from_scratch/part_1/test/unit/item_test.rb +8 -0
  74. data/full-examples/rest_from_scratch/part_1/vendor/plugins/.gitkeep +0 -0
  75. data/full-examples/rest_from_scratch/part_2/.gitignore +4 -0
  76. data/full-examples/rest_from_scratch/part_2/.rspec +1 -0
  77. data/full-examples/rest_from_scratch/part_2/Gemfile +34 -0
  78. data/full-examples/rest_from_scratch/part_2/Gemfile.lock +101 -0
  79. data/full-examples/rest_from_scratch/part_2/README +256 -0
  80. data/full-examples/rest_from_scratch/part_2/Rakefile +7 -0
  81. data/full-examples/rest_from_scratch/part_2/app/controllers/application_controller.rb +3 -0
  82. data/full-examples/rest_from_scratch/part_2/app/controllers/baskets_controller.rb +25 -0
  83. data/full-examples/rest_from_scratch/part_2/app/controllers/items_controller.rb +20 -0
  84. data/full-examples/rest_from_scratch/part_2/app/controllers/payments_controller.rb +17 -0
  85. data/full-examples/rest_from_scratch/part_2/app/helpers/application_helper.rb +2 -0
  86. data/full-examples/rest_from_scratch/part_2/app/helpers/baskets_helper.rb +2 -0
  87. data/full-examples/rest_from_scratch/part_2/app/helpers/items_helper.rb +2 -0
  88. data/full-examples/rest_from_scratch/part_2/app/helpers/payments_helper.rb +2 -0
  89. data/full-examples/rest_from_scratch/part_2/app/models/basket.rb +11 -0
  90. data/full-examples/rest_from_scratch/part_2/app/models/item.rb +2 -0
  91. data/full-examples/rest_from_scratch/part_2/app/models/payment.rb +3 -0
  92. data/full-examples/rest_from_scratch/part_2/app/views/baskets/show.tokamak +9 -0
  93. data/full-examples/rest_from_scratch/part_2/app/views/items/_show.tokamak +6 -0
  94. data/full-examples/rest_from_scratch/part_2/app/views/items/index.tokamak +14 -0
  95. data/full-examples/rest_from_scratch/part_2/app/views/layouts/application.html.erb +14 -0
  96. data/full-examples/rest_from_scratch/part_2/autotest/discover.rb +1 -0
  97. data/full-examples/rest_from_scratch/part_2/config/application.rb +42 -0
  98. data/full-examples/rest_from_scratch/part_2/config/boot.rb +13 -0
  99. data/full-examples/rest_from_scratch/part_2/config/database.yml +22 -0
  100. data/full-examples/rest_from_scratch/part_2/config/environment.rb +5 -0
  101. data/full-examples/rest_from_scratch/part_2/config/environments/development.rb +26 -0
  102. data/full-examples/rest_from_scratch/part_2/config/environments/production.rb +49 -0
  103. data/full-examples/rest_from_scratch/part_2/config/environments/test.rb +35 -0
  104. data/full-examples/rest_from_scratch/part_2/config/initializers/backtrace_silencers.rb +7 -0
  105. data/full-examples/rest_from_scratch/part_2/config/initializers/inflections.rb +10 -0
  106. data/full-examples/rest_from_scratch/part_2/config/initializers/mime_types.rb +5 -0
  107. data/full-examples/rest_from_scratch/part_2/config/initializers/secret_token.rb +7 -0
  108. data/full-examples/rest_from_scratch/part_2/config/initializers/session_store.rb +8 -0
  109. data/full-examples/rest_from_scratch/part_2/config/locales/en.yml +5 -0
  110. data/full-examples/rest_from_scratch/part_2/config/routes.rb +65 -0
  111. data/full-examples/rest_from_scratch/part_2/config.ru +4 -0
  112. data/full-examples/rest_from_scratch/part_2/db/migrate/20100830171258_create_items.rb +16 -0
  113. data/full-examples/rest_from_scratch/part_2/db/migrate/20100830180139_create_baskets.rb +12 -0
  114. data/full-examples/rest_from_scratch/part_2/db/migrate/20100830180203_create_payments.rb +16 -0
  115. data/full-examples/rest_from_scratch/part_2/db/migrate/20100830185456_connect_baskets_to_items.rb +13 -0
  116. data/full-examples/rest_from_scratch/part_2/db/schema.rb +43 -0
  117. data/full-examples/rest_from_scratch/part_2/db/seeds.rb +7 -0
  118. data/full-examples/rest_from_scratch/part_2/lib/tasks/.gitkeep +0 -0
  119. data/full-examples/rest_from_scratch/part_2/public/404.html +26 -0
  120. data/full-examples/rest_from_scratch/part_2/public/422.html +26 -0
  121. data/full-examples/rest_from_scratch/part_2/public/500.html +26 -0
  122. data/full-examples/rest_from_scratch/part_2/public/favicon.ico +0 -0
  123. data/full-examples/rest_from_scratch/part_2/public/images/rails.png +0 -0
  124. data/full-examples/rest_from_scratch/part_2/public/index.html +239 -0
  125. data/full-examples/rest_from_scratch/part_2/public/javascripts/application.js +2 -0
  126. data/full-examples/rest_from_scratch/part_2/public/javascripts/controls.js +965 -0
  127. data/full-examples/rest_from_scratch/part_2/public/javascripts/dragdrop.js +974 -0
  128. data/full-examples/rest_from_scratch/part_2/public/javascripts/effects.js +1123 -0
  129. data/full-examples/rest_from_scratch/part_2/public/javascripts/prototype.js +6001 -0
  130. data/full-examples/rest_from_scratch/part_2/public/javascripts/rails.js +175 -0
  131. data/full-examples/rest_from_scratch/part_2/public/robots.txt +5 -0
  132. data/full-examples/rest_from_scratch/part_2/public/stylesheets/.gitkeep +0 -0
  133. data/full-examples/rest_from_scratch/part_2/public/stylesheets/scaffold.css +56 -0
  134. data/full-examples/rest_from_scratch/part_2/script/rails +6 -0
  135. data/full-examples/rest_from_scratch/part_2/spec/full_cycle_spec.rb +31 -0
  136. data/full-examples/rest_from_scratch/part_2/spec/items_spec.rb +31 -0
  137. data/full-examples/rest_from_scratch/part_2/spec/spec_helper.rb +27 -0
  138. data/full-examples/rest_from_scratch/part_2/test/fixtures/items.yml +9 -0
  139. data/full-examples/rest_from_scratch/part_2/test/functional/items_controller_test.rb +49 -0
  140. data/full-examples/rest_from_scratch/part_2/test/performance/browsing_test.rb +9 -0
  141. data/full-examples/rest_from_scratch/part_2/test/test_helper.rb +13 -0
  142. data/full-examples/rest_from_scratch/part_2/test/unit/helpers/items_helper_test.rb +4 -0
  143. data/full-examples/rest_from_scratch/part_2/test/unit/item_test.rb +8 -0
  144. data/full-examples/rest_from_scratch/part_2/vendor/plugins/.gitkeep +0 -0
  145. data/full-examples/rest_from_scratch/part_3/.gitignore +4 -0
  146. data/full-examples/rest_from_scratch/part_3/.rspec +1 -0
  147. data/full-examples/rest_from_scratch/part_3/Gemfile +33 -0
  148. data/full-examples/rest_from_scratch/part_3/Gemfile.lock +101 -0
  149. data/full-examples/rest_from_scratch/part_3/README +256 -0
  150. data/full-examples/rest_from_scratch/part_3/Rakefile +7 -0
  151. data/full-examples/rest_from_scratch/part_3/app/controllers/application_controller.rb +3 -0
  152. data/full-examples/rest_from_scratch/part_3/app/controllers/baskets_controller.rb +34 -0
  153. data/full-examples/rest_from_scratch/part_3/app/controllers/items_controller.rb +20 -0
  154. data/full-examples/rest_from_scratch/part_3/app/controllers/payments_controller.rb +17 -0
  155. data/full-examples/rest_from_scratch/part_3/app/helpers/application_helper.rb +2 -0
  156. data/full-examples/rest_from_scratch/part_3/app/helpers/baskets_helper.rb +2 -0
  157. data/full-examples/rest_from_scratch/part_3/app/helpers/items_helper.rb +2 -0
  158. data/full-examples/rest_from_scratch/part_3/app/helpers/payments_helper.rb +2 -0
  159. data/full-examples/rest_from_scratch/part_3/app/models/basket.rb +11 -0
  160. data/full-examples/rest_from_scratch/part_3/app/models/item.rb +2 -0
  161. data/full-examples/rest_from_scratch/part_3/app/models/payment.rb +3 -0
  162. data/full-examples/rest_from_scratch/part_3/app/views/baskets/show.tokamak +9 -0
  163. data/full-examples/rest_from_scratch/part_3/app/views/items/_show.tokamak +6 -0
  164. data/full-examples/rest_from_scratch/part_3/app/views/items/index.tokamak +14 -0
  165. data/full-examples/rest_from_scratch/part_3/app/views/layouts/application.html.erb +14 -0
  166. data/full-examples/rest_from_scratch/part_3/autotest/discover.rb +1 -0
  167. data/full-examples/rest_from_scratch/part_3/config/application.rb +42 -0
  168. data/full-examples/rest_from_scratch/part_3/config/boot.rb +13 -0
  169. data/full-examples/rest_from_scratch/part_3/config/database.yml +22 -0
  170. data/full-examples/rest_from_scratch/part_3/config/environment.rb +5 -0
  171. data/full-examples/rest_from_scratch/part_3/config/environments/development.rb +26 -0
  172. data/full-examples/rest_from_scratch/part_3/config/environments/production.rb +49 -0
  173. data/full-examples/rest_from_scratch/part_3/config/environments/test.rb +35 -0
  174. data/full-examples/rest_from_scratch/part_3/config/initializers/backtrace_silencers.rb +7 -0
  175. data/full-examples/rest_from_scratch/part_3/config/initializers/inflections.rb +10 -0
  176. data/full-examples/rest_from_scratch/part_3/config/initializers/mime_types.rb +5 -0
  177. data/full-examples/rest_from_scratch/part_3/config/initializers/secret_token.rb +7 -0
  178. data/full-examples/rest_from_scratch/part_3/config/initializers/session_store.rb +8 -0
  179. data/full-examples/rest_from_scratch/part_3/config/locales/en.yml +5 -0
  180. data/full-examples/rest_from_scratch/part_3/config/routes.rb +67 -0
  181. data/full-examples/rest_from_scratch/part_3/config.ru +4 -0
  182. data/full-examples/rest_from_scratch/part_3/db/migrate/20100830171258_create_items.rb +16 -0
  183. data/full-examples/rest_from_scratch/part_3/db/migrate/20100830180139_create_baskets.rb +12 -0
  184. data/full-examples/rest_from_scratch/part_3/db/migrate/20100830180203_create_payments.rb +16 -0
  185. data/full-examples/rest_from_scratch/part_3/db/migrate/20100830185456_connect_baskets_to_items.rb +13 -0
  186. data/full-examples/rest_from_scratch/part_3/db/schema.rb +43 -0
  187. data/full-examples/rest_from_scratch/part_3/db/seeds.rb +7 -0
  188. data/full-examples/rest_from_scratch/part_3/lib/tasks/.gitkeep +0 -0
  189. data/full-examples/rest_from_scratch/part_3/public/404.html +26 -0
  190. data/full-examples/rest_from_scratch/part_3/public/422.html +26 -0
  191. data/full-examples/rest_from_scratch/part_3/public/500.html +26 -0
  192. data/full-examples/rest_from_scratch/part_3/public/favicon.ico +0 -0
  193. data/full-examples/rest_from_scratch/part_3/public/images/rails.png +0 -0
  194. data/full-examples/rest_from_scratch/part_3/public/index.html +239 -0
  195. data/full-examples/rest_from_scratch/part_3/public/javascripts/application.js +2 -0
  196. data/full-examples/rest_from_scratch/part_3/public/javascripts/controls.js +965 -0
  197. data/full-examples/rest_from_scratch/part_3/public/javascripts/dragdrop.js +974 -0
  198. data/full-examples/rest_from_scratch/part_3/public/javascripts/effects.js +1123 -0
  199. data/full-examples/rest_from_scratch/part_3/public/javascripts/prototype.js +6001 -0
  200. data/full-examples/rest_from_scratch/part_3/public/javascripts/rails.js +175 -0
  201. data/full-examples/rest_from_scratch/part_3/public/robots.txt +5 -0
  202. data/full-examples/rest_from_scratch/part_3/public/stylesheets/.gitkeep +0 -0
  203. data/full-examples/rest_from_scratch/part_3/public/stylesheets/scaffold.css +56 -0
  204. data/full-examples/rest_from_scratch/part_3/script/rails +6 -0
  205. data/full-examples/rest_from_scratch/part_3/spec/buying_process_spec.rb +24 -0
  206. data/full-examples/rest_from_scratch/part_3/spec/client/buying_process.rb +23 -0
  207. data/full-examples/rest_from_scratch/part_3/spec/client/scenarios/buying_process.scenario +15 -0
  208. data/full-examples/rest_from_scratch/part_3/spec/client/steps/buying_process.rb +56 -0
  209. data/full-examples/rest_from_scratch/part_3/spec/full_cycle_spec.rb +30 -0
  210. data/full-examples/rest_from_scratch/part_3/spec/items_spec.rb +31 -0
  211. data/full-examples/rest_from_scratch/part_3/spec/spec_helper.rb +27 -0
  212. data/full-examples/rest_from_scratch/part_3/test/fixtures/items.yml +9 -0
  213. data/full-examples/rest_from_scratch/part_3/test/functional/items_controller_test.rb +49 -0
  214. data/full-examples/rest_from_scratch/part_3/test/performance/browsing_test.rb +9 -0
  215. data/full-examples/rest_from_scratch/part_3/test/test_helper.rb +13 -0
  216. data/full-examples/rest_from_scratch/part_3/test/unit/helpers/items_helper_test.rb +4 -0
  217. data/full-examples/rest_from_scratch/part_3/test/unit/item_test.rb +8 -0
  218. data/full-examples/rest_from_scratch/part_3/vendor/plugins/.gitkeep +0 -0
  219. data/init.rb +1 -0
  220. data/lib/restfulie/client/README.textile +33 -0
  221. data/lib/restfulie/client/base.rb +36 -0
  222. data/lib/restfulie/client/cache/basic.rb +78 -0
  223. data/lib/restfulie/client/cache/fake.rb +15 -0
  224. data/lib/restfulie/client/cache/http_ext.rb +123 -0
  225. data/lib/restfulie/client/cache/restrictions.rb +15 -0
  226. data/lib/restfulie/client/cache.rb +11 -0
  227. data/lib/restfulie/client/configuration.rb +67 -0
  228. data/lib/restfulie/client/dsl.rb +52 -0
  229. data/lib/restfulie/client/entry_point.rb +61 -0
  230. data/lib/restfulie/client/ext/http_ext.rb +22 -0
  231. data/lib/restfulie/client/ext/link_ext.rb +11 -0
  232. data/lib/restfulie/client/ext/open_search_ext.rb +26 -0
  233. data/lib/restfulie/client/ext.rb +3 -0
  234. data/lib/restfulie/client/feature/base.rb +75 -0
  235. data/lib/restfulie/client/feature/base_request.rb +46 -0
  236. data/lib/restfulie/client/feature/cache.rb +16 -0
  237. data/lib/restfulie/client/feature/conneg_when_unaccepted.rb +25 -0
  238. data/lib/restfulie/client/feature/enhance_response.rb +12 -0
  239. data/lib/restfulie/client/feature/fake_response.rb +13 -0
  240. data/lib/restfulie/client/feature/follow_request.rb +59 -0
  241. data/lib/restfulie/client/feature/history.rb +26 -0
  242. data/lib/restfulie/client/feature/history_request.rb +17 -0
  243. data/lib/restfulie/client/feature/open_search/pattern_matcher.rb +25 -0
  244. data/lib/restfulie/client/feature/open_search.rb +21 -0
  245. data/lib/restfulie/client/feature/rescue_exception.rb +13 -0
  246. data/lib/restfulie/client/feature/retry_when_unavailable.rb +25 -0
  247. data/lib/restfulie/client/feature/serialize_body.rb +35 -0
  248. data/lib/restfulie/client/feature/setup_header.rb +22 -0
  249. data/lib/restfulie/client/feature/throw_error_request.rb +46 -0
  250. data/lib/restfulie/client/feature/verb.rb +112 -0
  251. data/lib/restfulie/client/feature.rb +5 -0
  252. data/lib/restfulie/client/http/cache.rb +28 -0
  253. data/lib/restfulie/client/http/error.rb +77 -0
  254. data/lib/restfulie/client/http/link_header.rb +39 -0
  255. data/lib/restfulie/client/http/response_holder.rb +29 -0
  256. data/lib/restfulie/client/http.rb +7 -0
  257. data/lib/restfulie/client/master_delegator.rb +31 -0
  258. data/lib/restfulie/client/mikyung/concatenator.rb +18 -0
  259. data/lib/restfulie/client/mikyung/core.rb +71 -0
  260. data/lib/restfulie/client/mikyung/languages/german.rb +24 -0
  261. data/lib/restfulie/client/mikyung/languages/portuguese.rb +23 -0
  262. data/lib/restfulie/client/mikyung/languages.rb +11 -0
  263. data/lib/restfulie/client/mikyung/rest_process_model.rb +191 -0
  264. data/lib/restfulie/client/mikyung/steady_state_walker.rb +38 -0
  265. data/lib/restfulie/client/mikyung/then_condition.rb +39 -0
  266. data/lib/restfulie/client/mikyung/when_condition.rb +57 -0
  267. data/lib/restfulie/client/mikyung.rb +15 -0
  268. data/lib/restfulie/client/stack_navigator.rb +39 -0
  269. data/lib/restfulie/client.rb +24 -0
  270. data/lib/restfulie/common/error.rb +19 -0
  271. data/lib/restfulie/common/logger.rb +19 -0
  272. data/lib/restfulie/common.rb +17 -0
  273. data/lib/restfulie/server/action_controller/base.rb +46 -0
  274. data/lib/restfulie/server/action_controller/params_parser.rb +100 -0
  275. data/lib/restfulie/server/action_controller/patch.rb +6 -0
  276. data/lib/restfulie/server/action_controller/restful_responder.rb +12 -0
  277. data/lib/restfulie/server/action_controller/trait/cacheable.rb +94 -0
  278. data/lib/restfulie/server/action_controller/trait/created.rb +17 -0
  279. data/lib/restfulie/server/action_controller/trait/save_prior_to_create.rb +13 -0
  280. data/lib/restfulie/server/action_controller/trait.rb +9 -0
  281. data/lib/restfulie/server/action_controller.rb +11 -0
  282. data/lib/restfulie/server/configuration.rb +24 -0
  283. data/lib/restfulie/server/controller.rb +74 -0
  284. data/lib/restfulie/server/core_ext/array.rb +35 -0
  285. data/lib/restfulie/server/core_ext.rb +1 -0
  286. data/lib/restfulie/server/hypertemplate.rb +3 -0
  287. data/lib/restfulie/server.rb +26 -0
  288. data/lib/restfulie/version.rb +14 -0
  289. data/lib/restfulie.rb +34 -0
  290. data/restfulie-nosqlite.gemspec +39 -0
  291. data/script/console +8 -0
  292. data/site/README +1 -0
  293. data/site/Rakefile +10 -0
  294. data/site/app/controllers/application_controller.rb +11 -0
  295. data/site/app/controllers/java_controller.rb +53 -0
  296. data/site/app/controllers/javascript_controller.rb +12 -0
  297. data/site/app/controllers/restful_csharp_controller.rb +12 -0
  298. data/site/app/controllers/ruby_controller.rb +24 -0
  299. data/site/app/controllers/systems_controller.rb +14 -0
  300. data/site/app/helpers/application_helper.rb +10 -0
  301. data/site/app/helpers/documentation_helper.rb +2 -0
  302. data/site/app/views/java/features.html.erb +99 -0
  303. data/site/app/views/java/hypermedia.html.erb +97 -0
  304. data/site/app/views/java/server.html.erb +0 -0
  305. data/site/app/views/layouts/_blackmenu.html.erb +11 -0
  306. data/site/app/views/layouts/_uppermenu.html.erb +24 -0
  307. data/site/app/views/layouts/application.html.erb +50 -0
  308. data/site/app/views/layouts/java.html.erb +72 -0
  309. data/site/app/views/layouts/javascript.html.erb +62 -0
  310. data/site/app/views/layouts/restful_csharp.html.erb +81 -0
  311. data/site/app/views/layouts/restful_java.html.erb +87 -0
  312. data/site/app/views/shared/_examples.html.erb +29 -0
  313. data/site/app/views/shared/_negotiation.html.erb +9 -0
  314. data/site/app/views/shared/_simple_representation.html.erb +37 -0
  315. data/site/app/views/systems/features.html.erb +106 -0
  316. data/site/app/views/systems/index.html.erb +97 -0
  317. data/site/app/views/systems/support.html.erb +54 -0
  318. data/site/config/boot.rb +110 -0
  319. data/site/config/database.yml +22 -0
  320. data/site/config/environment.rb +41 -0
  321. data/site/config/environments/development.rb +17 -0
  322. data/site/config/environments/production.rb +28 -0
  323. data/site/config/environments/test.rb +28 -0
  324. data/site/config/initializers/backtrace_silencers.rb +7 -0
  325. data/site/config/initializers/inflections.rb +10 -0
  326. data/site/config/initializers/mime_types.rb +5 -0
  327. data/site/config/initializers/new_rails_defaults.rb +21 -0
  328. data/site/config/initializers/session_store.rb +15 -0
  329. data/site/config/locales/en.yml +5 -0
  330. data/site/config/routes.rb +56 -0
  331. data/site/db/seeds.rb +7 -0
  332. data/site/public/404.html +30 -0
  333. data/site/public/422.html +30 -0
  334. data/site/public/500.html +30 -0
  335. data/site/public/caelumobjects-restful-rails.pdf +0 -0
  336. data/site/public/docs.html +164 -0
  337. data/site/public/favicon.ico +0 -0
  338. data/site/public/images/bgBarHome-trans.png +0 -0
  339. data/site/public/images/bgHeader.png +0 -0
  340. data/site/public/images/bgSubMenu-trans.png +0 -0
  341. data/site/public/images/code_java_01.png +0 -0
  342. data/site/public/images/code_java_02.png +0 -0
  343. data/site/public/images/code_net_01.png +0 -0
  344. data/site/public/images/code_net_02.png +0 -0
  345. data/site/public/images/code_ruby_01.png +0 -0
  346. data/site/public/images/code_ruby_02.png +0 -0
  347. data/site/public/images/dependency.png +0 -0
  348. data/site/public/images/ldl-trans.png +0 -0
  349. data/site/public/images/leftBGBtn.png +0 -0
  350. data/site/public/images/logoCaelumGray-trans.png +0 -0
  351. data/site/public/images/negotiation.png +0 -0
  352. data/site/public/images/rails.png +0 -0
  353. data/site/public/images/restfulieSprites-trans.png +0 -0
  354. data/site/public/images/rightBGBtn.png +0 -0
  355. data/site/public/images/service.png +0 -0
  356. data/site/public/images/subMenuBottom-trans.png +0 -0
  357. data/site/public/images/subMenuTop-trans.png +0 -0
  358. data/site/public/javascripts/application.js +2 -0
  359. data/site/public/javascripts/controls.js +963 -0
  360. data/site/public/javascripts/dragdrop.js +973 -0
  361. data/site/public/javascripts/effects.js +1128 -0
  362. data/site/public/javascripts/prototype.js +4320 -0
  363. data/site/public/robots.txt +5 -0
  364. data/site/public/stylesheets/menu.css +98 -0
  365. data/site/public/stylesheets/screen.css +345 -0
  366. data/site/public/stylesheets/uppermenu.css +87 -0
  367. data/site/script/about +4 -0
  368. data/site/script/console +3 -0
  369. data/site/script/dbconsole +3 -0
  370. data/site/script/destroy +3 -0
  371. data/site/script/generate +3 -0
  372. data/site/script/performance/benchmarker +3 -0
  373. data/site/script/performance/profiler +3 -0
  374. data/site/script/plugin +3 -0
  375. data/site/script/runner +3 -0
  376. data/site/script/server +3 -0
  377. data/site/test/functional/documentation_controller_test.rb +8 -0
  378. data/site/test/performance/browsing_test.rb +9 -0
  379. data/site/test/test_helper.rb +38 -0
  380. data/site/test/unit/helpers/documentation_helper_test.rb +4 -0
  381. data/spec/integration/twitter.rb +945 -0
  382. data/spec/integration/twitter_spec.rb +24 -0
  383. data/spec/spec_helper.rb +4 -0
  384. data/spec/unit/client/base_spec.rb +9 -0
  385. data/spec/unit/client/cache/fake_spec.rb +23 -0
  386. data/spec/unit/client/cache/http_ext_spec.rb +182 -0
  387. data/spec/unit/client/cache/restrictions_spec.rb +24 -0
  388. data/spec/unit/client/configuration_spec.rb +54 -0
  389. data/spec/unit/client/ext/open_search_spec.rb +28 -0
  390. data/spec/unit/client/feature/conneg_when_unaccepted_spec.rb +45 -0
  391. data/spec/unit/client/feature/open_search/pattern_matcher_spec.rb +21 -0
  392. data/spec/unit/client/feature/rescue_exception_spec.rb +27 -0
  393. data/spec/unit/client/feature/retry_when_unavailable_spec.rb +38 -0
  394. data/spec/unit/client/feature/verb_spec.rb +37 -0
  395. data/spec/unit/client/http/link_header_spec.rb +43 -0
  396. data/spec/unit/client/mikyung/concatenator_spec.rb +14 -0
  397. data/spec/unit/client/mikyung/rest_process_model_spec.rb +140 -0
  398. data/spec/unit/client/mikyung/steady_state_walker_spec.rb +39 -0
  399. data/spec/unit/client/mikyung/then_condition_spec.rb +38 -0
  400. data/spec/unit/client/mikyung/when_condition_spec.rb +59 -0
  401. data/spec/unit/client/mikyung_spec.rb +72 -0
  402. data/spec/unit/client/stack_navigator.rb +75 -0
  403. data/spec/unit/common/errors_spec.rb +33 -0
  404. data/spec/unit/restfulie_spec.rb +30 -0
  405. data/spec/unit/server/action_controller/trait/cacheable_spec.rb +48 -0
  406. data/spec/unit/server/action_controller/trait/created_spec.rb +50 -0
  407. data/spec/unit/server/configuration_spec.rb +36 -0
  408. data/spec/unit/server/core_ext/array_spec.rb +35 -0
  409. data/spec/unit/server/restfulie_controller_spec.rb +110 -0
  410. data/spec/unit/spec_helper.rb +1 -0
  411. data/tests/.gitignore +5 -0
  412. data/tests/.rspec +1 -0
  413. data/tests/Gemfile +42 -0
  414. data/tests/README +256 -0
  415. data/tests/Rakefile +7 -0
  416. data/tests/app/controllers/albums_controller.rb +10 -0
  417. data/tests/app/controllers/application_controller.rb +3 -0
  418. data/tests/app/controllers/artists_controller.rb +12 -0
  419. data/tests/app/controllers/cacheable_songs_controller.rb +28 -0
  420. data/tests/app/controllers/projects_controller.rb +13 -0
  421. data/tests/app/controllers/render_controller.rb +15 -0
  422. data/tests/app/controllers/songs_controller.rb +2 -0
  423. data/tests/app/helpers/albums_helper.rb +2 -0
  424. data/tests/app/helpers/application_helper.rb +2 -0
  425. data/tests/app/helpers/artists_helper.rb +2 -0
  426. data/tests/app/helpers/cacheable_clients_helper.rb +2 -0
  427. data/tests/app/helpers/projects_helper.rb +2 -0
  428. data/tests/app/helpers/render_helper.rb +2 -0
  429. data/tests/app/helpers/songs_helper.rb +2 -0
  430. data/tests/app/models/album.rb +4 -0
  431. data/tests/app/models/artist.rb +2 -0
  432. data/tests/app/models/song.rb +3 -0
  433. data/tests/app/views/albums/_member.tokamak +11 -0
  434. data/tests/app/views/albums/index.tokamak +26 -0
  435. data/tests/app/views/albums/show.tokamak +3 -0
  436. data/tests/app/views/artists/_form.html.erb +25 -0
  437. data/tests/app/views/artists/edit.html.erb +6 -0
  438. data/tests/app/views/artists/index.html.erb +25 -0
  439. data/tests/app/views/artists/new.html.erb +5 -0
  440. data/tests/app/views/artists/show.html.erb +15 -0
  441. data/tests/app/views/cacheable_clients/collection.tokamak +0 -0
  442. data/tests/app/views/cacheable_clients/empty.tokamak +0 -0
  443. data/tests/app/views/cacheable_clients/single.tokamak +0 -0
  444. data/tests/app/views/layouts/application.html.erb +14 -0
  445. data/tests/app/views/projects/index.atom.tokamak +14 -0
  446. data/tests/app/views/projects/new.atom.tokamak +7 -0
  447. data/tests/app/views/projects/new.tokamak +0 -0
  448. data/tests/app/views/projects/show.tokamak +7 -0
  449. data/tests/autotest/discover.rb +2 -0
  450. data/tests/config/application.rb +42 -0
  451. data/tests/config/boot.rb +13 -0
  452. data/tests/config/database.yml +22 -0
  453. data/tests/config/environment.rb +5 -0
  454. data/tests/config/environments/development.rb +22 -0
  455. data/tests/config/environments/production.rb +49 -0
  456. data/tests/config/environments/test.rb +35 -0
  457. data/tests/config/initializers/backtrace_silencers.rb +7 -0
  458. data/tests/config/initializers/inflections.rb +10 -0
  459. data/tests/config/initializers/mime_types.rb +5 -0
  460. data/tests/config/initializers/secret_token.rb +7 -0
  461. data/tests/config/initializers/session_store.rb +8 -0
  462. data/tests/config/locales/en.yml +5 -0
  463. data/tests/config/routes.rb +66 -0
  464. data/tests/config.ru +4 -0
  465. data/tests/db/migrate/20100817165415_create_albums.rb +15 -0
  466. data/tests/db/migrate/20100817165436_create_songs.rb +16 -0
  467. data/tests/db/migrate/20100819165238_create_artists.rb +14 -0
  468. data/tests/db/schema.rb +39 -0
  469. data/tests/db/seeds.rb +7 -0
  470. data/tests/lib/tasks/.gitkeep +0 -0
  471. data/tests/public/404.html +26 -0
  472. data/tests/public/422.html +26 -0
  473. data/tests/public/500.html +26 -0
  474. data/tests/public/favicon.ico +0 -0
  475. data/tests/public/images/rails.png +0 -0
  476. data/tests/public/index.html +262 -0
  477. data/tests/public/javascripts/application.js +2 -0
  478. data/tests/public/javascripts/controls.js +965 -0
  479. data/tests/public/javascripts/dragdrop.js +974 -0
  480. data/tests/public/javascripts/effects.js +1123 -0
  481. data/tests/public/javascripts/prototype.js +6001 -0
  482. data/tests/public/javascripts/rails.js +175 -0
  483. data/tests/public/robots.txt +5 -0
  484. data/tests/public/stylesheets/.gitkeep +0 -0
  485. data/tests/public/stylesheets/scaffold.css +56 -0
  486. data/tests/script/rails +6 -0
  487. data/tests/spec/controllers/integration/albums_controller_spec.rb +60 -0
  488. data/tests/spec/controllers/integration/cacheable_songs_controller_spec.rb +43 -0
  489. data/tests/spec/controllers/integration/controller_base_spec.rb +35 -0
  490. data/tests/spec/controllers/integration/created_responder_spec.rb +35 -0
  491. data/tests/spec/controllers/integration/params_parser_spec.rb +150 -0
  492. data/tests/spec/controllers/integration/projects_controller_spec.rb +30 -0
  493. data/tests/spec/requests/_integration_client.txt +1 -0
  494. data/tests/spec/requests/base_spec.rb2 +142 -0
  495. data/tests/spec/requests/fake_server.rb +107 -0
  496. data/tests/spec/requests/http/adapter_spec.rb +105 -0
  497. data/tests/spec/requests/http/content_type_spec.rb +88 -0
  498. data/tests/spec/requests/http/errors_spec.rb +130 -0
  499. data/tests/spec/requests/http/history_spec.rb +56 -0
  500. data/tests/spec/requests/http/marshal_spec.rb2 +113 -0
  501. data/tests/spec/requests/http/parameters_spec.rb +12 -0
  502. data/tests/spec/spec.opts +5 -0
  503. data/tests/spec/spec_helper.rb +61 -0
  504. data/tests/spec/support/atoms/full.rb.txt +63 -0
  505. data/tests/spec/support/atoms/related_songs +30 -0
  506. data/tests/spec/support/atoms/song_1 +11 -0
  507. data/tests/spec/support/atoms/song_2 +11 -0
  508. data/tests/spec/support/atoms/song_3 +11 -0
  509. data/tests/spec/support/atoms/song_4 +11 -0
  510. data/tests/spec/support/atoms/songs +51 -0
  511. data/tests/spec/support/atoms/songs_top_ten +27 -0
  512. data/tests/spec/support/data_helper.rb +13 -0
  513. data/tests/test/performance/browsing_test.rb +9 -0
  514. data/tests/test/test_helper.rb +13 -0
  515. data/tests/vendor/plugins/.gitkeep +0 -0
  516. metadata +657 -0
@@ -0,0 +1,14 @@
1
+ class SystemsController < ApplicationController
2
+ def index
3
+ end
4
+ def benefits
5
+ end
6
+ def support
7
+ end
8
+ def features
9
+ end
10
+ def quit_pretending
11
+ end
12
+ def hypermedia
13
+ end
14
+ end
@@ -0,0 +1,10 @@
1
+ # Methods added to this helper will be available to all templates in the application.
2
+ module ApplicationHelper
3
+ def html(x)
4
+ x.gsub(/</,'&lt;').gsub(/>/,'&gt;')
5
+ end
6
+
7
+ def rails_path
8
+ url_for "/caelumobjects-restful-rails.pdf"
9
+ end
10
+ end
@@ -0,0 +1,2 @@
1
+ module DocumentationHelper
2
+ end
@@ -0,0 +1,99 @@
1
+ <div id="textoCapitulo">
2
+ <h2>Features</h2>
3
+
4
+ <p>Most of the client features can be composed during the request building phase. This means that when invoking Restfulie.at() one can specify which features are supposed to be used and which can be left out, allowing an infinite number of combinations without the need to write extra classes.</p>
5
+
6
+ <h2>Request Features<h2>
7
+
8
+ <h3>Retrying requests</h3>
9
+
10
+ <p>Another characteristic of REST over HTTP is that some requests can be easily retried by adding a new feature to the DSL. The RetryWhenUnavailable feature demonstrates how to use it
11
+ when the server returns 503. The following code will retry the operation once by using this feature:</p>
12
+
13
+ <pre>
14
+ Response response = Restfulie.at("uri").retryWhenUnavailable().get();
15
+ </pre>
16
+
17
+ <h3>Custom request features</h3>
18
+
19
+ <p>It is easy to create your own feature, even with configuration parameters, simply create
20
+ a class and implemente the interface RequestFeature</p>
21
+
22
+ <pre>
23
+ public class MyFatureRequest implement RequestFeature {
24
+
25
+ public Response process(RequestChain chain, Request request, String verb,
26
+ URI uri, Object payload) {
27
+
28
+ //do something before the request is dispatched
29
+ Response response = chain.next(request, verb, uri, payload);
30
+ //do someething after the request have been dispatched
31
+ return response;
32
+ }
33
+
34
+ }
35
+ </pre>
36
+
37
+ <p>After implementing it you just have to pass it so restfulie add it at the stack of features.</p>
38
+ <pre>
39
+ //the method features can receive more than one feature
40
+ Restfulie.at("resource_uri").withFeature(MyFeatureRequest.class).get();
41
+ </pre>
42
+
43
+ <h2>Response Features</h2>
44
+
45
+ <h3>Throw error feature</h3>
46
+
47
+ <p>A common asked feature is to throw na error in case some specific response codes are returned. There is a sample feature that can be tweaked as required, that raises an exception when 300+ codes are returned. It's name is "ThrowError" and therefore to load it one only has to invoke it in the DSL:
48
+
49
+ <pre>
50
+ Response response = Restfulie.at(uri).throwError().get();
51
+ </pre>
52
+
53
+ <h3>History</h3>
54
+
55
+ <p>The history feature gives access to the history of executed requests, so one can re-execute
56
+ it or customize it prior to sending the request again. To add it, simply load it into your DSL:</p>
57
+
58
+ <pre>
59
+ Response response = Restfulie.at(uri).history().get();
60
+
61
+ # sends the request again
62
+ response.getRequestHistory().get(0);
63
+ </pre>
64
+
65
+ <h3>ConnegWhenUnaccepted</h3>
66
+
67
+ <p>The ConnegWhenUnaccepted feature retry an request when the server response with the 406("unaccepted media type") code, the new request will be sent with another media type supported by the server(throug Accept) if the client is
68
+ able to generate it.</p>
69
+
70
+ <pre>
71
+ Product product = Restfulie.at("http://localhost:3000/product/2").connegWhenUnaccepted().get();
72
+ </pre>
73
+
74
+ <h3>Custom request features</h3>
75
+
76
+ <p>It is easy to create your own feature, even with configuration parameters, simply create
77
+ a class and implement the interface ResponseFeature</p>
78
+
79
+ <pre>
80
+ public class MyFature implement ResponseFeature {
81
+
82
+ public Response process(ResponseChain responseChain, Response response) {
83
+ Response reponse = responseChain.next(response);
84
+ return response;
85
+ }
86
+
87
+ }
88
+ </pre>
89
+
90
+ <p>And then pass it so restfulie add it at the stack of features.</p>
91
+ <pre>
92
+ //the method features can receive more than one feature
93
+ Restfulie.at("resource_uri").withFeature(MyFeatureResponse.class,OtherFeatureResponse.class).get();
94
+ </pre>
95
+
96
+
97
+ <p>All Restfulie client features are implemented through a set of feature classes
98
+ such as this one. Feel free to contribute with extra features, configuration sets or
99
+ documentation to them or ask around in the mailing lists for other people contributions.</p>
@@ -0,0 +1,97 @@
1
+ <div id="textoCapitulo">
2
+ <h2>Hypermedia clients</h2>
3
+
4
+ <p>Hypermedia support information is scattered aroud the entire documentation as this is a hypermedia based library..</p>
5
+
6
+ <h2>The response object</h2>
7
+
8
+ The response object to a restfulie http request allows access to four different methods, the
9
+ response <b>code</b>, its <b>body</b>, <b>headers</b> and an extra method called <b>resource</b>
10
+ that will try to unmarshall the response body according to its content type.
11
+
12
+ Restfulie uses <a href="http://github.com/caelum/medie">medie</a> to do the unmarshalling,
13
+ giving back a hypermedia aware object. The following example shows a typical response to
14
+ a xml request:
15
+
16
+ <pre>
17
+ Response response = Restfulie.at(uri).accepts("application/xml").get();
18
+ System.out.println(response.getBody());
19
+ <%=html("
20
+ <order>
21
+ <link rel='payment' href='http://store.caelum.com.br/orders/2345/payment' />
22
+ <items>
23
+ <item>
24
+ <id>Rest from scratch book</id>
25
+ </item>
26
+ </items>
27
+ <price>1235.4</price>
28
+ </order>
29
+ ")%>
30
+ System.out.println(response.getCode()); // 200
31
+ System.out.println(response.headers('Content-Type')); //'application/xml'
32
+ Order oder = response.getResourse();
33
+ System.out.println(order.getItems(0).getId()); // "Rest from scratch book"
34
+ </pre>
35
+
36
+ <h2>Supported media types</h2>
37
+
38
+ Restfulie client comes with built in support to xml, json and opensearch and can be easily enhanced by providing your own driver through Medie. Check out medie's documentation on how to
39
+ support your own media type or contribute with Restfulie by posting your media
40
+ type handler at the mailing list.
41
+
42
+ <h2>Link support</h2>
43
+
44
+ For representations that contain link elements in its body, such as this one in xml:
45
+
46
+ <pre>
47
+ <%=html("
48
+ <order>
49
+ <link rel='payment' href='http://store.caelum.com.br/orders/2345/payment' />
50
+ <items>
51
+ <item>
52
+ <id>Rest from scratch book</id>
53
+ </item>
54
+ </items>
55
+ <price>1235.4</price>
56
+ </order>
57
+ ")%>
58
+ </pre>
59
+
60
+ This link can be accessed by unmarshalling the resource and then accessing the link itself:
61
+
62
+ <pre>
63
+ Response response = Restfulie.at(uri).get();
64
+
65
+ //follow the payment link within the order
66
+ Order order = response.getResource();
67
+ // the resource method is staticaly imported from ...
68
+ resource(order).link("payment").follow().get();
69
+
70
+ //will print the payment body
71
+ System.out.println(order.response.getBody());
72
+ </pre>
73
+
74
+ Once you have invoked the <b>follow</b> method, the object returned is the same as a
75
+ <b>Restfulie.at()</b> invocation, a request dsl, which allows you to configure the
76
+ request as you wish, and execute it by invoking the proper http verb (i.e. get, post or put).
77
+
78
+ You can see an example of a full client navigating through links in the examples section.
79
+
80
+ <h2>Link header support</h2>
81
+
82
+ If your service provides a link header such as:
83
+
84
+ <pre>
85
+ Link: <http://amundsen.com/examples/mazes/2d/ten-by-ten/0:north>; rel="start"; type="application/xml"
86
+ </pre>
87
+
88
+ This header can be accessed by using the headers.link and links method:
89
+
90
+ <pre>
91
+ Response response = Restfulie.at(uri).get();
92
+ puts response.getHeaders().link("start").getHref();
93
+
94
+ # following the link
95
+ Resource resource = response.getResource();
96
+ Response anotherResponse = resource.headers.link("start").follow().get();
97
+ </pre>
File without changes
@@ -0,0 +1,11 @@
1
+ <div id="menuWrap">
2
+ <ul id="menuElements">
3
+ <li><a href="<%=url_for :controller => :systems, :action =>:hypermedia%>"><span>why hypermedia?</span></a></li>
4
+ <li><a href="<%=url_for :controller => :systems, :action =>:quit_pretending%>"><span>quit pretending</span></a></li>
5
+ <li><a href="<%=url_for :controller => :systems, :action =>:features %>"><span>features</span></a></li>
6
+ <li><a href="<%=url_for :controller => :systems, :action =>:documentation %>"><span>documentation</span></a></li>
7
+ <li><a href="<%= url_for :support%>"><span>support</span></a></li>
8
+ <li><a href="<%=rails_path%>" onclick="javascript:pageTracker._trackPageview('<%= rails_path%>')"><span>pdf</span></a></li>
9
+ <li><a href="<%= url_for :benefits%>"><span>testimonials</span></a></li>
10
+ </ul>
11
+ </div>
@@ -0,0 +1,24 @@
1
+ <div class="navigation">
2
+ <ul id="nav">
3
+ <li>
4
+ <h4><a href="http://github.com/caelum/restfulie/wiki">WIKI</a></h4>
5
+ <p><a href="http://github.com/caelum/restfulie/wiki">Detailed Documentation</a></p>
6
+ </li>
7
+ <li>
8
+ <h4><a href="https://github.com/caelum/restfulie/wiki/Videos">VIDEO</a></h4>
9
+ <p><a href="https://github.com/caelum/restfulie/wiki/Videos">Tutorials</a></p>
10
+ </li>
11
+ <li>
12
+ <h4><a href="https://github.com/caelum/restfulie/wiki/Mailing-lists">SUPPORT</a></h4>
13
+ <p><a href="https://github.com/caelum/restfulie/wiki/Mailing-lists">Mailing list</a></p>
14
+ </li>
15
+ <li>
16
+ <h4><a href="https://github.com/caelum/restfulie/wiki/issues">ISSUES</a></h4>
17
+ <p><a href="https://github.com/caelum/restfulie/wiki/issues">Issue tracker</a></p>
18
+ </li>
19
+ <li>
20
+ <h4><a href="http://webchat.freenode.net/?channels=restfulie">IRC</a></h4>
21
+ <p><a href="http://webchat.freenode.net/?channels=restfulie">The human touch</a></p>
22
+ </li>
23
+ </ul>
24
+ </div>
@@ -0,0 +1,50 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5
+ <title>restfulie - rest from scratch</title>
6
+ <%= stylesheet_link_tag "screen", "menu", "uppermenu" %>
7
+ <!--[if lt IE 7]>
8
+ <script src="http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE7.js" type="text/javascript"></script>
9
+ <![endif]-->
10
+ </head>
11
+
12
+ <body>
13
+ <div id="headerWrap">
14
+ <div id="headerContent">
15
+
16
+ <%= render :partial => 'layouts/uppermenu' %>
17
+
18
+ <h1 id="logoRestfulie"><span>restfulie</span></h1><!-- restfulielogo-->
19
+ <p class="moto">Restful made easy.</p>
20
+
21
+ <a id="caelumObjects" href="http://www.caelumobjects.com/" title="Caelum Objects Site"><span>Caelum Objects</span></a>
22
+
23
+ </div><!-- header content -->
24
+ </div><!-- header wrap-->
25
+
26
+
27
+
28
+ <%= yield %>
29
+
30
+ <div id="footerWrap">
31
+ <div id="footerContent">
32
+ <div class="footbar">
33
+ <a href="http://caelumobjects.com" style="border:none"><%= image_tag"logoCaelumGray-trans.png", :alt => "caelum logo", :class => "logoFooter" %></a>
34
+ <p><a href="#.html">license</a> - Restfulie ©2009-2011 Caelum Objects</p>
35
+ </div><!-- footnote-->
36
+ </div><!-- footer content -->
37
+ </div><!-- footer wrap-->
38
+
39
+ <script type="text/javascript">
40
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
41
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
42
+ </script>
43
+ <script type="text/javascript">
44
+ try {
45
+ var pageTracker = _gat._getTracker("UA-11770776-2");
46
+ pageTracker._trackPageview();
47
+ } catch(err) {}</script>
48
+
49
+ </body>
50
+ </html>
@@ -0,0 +1,72 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5
+ <title>restfulie - rest from scratch</title>
6
+ <%= stylesheet_link_tag "screen", "menu", :cache => true %>
7
+ <!--[if lt IE 7]>
8
+ <script src="http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE7.js" type="text/javascript"></script>
9
+ <![endif]-->
10
+ </head>
11
+
12
+ <body>
13
+ <div id="headerWrap">
14
+ <div id="headerContent">
15
+ <h1 id="logoRestfulie"><span>restfulie</span></h1><!-- vraptorlogo-->
16
+
17
+ <a id="caelumObjects" href="http://www.caelumobjects.com/" title="Caelum Objects Site"><span>Caelum Objects</span></a>
18
+ </div><!-- header content -->
19
+ </div><!-- header wrap-->
20
+
21
+ <%= render :partial => 'layouts/menu' %>
22
+
23
+ <div id="contentWrap">
24
+ <div id="contentDocumentacao">
25
+ <h2><span>documentation</span></h2>
26
+ <h3>configuration and utilization</h3>
27
+
28
+ <div id="subMenuDoc">
29
+ <%= image_tag"subMenuTop-trans.png", :id => "positionTop" %>
30
+ <ol type="1">
31
+ <li><%= link_to "1. One minute guide", :action => :index%></li>
32
+ <li><%= link_to "2. Basic Rest", :action => :basic %></li>
33
+ <li><%= link_to "3. Examples", :action => :examples%></li>
34
+ <li><%= link_to "4. Content negotiation", :action => :conneg %></li>
35
+ <li><%= link_to "5. Clients and hyperlinks", :action => :hypermedia%></li>
36
+ <li><%= link_to "6. Composable client features", :action => :features %></li>
37
+ <li><%= link_to "7. Server", :action => :server %></li>
38
+ <li><%= link_to "8. Help!", :controller => :systems, :action => :support %></li>
39
+ </ol>
40
+ <%= image_tag"subMenuBottom-trans.png", :id => "positionBottom" %>
41
+ </div><!-- submenu-->
42
+
43
+ <%= yield %>
44
+
45
+ </div><!-- content cnt -->
46
+ </div><!-- content wrap-->
47
+
48
+
49
+
50
+
51
+
52
+ <div id="footerWrap">
53
+ <div id="footerContent">
54
+ <div class="footbar">
55
+ <a href="http://caelumobjects.com" style="border:none"><%= image_tag"logoCaelumGray-trans.png", :alt => "caelum logo", :class => "logoFooter" %></a>
56
+ <p><a href="#.html">license</a> - Restfulie ©2009-2011 Caelum Objects</p>
57
+ </div><!-- footnote-->
58
+ </div><!-- footer content -->
59
+ </div><!-- footer wrap-->
60
+
61
+ <script type="text/javascript">
62
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
63
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
64
+ </script>
65
+ <script type="text/javascript">
66
+ try {
67
+ var pageTracker = _gat._getTracker("UA-11770776-2");
68
+ pageTracker._trackPageview();
69
+ } catch(err) {}</script>
70
+
71
+ </body>
72
+ </html>
@@ -0,0 +1,62 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5
+ <title>restfulie - rest from scratch</title>
6
+ <%= stylesheet_link_tag "screen", "menu", :cache => true %>
7
+ <!--[if lt IE 7]>
8
+ <script src="http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE7.js" type="text/javascript"></script>
9
+ <![endif]-->
10
+ </head>
11
+
12
+ <body>
13
+ <div id="headerWrap">
14
+ <div id="headerContent">
15
+ <h1 id="logoRestfulie"><span>restfulie</span></h1><!-- vraptorlogo-->
16
+
17
+ <a id="caelumObjects" href="http://www.caelumobjects.com/" title="Caelum Objects Site"><span>Caelum Objects</span></a>
18
+ </div><!-- header content -->
19
+ </div><!-- header wrap-->
20
+
21
+ <%= render :partial => 'layouts/menu' %>
22
+
23
+ <div id="contentWrap">
24
+ <div id="contentDocumentacao">
25
+ <h2><span>documentation</span></h2>
26
+ <h3>configuration and utilization</h3>
27
+
28
+ <div id="subMenuDoc">
29
+ <%= image_tag"subMenuTop-trans.png", :id => "positionTop" %>
30
+ <ol type="1">
31
+ <li><%= link_to "1. One minute guide", :action => :index%></li>
32
+ <li><%= link_to "2. Basic Rest", :action => :basic %></li>
33
+ </ol>
34
+ <%= image_tag"subMenuBottom-trans.png", :id => "positionBottom" %>
35
+ </div><!-- submenu-->
36
+
37
+ <%= yield %>
38
+
39
+ </div>
40
+ </div>
41
+
42
+ <div id="footerWrap">
43
+ <div id="footerContent">
44
+ <div class="footbar">
45
+ <a href="http://caelumobjects.com" style="border:none"><%= image_tag"logoCaelumGray-trans.png", :alt => "caelum logo", :class => "logoFooter" %></a>
46
+ <p><a href="#.html">license</a> - Restfulie ©2009-2011 Caelum Objects</p>
47
+ </div><!-- footnote-->
48
+ </div><!-- footer content -->
49
+ </div><!-- footer wrap-->
50
+
51
+ <script type="text/javascript">
52
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
53
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
54
+ </script>
55
+ <script type="text/javascript">
56
+ try {
57
+ var pageTracker = _gat._getTracker("UA-11770776-2");
58
+ pageTracker._trackPageview();
59
+ } catch(err) {}</script>
60
+
61
+ </body>
62
+ </html>
@@ -0,0 +1,81 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5
+ <title>restfulie</title>
6
+ <%= stylesheet_link_tag :all, :cache => true %>
7
+ <!--[if lt IE 7]>
8
+ <script src="http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE7.js" type="text/javascript"></script>
9
+ <![endif]-->
10
+ </head>
11
+
12
+ <body>
13
+ <div id="headerWrap">
14
+ <div id="headerContent">
15
+ <h1 id="logoRestfulie"><span>restfulie</span></h1><!-- vraptorlogo-->
16
+
17
+ <a id="caelumObjects" href="http://www.caelumobjects.com/" title="Caelum Objects Site"><span>Caelum Objects</span></a>
18
+ </div><!-- header content -->
19
+ </div><!-- header wrap-->
20
+
21
+ <%= render :partial => 'layouts/menu' %>
22
+
23
+
24
+ <div id="contentWrap">
25
+ <div id="contentDocumentacao">
26
+ <h2><span>documentation</span></h2>
27
+ <h3>configuration and utilization</h3>
28
+
29
+ <div id="subMenuDoc">
30
+ <%= image_tag"subMenuTop-trans.png", :id => "positionTop" %>
31
+ <ol type="1">
32
+ <li><%= link_to "1. Installing", :action => "installing"%></li>
33
+ <li><%= link_to "2. Short samples", :action => "short_samples"%></li>
34
+ <li><%= link_to "3. Client", :action => "client"%></li>
35
+ <li><%= link_to "4. What's new", :action => "what_is_new"%></li>
36
+ <li><%= link_to "5. License", :action => "license"%></li>
37
+ </ol>
38
+ <%= image_tag"subMenuBottom-trans.png", :id => "positionBottom" %>
39
+ </div><!-- submenu-->
40
+
41
+ <%= yield %>
42
+
43
+ </div><!-- content cnt -->
44
+ </div><!-- content wrap-->
45
+
46
+
47
+ <div id="footerWrap">
48
+ <div id="footerContent">
49
+ <div class="footbar">
50
+ <a href="http://caelumobjects.com" style="border:none"><%= image_tag"logoCaelumGray-trans.png", :alt => "caelum logo", :class => "logoFooter" %></a>
51
+ <ul>
52
+ <li><a href="/">home</a></li>
53
+ <li>|</li>
54
+ <li><a href="<%=url_for :benefits%>">testimonials</a></li>
55
+ <li>|</li>
56
+ <li><a href="<%=url_for :rest%>">rest/hateoas</a></li>
57
+ <li>|</li>
58
+ <li><a href="<%=url_for :rails%>">rails</a></li>
59
+ <li>|</li>
60
+ <li><a href="<%=url_for :java%>">java</a></li>
61
+ <li>|</li>
62
+ <li><a href="<%=url_for :support%>">support</a></li>
63
+ </ul>
64
+ <p><a href="#.html">license</a> - Restfulie ©2009 Caelum Objects</p>
65
+ </div><!-- footnote-->
66
+ </div><!-- footer content -->
67
+ <a id="signature" href="mailto:lokidg@gmail.com">loki|design</a>
68
+ </div><!-- footer wrap-->
69
+
70
+ <script type="text/javascript">
71
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
72
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
73
+ </script>
74
+ <script type="text/javascript">
75
+ try {
76
+ var pageTracker = _gat._getTracker("UA-11770776-2");
77
+ pageTracker._trackPageview();
78
+ } catch(err) {}</script>
79
+
80
+ </body>
81
+ </html>
@@ -0,0 +1,87 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5
+ <title>restfulie</title>
6
+ <%= stylesheet_link_tag :all, :cache => true %>
7
+ <!--[if lt IE 7]>
8
+ <script src="http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE7.js" type="text/javascript"></script>
9
+ <![endif]-->
10
+ </head>
11
+
12
+ <body>
13
+ <div id="headerWrap">
14
+ <div id="headerContent">
15
+ <h1 id="logoRestfulie"><span>restfulie</span></h1><!-- vraptorlogo-->
16
+
17
+ <a id="caelumObjects" href="http://www.caelumobjects.com/" title="Caelum Objects Site"><span>Caelum Objects</span></a>
18
+ </div><!-- header content -->
19
+ </div><!-- header wrap-->
20
+
21
+ <%= render :partial => 'layouts/menu' %>
22
+
23
+
24
+ <div id="contentWrap">
25
+ <div id="contentDocumentacao">
26
+ <h2><span>documentation</span></h2>
27
+ <h3>configuration and utilization</h3>
28
+
29
+ <div id="subMenuDoc">
30
+ <%= image_tag"subMenuTop-trans.png", :id => "positionTop" %>
31
+ <ol type="1">
32
+ <li><%= link_to "1. Installing", :action => "installing"%></li>
33
+ <li><%= link_to "2. Short samples", :action => "short_samples"%></li>
34
+ <li><%= link_to "3. Server", :action => "server"%></li>
35
+ <li><%= link_to "3.1. Rendering resources", :action => "rendering_resources"%></li>
36
+ <li><%= link_to "3.2. Server state machine", :action => "server_state_machine"%></li>
37
+ <li><%= link_to "4. Client", :action => "client"%></li>
38
+ <li><%= link_to "5. Help and examples", :action => "help_and_examples"%></li>
39
+ <li><%= link_to "5.1. Live examples", :action => "live_examples"%></li>
40
+ <li><%= link_to "6. License", :action => "license"%></li>
41
+ <li><%= link_to "7. Roadmap", :action => "roadmap"%></li>
42
+ <li><%= link_to "8. What's new", :action => "what_is_new"%></li>
43
+ </ol>
44
+ <%= image_tag"subMenuBottom-trans.png", :id => "positionBottom" %>
45
+ </div><!-- submenu-->
46
+
47
+ <%= yield %>
48
+
49
+ </div><!-- content cnt -->
50
+ </div><!-- content wrap-->
51
+
52
+
53
+ <div id="footerWrap">
54
+ <div id="footerContent">
55
+ <div class="footbar">
56
+ <a href="http://caelumobjects.com" style="border:none"><%= image_tag"logoCaelumGray-trans.png", :alt => "caelum logo", :class => "logoFooter" %></a>
57
+ <ul>
58
+ <li><a href="/">home</a></li>
59
+ <li>|</li>
60
+ <li><a href="<%=url_for :benefits%>">testimonials</a></li>
61
+ <li>|</li>
62
+ <li><a href="<%=url_for :rest%>">rest/hateoas</a></li>
63
+ <li>|</li>
64
+ <li><a href="<%=url_for :rails%>">rails</a></li>
65
+ <li>|</li>
66
+ <li><a href="<%=url_for :java%>">java</a></li>
67
+ <li>|</li>
68
+ <li><a href="<%=url_for :support%>">support</a></li>
69
+ </ul>
70
+ <p><a href="#.html">license</a> - Restfulie ©2009 Caelum Objects</p>
71
+ </div><!-- footnote-->
72
+ </div><!-- footer content -->
73
+ <a id="signature" href="mailto:lokidg@gmail.com">loki|design</a>
74
+ </div><!-- footer wrap-->
75
+
76
+ <script type="text/javascript">
77
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
78
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
79
+ </script>
80
+ <script type="text/javascript">
81
+ try {
82
+ var pageTracker = _gat._getTracker("UA-11770776-2");
83
+ pageTracker._trackPageview();
84
+ } catch(err) {}</script>
85
+
86
+ </body>
87
+ </html>
@@ -0,0 +1,29 @@
1
+ <div id="textoCapitulo">
2
+ <h2>Examples</h2>
3
+
4
+ There are plenty of sample applications using Restfulie Ruby scattered around the web, and here you find a small listing of those systems:<br/>
5
+ <ol>
6
+ <li><a href="https://github.com/caelum/restfulie-restbuy">Restbuy</a> - a service application that allows consumers to buy products and share payments. You can see all the power of hypermedia in place. The client code is contained in the spec folder. Ruby examples.</li>
7
+ <li><a href="https://github.com/caelum/restfulie-provisioning">Restfulie provisioning</a> - a provisioning example. Ruby code.</li>
8
+ <li><a href="http://restfulie.caelumobjects.com/caelumobjects-restful-rails.pdf">A guide on how to create a Restfulie project</a></li>
9
+ <li><a href="https://github.com/caelum/vraptor/tree/master/vraptor-mydvds">Mydvds</a> - controls a list of dvds, owners, security and so on. Java code</li>
10
+ </ol>
11
+
12
+ <h2>Java blank projects</h2>
13
+
14
+ VRaptor, restfulie server side in Java (the oldest and more mature of all versions), <a href="https://github.com/caelum/vraptor/tree/master/">contains a few blank projects for default usage, scala usage or google app engine support</a>. One can also use <a href="http://vraptor.org/documentation">its vraptor-scaffold feature</a>.
15
+
16
+ <h2>Source code - all versions</h2>
17
+
18
+ All restfulie versions can be found in several different git repositories:
19
+
20
+ <ul>
21
+ <li><a href="http://github.com/caelum/restfulie-all">All projects in one github project</li>
22
+ <li><a href="http://github.com/caelum/restfulie">Ruby client and server</li>
23
+ <li><a href="http://github.com/caelum/restfulie-java">Java client</li>
24
+ <li><a href="http://github.com/caelum/vraptor">Java server (vraptor)</li>
25
+ <li><a href="http://github.com/caelum/restfulie-javascript">Javascript client</li>
26
+ <li><a href="http://github.com/caelum/restfulie-py">Python client</li>
27
+ <li><a href="https://github.com/mauricioaniche/restfulie.net">C# server</li>
28
+ </ul>
29
+ </div>