vulcan 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (627) hide show
  1. data/lib/vulcan/version.rb +1 -1
  2. data/server/Procfile +1 -0
  3. data/server/bin/make +39 -0
  4. data/server/lib/on.js +13 -0
  5. data/server/lib/spawner.js +101 -0
  6. data/server/node_modules/connect-form/History.md +28 -0
  7. data/server/node_modules/connect-form/LICENSE +22 -0
  8. data/server/node_modules/connect-form/Makefile +11 -0
  9. data/server/node_modules/connect-form/Readme.md +35 -0
  10. data/server/node_modules/connect-form/index.html +213 -0
  11. data/server/node_modules/connect-form/index.js +100 -0
  12. data/server/node_modules/connect-form/lib/connect-form.js +100 -0
  13. data/server/node_modules/connect-form/node_modules/formidable/Makefile +14 -0
  14. data/server/node_modules/connect-form/node_modules/formidable/Readme.md +264 -0
  15. data/server/node_modules/connect-form/node_modules/formidable/TODO +3 -0
  16. data/server/node_modules/connect-form/node_modules/formidable/benchmark/bench-multipart-parser.js +70 -0
  17. data/server/node_modules/connect-form/node_modules/formidable/example/post.js +43 -0
  18. data/server/node_modules/connect-form/node_modules/formidable/example/upload.js +48 -0
  19. data/server/node_modules/connect-form/node_modules/formidable/index.js +1 -0
  20. data/server/node_modules/connect-form/node_modules/formidable/lib/file.js +61 -0
  21. data/server/node_modules/connect-form/node_modules/formidable/lib/incoming_form.js +362 -0
  22. data/server/node_modules/connect-form/node_modules/formidable/lib/index.js +3 -0
  23. data/server/node_modules/connect-form/node_modules/formidable/lib/multipart_parser.js +301 -0
  24. data/server/node_modules/connect-form/node_modules/formidable/lib/querystring_parser.js +25 -0
  25. data/server/node_modules/connect-form/node_modules/formidable/lib/util.js +6 -0
  26. data/server/node_modules/connect-form/node_modules/formidable/package.json +19 -0
  27. data/server/node_modules/connect-form/node_modules/formidable/test/common.js +20 -0
  28. data/server/node_modules/connect-form/node_modules/formidable/test/fast/test-incoming-form.js +45 -0
  29. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/file/: // ? % * | /" < > . /342/230/203 ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" +1 -0
  30. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md +3 -0
  31. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +36 -0
  32. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http +24 -0
  33. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http +23 -0
  34. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +33 -0
  35. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http +22 -0
  36. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http +22 -0
  37. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http +22 -0
  38. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +21 -0
  39. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/multi_video.upload +0 -0
  40. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/multipart.js +72 -0
  41. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/common.js +24 -0
  42. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/integration/test-multipart-parser.js +80 -0
  43. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-file.js +104 -0
  44. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-incoming-form.js +715 -0
  45. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +50 -0
  46. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-querystring-parser.js +45 -0
  47. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/system/test-multi-video-upload.js +72 -0
  48. data/server/node_modules/connect-form/node_modules/formidable/test/run.js +7 -0
  49. data/server/node_modules/connect-form/node_modules/formidable/test/slow/test-fixtures.js +84 -0
  50. data/server/node_modules/connect-form/node_modules/formidable/tool/record.js +47 -0
  51. data/server/node_modules/connect-form/package.json +9 -0
  52. data/server/node_modules/connect-form/support/connect/History.md +120 -0
  53. data/server/node_modules/connect-form/support/connect/Makefile +85 -0
  54. data/server/node_modules/connect-form/support/connect/README.md +121 -0
  55. data/server/node_modules/connect-form/support/connect/benchmarks/graph +79 -0
  56. data/server/node_modules/connect-form/support/connect/benchmarks/hello-world/connect.js +19 -0
  57. data/server/node_modules/connect-form/support/connect/benchmarks/hello-world/node.js +16 -0
  58. data/server/node_modules/connect-form/support/connect/benchmarks/hello-world/rack.thin.ru +9 -0
  59. data/server/node_modules/connect-form/support/connect/benchmarks/hello-world/sinatra.thin.ru +10 -0
  60. data/server/node_modules/connect-form/support/connect/benchmarks/public/jquery.js +19 -0
  61. data/server/node_modules/connect-form/support/connect/benchmarks/run +60 -0
  62. data/server/node_modules/connect-form/support/connect/benchmarks/static/connect.js +10 -0
  63. data/server/node_modules/connect-form/support/connect/benchmarks/static/node.js +17 -0
  64. data/server/node_modules/connect-form/support/connect/benchmarks/static/sinatra.thin.ru +10 -0
  65. data/server/node_modules/connect-form/support/connect/docs/api.html +1973 -0
  66. data/server/node_modules/connect-form/support/connect/docs/bodyDecoder.1 +27 -0
  67. data/server/node_modules/connect-form/support/connect/docs/bodyDecoder.html +164 -0
  68. data/server/node_modules/connect-form/support/connect/docs/bodyDecoder.md +11 -0
  69. data/server/node_modules/connect-form/support/connect/docs/compiler.1 +66 -0
  70. data/server/node_modules/connect-form/support/connect/docs/compiler.html +193 -0
  71. data/server/node_modules/connect-form/support/connect/docs/compiler.md +32 -0
  72. data/server/node_modules/connect-form/support/connect/docs/conditionalGet.1 +16 -0
  73. data/server/node_modules/connect-form/support/connect/docs/conditionalGet.html +158 -0
  74. data/server/node_modules/connect-form/support/connect/docs/conditionalGet.md +7 -0
  75. data/server/node_modules/connect-form/support/connect/docs/cookieDecoder.1 +27 -0
  76. data/server/node_modules/connect-form/support/connect/docs/cookieDecoder.html +164 -0
  77. data/server/node_modules/connect-form/support/connect/docs/cookieDecoder.md +11 -0
  78. data/server/node_modules/connect-form/support/connect/docs/errorHandler.1 +58 -0
  79. data/server/node_modules/connect-form/support/connect/docs/errorHandler.html +181 -0
  80. data/server/node_modules/connect-form/support/connect/docs/errorHandler.md +28 -0
  81. data/server/node_modules/connect-form/support/connect/docs/format.1 +7 -0
  82. data/server/node_modules/connect-form/support/connect/docs/format.html +152 -0
  83. data/server/node_modules/connect-form/support/connect/docs/format.md +3 -0
  84. data/server/node_modules/connect-form/support/connect/docs/index.1 +260 -0
  85. data/server/node_modules/connect-form/support/connect/docs/index.html +332 -0
  86. data/server/node_modules/connect-form/support/connect/docs/index.md +171 -0
  87. data/server/node_modules/connect-form/support/connect/docs/jsonrpc.1 +62 -0
  88. data/server/node_modules/connect-form/support/connect/docs/jsonrpc.html +192 -0
  89. data/server/node_modules/connect-form/support/connect/docs/jsonrpc.md +39 -0
  90. data/server/node_modules/connect-form/support/connect/docs/layout/api.foot.html +3 -0
  91. data/server/node_modules/connect-form/support/connect/docs/layout/api.head.html +142 -0
  92. data/server/node_modules/connect-form/support/connect/docs/lint.1 +102 -0
  93. data/server/node_modules/connect-form/support/connect/docs/lint.html +232 -0
  94. data/server/node_modules/connect-form/support/connect/docs/lint.md +79 -0
  95. data/server/node_modules/connect-form/support/connect/docs/logger.1 +66 -0
  96. data/server/node_modules/connect-form/support/connect/docs/logger.html +184 -0
  97. data/server/node_modules/connect-form/support/connect/docs/logger.md +31 -0
  98. data/server/node_modules/connect-form/support/connect/docs/methodOverride.1 +31 -0
  99. data/server/node_modules/connect-form/support/connect/docs/methodOverride.html +171 -0
  100. data/server/node_modules/connect-form/support/connect/docs/methodOverride.md +17 -0
  101. data/server/node_modules/connect-form/support/connect/docs/responseTime.1 +7 -0
  102. data/server/node_modules/connect-form/support/connect/docs/responseTime.html +152 -0
  103. data/server/node_modules/connect-form/support/connect/docs/responseTime.md +3 -0
  104. data/server/node_modules/connect-form/support/connect/docs/router.1 +75 -0
  105. data/server/node_modules/connect-form/support/connect/docs/router.html +211 -0
  106. data/server/node_modules/connect-form/support/connect/docs/router.md +58 -0
  107. data/server/node_modules/connect-form/support/connect/docs/session.1 +115 -0
  108. data/server/node_modules/connect-form/support/connect/docs/session.html +214 -0
  109. data/server/node_modules/connect-form/support/connect/docs/session.md +55 -0
  110. data/server/node_modules/connect-form/support/connect/docs/staticProvider.1 +28 -0
  111. data/server/node_modules/connect-form/support/connect/docs/staticProvider.html +162 -0
  112. data/server/node_modules/connect-form/support/connect/docs/staticProvider.md +11 -0
  113. data/server/node_modules/connect-form/support/connect/examples/error/app.js +13 -0
  114. data/server/node_modules/connect-form/support/connect/examples/jsonrpc/app.js +38 -0
  115. data/server/node_modules/connect-form/support/connect/examples/less/app.js +21 -0
  116. data/server/node_modules/connect-form/support/connect/examples/less/public/index.html +8 -0
  117. data/server/node_modules/connect-form/support/connect/examples/less/public/style.less +8 -0
  118. data/server/node_modules/connect-form/support/connect/examples/lint/app.js +40 -0
  119. data/server/node_modules/connect-form/support/connect/examples/multitouch/app.js +61 -0
  120. data/server/node_modules/connect-form/support/connect/examples/multitouch/public/client.js +73 -0
  121. data/server/node_modules/connect-form/support/connect/examples/multitouch/public/favicon.ico +0 -0
  122. data/server/node_modules/connect-form/support/connect/examples/multitouch/public/index.html +16 -0
  123. data/server/node_modules/connect-form/support/connect/examples/multitouch/public/raphael.js +113 -0
  124. data/server/node_modules/connect-form/support/connect/examples/multitouch/public/style.css +23 -0
  125. data/server/node_modules/connect-form/support/connect/examples/router/app.js +63 -0
  126. data/server/node_modules/connect-form/support/connect/examples/sass/app.js +21 -0
  127. data/server/node_modules/connect-form/support/connect/examples/sass/public/index.html +8 -0
  128. data/server/node_modules/connect-form/support/connect/examples/sass/public/style.sass +4 -0
  129. data/server/node_modules/connect-form/support/connect/examples/session/app.js +60 -0
  130. data/server/node_modules/connect-form/support/connect/examples/stack-middleware/app.js +15 -0
  131. data/server/node_modules/connect-form/support/connect/examples/stack-middleware/hello.js +13 -0
  132. data/server/node_modules/connect-form/support/connect/examples/stack-middleware/world.js +13 -0
  133. data/server/node_modules/connect-form/support/connect/examples/static/app.js +10 -0
  134. data/server/node_modules/connect-form/support/connect/examples/static/public/style.css +3 -0
  135. data/server/node_modules/connect-form/support/connect/examples/url-rewrite/app.js +44 -0
  136. data/server/node_modules/connect-form/support/connect/examples/vhost/app.js +25 -0
  137. data/server/node_modules/connect-form/support/connect/install.sh +6 -0
  138. data/server/node_modules/connect-form/support/connect/lib/connect/index.js +309 -0
  139. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/bodyDecoder.js +69 -0
  140. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/cache.js +142 -0
  141. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/cacheManifest.js +71 -0
  142. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/compiler.js +150 -0
  143. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/conditionalGet.js +71 -0
  144. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/cookieDecoder.js +37 -0
  145. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/errorHandler.js +91 -0
  146. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/format.js +46 -0
  147. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/gzip-compress.js +79 -0
  148. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/gzip-proc.js +73 -0
  149. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/gzip.js +8 -0
  150. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/jsonrpc.js +235 -0
  151. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/lint.js +136 -0
  152. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/logger.js +107 -0
  153. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/methodOverride.js +54 -0
  154. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/pubsub.js +107 -0
  155. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/repl.js +43 -0
  156. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/responseTime.js +28 -0
  157. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/router.js +158 -0
  158. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/session.js +129 -0
  159. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/session/memory.js +141 -0
  160. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/session/session.js +71 -0
  161. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/session/store.js +59 -0
  162. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/staticProvider.js +144 -0
  163. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/vhost.js +43 -0
  164. data/server/node_modules/connect-form/support/connect/lib/connect/public/error.html +13 -0
  165. data/server/node_modules/connect-form/support/connect/lib/connect/public/style.css +98 -0
  166. data/server/node_modules/connect-form/support/connect/lib/connect/response.js +56 -0
  167. data/server/node_modules/connect-form/support/connect/lib/connect/utils.js +428 -0
  168. data/server/node_modules/connect-form/support/connect/package.json +21 -0
  169. data/server/node_modules/connect-form/support/connect/support/highlight.js +26 -0
  170. data/server/node_modules/connect-form/support/connect/test/bodyDecoder.test.js +69 -0
  171. data/server/node_modules/connect-form/support/connect/test/compiler.test.js +23 -0
  172. data/server/node_modules/connect-form/support/connect/test/connect.test.js +187 -0
  173. data/server/node_modules/connect-form/support/connect/test/cookieDecoder.test.js +31 -0
  174. data/server/node_modules/connect-form/support/connect/test/errorHandler.test.js +60 -0
  175. data/server/node_modules/connect-form/support/connect/test/filters/uppercase.js +14 -0
  176. data/server/node_modules/connect-form/support/connect/test/fixtures/foo.bar.baz.sass +2 -0
  177. data/server/node_modules/connect-form/support/connect/test/fixtures/index.html +1 -0
  178. data/server/node_modules/connect-form/support/connect/test/fixtures/some text.txt +1 -0
  179. data/server/node_modules/connect-form/support/connect/test/fixtures/style.less +2 -0
  180. data/server/node_modules/connect-form/support/connect/test/fixtures/style.sass +3 -0
  181. data/server/node_modules/connect-form/support/connect/test/fixtures/user.json +4 -0
  182. data/server/node_modules/connect-form/support/connect/test/format.test.js +37 -0
  183. data/server/node_modules/connect-form/support/connect/test/gzip.test.js +55 -0
  184. data/server/node_modules/connect-form/support/connect/test/helpers/http.js +87 -0
  185. data/server/node_modules/connect-form/support/connect/test/helpers/index.js +12 -0
  186. data/server/node_modules/connect-form/support/connect/test/jsonrpc.test.js +225 -0
  187. data/server/node_modules/connect-form/support/connect/test/logger.test.js +52 -0
  188. data/server/node_modules/connect-form/support/connect/test/methodOverride.test.js +69 -0
  189. data/server/node_modules/connect-form/support/connect/test/providers/echo.js +10 -0
  190. data/server/node_modules/connect-form/support/connect/test/responseTime.test.js +29 -0
  191. data/server/node_modules/connect-form/support/connect/test/router.test.js +154 -0
  192. data/server/node_modules/connect-form/support/connect/test/session.test.js +127 -0
  193. data/server/node_modules/connect-form/support/connect/test/static.test.js +66 -0
  194. data/server/node_modules/connect-form/support/connect/test/utils.test.js +65 -0
  195. data/server/node_modules/connect-form/support/connect/test/vhost.test.js +46 -0
  196. data/server/node_modules/connect-form/support/expresso/History.md +54 -0
  197. data/server/node_modules/connect-form/support/expresso/Makefile +30 -0
  198. data/server/node_modules/connect-form/support/expresso/Readme.md +208 -0
  199. data/server/node_modules/connect-form/support/expresso/bin/expresso +647 -0
  200. data/server/node_modules/connect-form/support/expresso/lib/bar.js +4 -0
  201. data/server/node_modules/connect-form/support/expresso/lib/foo.js +16 -0
  202. data/server/node_modules/connect-form/support/expresso/package.json +9 -0
  203. data/server/node_modules/connect-form/support/expresso/seed.yml +6 -0
  204. data/server/node_modules/connect-form/support/expresso/test/assert.test.js +64 -0
  205. data/server/node_modules/connect-form/support/expresso/test/bar.test.js +12 -0
  206. data/server/node_modules/connect-form/support/expresso/test/foo.test.js +13 -0
  207. data/server/node_modules/connect-form/support/expresso/test/http.test.js +61 -0
  208. data/server/node_modules/connect-form/test/form.test.js +148 -0
  209. data/server/node_modules/cradle/LICENSE +20 -0
  210. data/server/node_modules/cradle/Makefile +10 -0
  211. data/server/node_modules/cradle/README.md +377 -0
  212. data/server/node_modules/cradle/lib/cradle.js +688 -0
  213. data/server/node_modules/cradle/lib/cradle/cache.js +102 -0
  214. data/server/node_modules/cradle/lib/cradle/response.js +127 -0
  215. data/server/node_modules/cradle/node_modules/vargs/LICENSE +20 -0
  216. data/server/node_modules/cradle/node_modules/vargs/README.md +34 -0
  217. data/server/node_modules/cradle/node_modules/vargs/lib/vargs.js +70 -0
  218. data/server/node_modules/cradle/node_modules/vargs/package.json +12 -0
  219. data/server/node_modules/cradle/node_modules/vows/LICENSE +20 -0
  220. data/server/node_modules/cradle/node_modules/vows/Makefile +7 -0
  221. data/server/node_modules/cradle/node_modules/vows/README.md +39 -0
  222. data/server/node_modules/cradle/node_modules/vows/bin/vows +515 -0
  223. data/server/node_modules/cradle/node_modules/vows/lib/assert/error.js +27 -0
  224. data/server/node_modules/cradle/node_modules/vows/lib/assert/macros.js +215 -0
  225. data/server/node_modules/cradle/node_modules/vows/lib/assert/utils.js +77 -0
  226. data/server/node_modules/cradle/node_modules/vows/lib/vows.js +193 -0
  227. data/server/node_modules/cradle/node_modules/vows/lib/vows/console.js +131 -0
  228. data/server/node_modules/cradle/node_modules/vows/lib/vows/context.js +55 -0
  229. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/file.js +29 -0
  230. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-foot.html +2 -0
  231. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-head.html +61 -0
  232. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-html.js +54 -0
  233. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-json.js +54 -0
  234. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-plain.js +38 -0
  235. data/server/node_modules/cradle/node_modules/vows/lib/vows/extras.js +28 -0
  236. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/dot-matrix.js +67 -0
  237. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/json.js +16 -0
  238. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/silent.js +8 -0
  239. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/spec.js +44 -0
  240. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/watch.js +39 -0
  241. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/xunit.js +90 -0
  242. data/server/node_modules/cradle/node_modules/vows/lib/vows/suite.js +319 -0
  243. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/LICENSE +20 -0
  244. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/Makefile +4 -0
  245. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/README.md +72 -0
  246. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/lib/eyes.js +233 -0
  247. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/package.json +14 -0
  248. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/test/eyes-test.js +55 -0
  249. data/server/node_modules/cradle/node_modules/vows/package.json +14 -0
  250. data/server/node_modules/cradle/node_modules/vows/test/assert-test.js +135 -0
  251. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/failing.js +18 -0
  252. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/log.js +18 -0
  253. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/passing.js +17 -0
  254. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/stderr.js +18 -0
  255. data/server/node_modules/cradle/node_modules/vows/test/isolate-test.js +140 -0
  256. data/server/node_modules/cradle/node_modules/vows/test/testInherit.js +133 -0
  257. data/server/node_modules/cradle/node_modules/vows/test/vows-error-test.js +51 -0
  258. data/server/node_modules/cradle/node_modules/vows/test/vows-test.js +374 -0
  259. data/server/node_modules/cradle/package.json +14 -0
  260. data/server/node_modules/cradle/test/cache-test.js +102 -0
  261. data/server/node_modules/cradle/test/cradle-test.js +651 -0
  262. data/server/node_modules/cradle/test/fixtures/databases.json +25 -0
  263. data/server/node_modules/cradle/test/helpers/seed.js +56 -0
  264. data/server/node_modules/cradle/test/response-test.js +73 -0
  265. data/server/node_modules/express/History.md +743 -0
  266. data/server/node_modules/express/LICENSE +22 -0
  267. data/server/node_modules/express/Makefile +35 -0
  268. data/server/node_modules/express/Readme.md +143 -0
  269. data/server/node_modules/express/bin/express +417 -0
  270. data/server/node_modules/express/index.js +2 -0
  271. data/server/node_modules/express/lib/express.js +79 -0
  272. data/server/node_modules/express/lib/http.js +583 -0
  273. data/server/node_modules/express/lib/https.js +52 -0
  274. data/server/node_modules/express/lib/request.js +309 -0
  275. data/server/node_modules/express/lib/response.js +459 -0
  276. data/server/node_modules/express/lib/router/collection.js +53 -0
  277. data/server/node_modules/express/lib/router/index.js +398 -0
  278. data/server/node_modules/express/lib/router/methods.js +70 -0
  279. data/server/node_modules/express/lib/router/route.js +88 -0
  280. data/server/node_modules/express/lib/utils.js +139 -0
  281. data/server/node_modules/express/lib/view.js +457 -0
  282. data/server/node_modules/express/lib/view/partial.js +40 -0
  283. data/server/node_modules/express/lib/view/view.js +209 -0
  284. data/server/node_modules/express/node_modules/connect/LICENSE +24 -0
  285. data/server/node_modules/express/node_modules/connect/index.js +2 -0
  286. data/server/node_modules/express/node_modules/connect/lib/cache.js +81 -0
  287. data/server/node_modules/express/node_modules/connect/lib/connect.js +106 -0
  288. data/server/node_modules/express/node_modules/connect/lib/http.js +215 -0
  289. data/server/node_modules/express/node_modules/connect/lib/https.js +47 -0
  290. data/server/node_modules/express/node_modules/connect/lib/index.js +46 -0
  291. data/server/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js +93 -0
  292. data/server/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js +92 -0
  293. data/server/node_modules/express/node_modules/connect/lib/middleware/compiler.js +163 -0
  294. data/server/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js +46 -0
  295. data/server/node_modules/express/node_modules/connect/lib/middleware/csrf.js +105 -0
  296. data/server/node_modules/express/node_modules/connect/lib/middleware/directory.js +222 -0
  297. data/server/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js +100 -0
  298. data/server/node_modules/express/node_modules/connect/lib/middleware/favicon.js +76 -0
  299. data/server/node_modules/express/node_modules/connect/lib/middleware/limit.js +78 -0
  300. data/server/node_modules/express/node_modules/connect/lib/middleware/logger.js +299 -0
  301. data/server/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js +38 -0
  302. data/server/node_modules/express/node_modules/connect/lib/middleware/profiler.js +100 -0
  303. data/server/node_modules/express/node_modules/connect/lib/middleware/query.js +40 -0
  304. data/server/node_modules/express/node_modules/connect/lib/middleware/responseTime.js +34 -0
  305. data/server/node_modules/express/node_modules/connect/lib/middleware/router.js +379 -0
  306. data/server/node_modules/express/node_modules/connect/lib/middleware/session.js +346 -0
  307. data/server/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js +126 -0
  308. data/server/node_modules/express/node_modules/connect/lib/middleware/session/memory.js +131 -0
  309. data/server/node_modules/express/node_modules/connect/lib/middleware/session/session.js +137 -0
  310. data/server/node_modules/express/node_modules/connect/lib/middleware/session/store.js +87 -0
  311. data/server/node_modules/express/node_modules/connect/lib/middleware/static.js +220 -0
  312. data/server/node_modules/express/node_modules/connect/lib/middleware/staticCache.js +122 -0
  313. data/server/node_modules/express/node_modules/connect/lib/middleware/vhost.js +44 -0
  314. data/server/node_modules/express/node_modules/connect/lib/patch.js +79 -0
  315. data/server/node_modules/express/node_modules/connect/lib/public/directory.html +75 -0
  316. data/server/node_modules/express/node_modules/connect/lib/public/error.html +13 -0
  317. data/server/node_modules/express/node_modules/connect/lib/public/favicon.ico +0 -0
  318. data/server/node_modules/express/node_modules/connect/lib/public/icons/page.png +0 -0
  319. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_add.png +0 -0
  320. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png +0 -0
  321. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_code.png +0 -0
  322. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png +0 -0
  323. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png +0 -0
  324. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png +0 -0
  325. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_error.png +0 -0
  326. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png +0 -0
  327. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_find.png +0 -0
  328. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png +0 -0
  329. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_go.png +0 -0
  330. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_green.png +0 -0
  331. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_key.png +0 -0
  332. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png +0 -0
  333. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_link.png +0 -0
  334. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png +0 -0
  335. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png +0 -0
  336. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_red.png +0 -0
  337. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png +0 -0
  338. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_save.png +0 -0
  339. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white.png +0 -0
  340. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png +0 -0
  341. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png +0 -0
  342. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png +0 -0
  343. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png +0 -0
  344. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png +0 -0
  345. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png +0 -0
  346. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png +0 -0
  347. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png +0 -0
  348. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png +0 -0
  349. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png +0 -0
  350. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png +0 -0
  351. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png +0 -0
  352. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png +0 -0
  353. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png +0 -0
  354. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png +0 -0
  355. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png +0 -0
  356. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png +0 -0
  357. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png +0 -0
  358. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png +0 -0
  359. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png +0 -0
  360. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png +0 -0
  361. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png +0 -0
  362. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png +0 -0
  363. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png +0 -0
  364. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png +0 -0
  365. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png +0 -0
  366. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png +0 -0
  367. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png +0 -0
  368. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png +0 -0
  369. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png +0 -0
  370. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png +0 -0
  371. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png +0 -0
  372. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png +0 -0
  373. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png +0 -0
  374. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png +0 -0
  375. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png +0 -0
  376. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png +0 -0
  377. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png +0 -0
  378. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png +0 -0
  379. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png +0 -0
  380. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png +0 -0
  381. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png +0 -0
  382. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png +0 -0
  383. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png +0 -0
  384. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png +0 -0
  385. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png +0 -0
  386. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png +0 -0
  387. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png +0 -0
  388. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png +0 -0
  389. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png +0 -0
  390. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png +0 -0
  391. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png +0 -0
  392. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png +0 -0
  393. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png +0 -0
  394. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png +0 -0
  395. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_word.png +0 -0
  396. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_world.png +0 -0
  397. data/server/node_modules/express/node_modules/connect/lib/public/style.css +141 -0
  398. data/server/node_modules/express/node_modules/connect/lib/utils.js +444 -0
  399. data/server/node_modules/express/node_modules/connect/package.json +24 -0
  400. data/server/node_modules/express/node_modules/connect/test.js +39 -0
  401. data/server/node_modules/express/node_modules/mime/LICENSE +19 -0
  402. data/server/node_modules/express/node_modules/mime/README.md +50 -0
  403. data/server/node_modules/express/node_modules/mime/index.js +1 -0
  404. data/server/node_modules/express/node_modules/mime/mime.js +92 -0
  405. data/server/node_modules/express/node_modules/mime/mime.types +1479 -0
  406. data/server/node_modules/express/node_modules/mime/node.types +26 -0
  407. data/server/node_modules/express/node_modules/mime/package.json +11 -0
  408. data/server/node_modules/express/node_modules/mime/test.js +80 -0
  409. data/server/node_modules/express/node_modules/qs/History.md +52 -0
  410. data/server/node_modules/express/node_modules/qs/Makefile +7 -0
  411. data/server/node_modules/express/node_modules/qs/Readme.md +49 -0
  412. data/server/node_modules/express/node_modules/qs/benchmark.js +17 -0
  413. data/server/node_modules/express/node_modules/qs/examples.js +48 -0
  414. data/server/node_modules/express/node_modules/qs/index.js +2 -0
  415. data/server/node_modules/express/node_modules/qs/lib/querystring.js +236 -0
  416. data/server/node_modules/express/node_modules/qs/package.json +9 -0
  417. data/server/node_modules/express/node_modules/qs/support/expresso/History.md +128 -0
  418. data/server/node_modules/express/node_modules/qs/support/expresso/Makefile +53 -0
  419. data/server/node_modules/express/node_modules/qs/support/expresso/Readme.md +61 -0
  420. data/server/node_modules/express/node_modules/qs/support/expresso/bin/expresso +856 -0
  421. data/server/node_modules/express/node_modules/qs/support/expresso/docs/api.html +1080 -0
  422. data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.html +377 -0
  423. data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.md +290 -0
  424. data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/foot.html +3 -0
  425. data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/head.html +42 -0
  426. data/server/node_modules/express/node_modules/qs/support/expresso/lib/bar.js +4 -0
  427. data/server/node_modules/express/node_modules/qs/support/expresso/lib/foo.js +16 -0
  428. data/server/node_modules/express/node_modules/qs/support/expresso/package.json +12 -0
  429. data/server/node_modules/express/node_modules/qs/support/expresso/test/assert.test.js +91 -0
  430. data/server/node_modules/express/node_modules/qs/support/expresso/test/async.test.js +12 -0
  431. data/server/node_modules/express/node_modules/qs/support/expresso/test/bar.test.js +13 -0
  432. data/server/node_modules/express/node_modules/qs/support/expresso/test/foo.test.js +14 -0
  433. data/server/node_modules/express/node_modules/qs/support/expresso/test/http.test.js +146 -0
  434. data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/async.test.js +39 -0
  435. data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/http.test.js +48 -0
  436. data/server/node_modules/express/node_modules/qs/support/should/History.md +22 -0
  437. data/server/node_modules/express/node_modules/qs/support/should/Makefile +6 -0
  438. data/server/node_modules/express/node_modules/qs/support/should/Readme.md +248 -0
  439. data/server/node_modules/express/node_modules/qs/support/should/examples/runner.js +53 -0
  440. data/server/node_modules/express/node_modules/qs/support/should/index.js +2 -0
  441. data/server/node_modules/express/node_modules/qs/support/should/lib/eql.js +91 -0
  442. data/server/node_modules/express/node_modules/qs/support/should/lib/should.js +548 -0
  443. data/server/node_modules/express/node_modules/qs/support/should/package.json +8 -0
  444. data/server/node_modules/express/node_modules/qs/support/should/test/should.test.js +358 -0
  445. data/server/node_modules/express/node_modules/qs/test/parse.test.js +156 -0
  446. data/server/node_modules/express/node_modules/qs/test/stringify.test.js +95 -0
  447. data/server/node_modules/express/package.json +38 -0
  448. data/server/node_modules/knox/History.md +41 -0
  449. data/server/node_modules/knox/Makefile +21 -0
  450. data/server/node_modules/knox/Readme.md +144 -0
  451. data/server/node_modules/knox/index.html +483 -0
  452. data/server/node_modules/knox/index.js +2 -0
  453. data/server/node_modules/knox/lib/knox/auth.js +190 -0
  454. data/server/node_modules/knox/lib/knox/client.js +355 -0
  455. data/server/node_modules/knox/lib/knox/index.js +36 -0
  456. data/server/node_modules/knox/lib/knox/mime/README.md +19 -0
  457. data/server/node_modules/knox/lib/knox/mime/index.js +308 -0
  458. data/server/node_modules/knox/lib/knox/mime/mime.js +308 -0
  459. data/server/node_modules/knox/lib/knox/mime/package.json +12 -0
  460. data/server/node_modules/knox/lib/knox/mime/test.js +59 -0
  461. data/server/node_modules/knox/lib/knox/utils.js +55 -0
  462. data/server/node_modules/knox/package.json +13 -0
  463. data/server/node_modules/knox/support/expresso/History.md +87 -0
  464. data/server/node_modules/knox/support/expresso/Makefile +53 -0
  465. data/server/node_modules/knox/support/expresso/Readme.md +39 -0
  466. data/server/node_modules/knox/support/expresso/bin/expresso +835 -0
  467. data/server/node_modules/knox/support/expresso/docs/api.html +1048 -0
  468. data/server/node_modules/knox/support/expresso/docs/index.html +373 -0
  469. data/server/node_modules/knox/support/expresso/docs/index.md +290 -0
  470. data/server/node_modules/knox/support/expresso/docs/layout/foot.html +3 -0
  471. data/server/node_modules/knox/support/expresso/docs/layout/head.html +42 -0
  472. data/server/node_modules/knox/support/expresso/lib/bar.js +4 -0
  473. data/server/node_modules/knox/support/expresso/lib/foo.js +16 -0
  474. data/server/node_modules/knox/support/expresso/package.json +9 -0
  475. data/server/node_modules/knox/support/expresso/test/assert.test.js +84 -0
  476. data/server/node_modules/knox/support/expresso/test/async.test.js +6 -0
  477. data/server/node_modules/knox/support/expresso/test/bar.test.js +12 -0
  478. data/server/node_modules/knox/support/expresso/test/foo.test.js +13 -0
  479. data/server/node_modules/knox/support/expresso/test/http.test.js +76 -0
  480. data/server/node_modules/knox/support/expresso/test/serial/async.test.js +38 -0
  481. data/server/node_modules/knox/support/expresso/test/serial/http.test.js +47 -0
  482. data/server/node_modules/knox/test/auth.test.js +59 -0
  483. data/server/node_modules/knox/test/fixtures/user.json +1 -0
  484. data/server/node_modules/knox/test/knox.test.js +188 -0
  485. data/server/node_modules/knox/test/utils.test.js +17 -0
  486. data/server/node_modules/node-uuid/LICENSE.md +3 -0
  487. data/server/node_modules/node-uuid/README.md +100 -0
  488. data/server/node_modules/node-uuid/package.json +12 -0
  489. data/server/node_modules/node-uuid/test/benchmark-native.c +34 -0
  490. data/server/node_modules/node-uuid/test/benchmark.js +27 -0
  491. data/server/node_modules/node-uuid/test/test.html +14 -0
  492. data/server/node_modules/node-uuid/test/test.js +83 -0
  493. data/server/node_modules/node-uuid/uuid.js +80 -0
  494. data/server/node_modules/restler/MIT-LICENSE +20 -0
  495. data/server/node_modules/restler/README.md +147 -0
  496. data/server/node_modules/restler/bin/restler +23 -0
  497. data/server/node_modules/restler/index.js +1 -0
  498. data/server/node_modules/restler/lib/multipartform.js +202 -0
  499. data/server/node_modules/restler/lib/restler.js +300 -0
  500. data/server/node_modules/restler/package.json +10 -0
  501. data/server/node_modules/restler/test/all.js +1 -0
  502. data/server/node_modules/restler/test/restler.js +148 -0
  503. data/server/node_modules/restler/test/test_helper.js +144 -0
  504. data/server/package.json +12 -0
  505. data/server/vendor/gems/bin/restclient +19 -0
  506. data/server/vendor/gems/cache/couchrest-1.1.2.gem +0 -0
  507. data/server/vendor/gems/cache/mime-types-1.16.gem +0 -0
  508. data/server/vendor/gems/cache/multi_json-1.0.3.gem +0 -0
  509. data/server/vendor/gems/cache/rest-client-1.6.7.gem +0 -0
  510. data/server/vendor/gems/gems/couchrest-1.1.2/Gemfile +4 -0
  511. data/server/vendor/gems/gems/couchrest-1.1.2/LICENSE +176 -0
  512. data/server/vendor/gems/gems/couchrest-1.1.2/README.md +65 -0
  513. data/server/vendor/gems/gems/couchrest-1.1.2/Rakefile +38 -0
  514. data/server/vendor/gems/gems/couchrest-1.1.2/THANKS.md +21 -0
  515. data/server/vendor/gems/gems/couchrest-1.1.2/VERSION +1 -0
  516. data/server/vendor/gems/gems/couchrest-1.1.2/couchrest.gemspec +34 -0
  517. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/markov +38 -0
  518. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/books/chunked-map.js +3 -0
  519. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/books/united-map.js +1 -0
  520. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/markov/chain-map.js +6 -0
  521. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/markov/chain-reduce.js +7 -0
  522. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/word_count/count-map.js +6 -0
  523. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/word_count/count-reduce.js +3 -0
  524. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/word_count.rb +46 -0
  525. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/word_count_query.rb +40 -0
  526. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/word_count_views.rb +26 -0
  527. data/server/vendor/gems/gems/couchrest-1.1.2/history.txt +194 -0
  528. data/server/vendor/gems/gems/couchrest-1.1.2/init.rb +1 -0
  529. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest.rb +134 -0
  530. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/attributes.rb +89 -0
  531. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/commands/generate.rb +71 -0
  532. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/commands/push.rb +103 -0
  533. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/database.rb +396 -0
  534. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/design.rb +91 -0
  535. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/document.rb +105 -0
  536. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/helper/attachments.rb +29 -0
  537. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/helper/pager.rb +103 -0
  538. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/helper/streamer.rb +58 -0
  539. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/helper/upgrade.rb +51 -0
  540. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/middlewares/logger.rb +263 -0
  541. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/monkeypatches.rb +25 -0
  542. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/rest_api.rb +159 -0
  543. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/server.rb +90 -0
  544. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/support/inheritable_attributes.rb +107 -0
  545. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/couchrest_spec.rb +202 -0
  546. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/database_spec.rb +921 -0
  547. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/design_spec.rb +206 -0
  548. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/document_spec.rb +400 -0
  549. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/helpers/pager_spec.rb +115 -0
  550. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/helpers/streamer_spec.rb +59 -0
  551. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/rest_api_spec.rb +212 -0
  552. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/server_spec.rb +35 -0
  553. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/attachments/README +3 -0
  554. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/attachments/couchdb.png +0 -0
  555. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/attachments/test.html +11 -0
  556. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/lib.js +3 -0
  557. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/test_view/lib.js +3 -0
  558. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/test_view/only-map.js +4 -0
  559. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/test_view/test-map.js +3 -0
  560. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/test_view/test-reduce.js +3 -0
  561. data/server/vendor/gems/gems/couchrest-1.1.2/spec/spec.opts +5 -0
  562. data/server/vendor/gems/gems/couchrest-1.1.2/spec/spec_helper.rb +46 -0
  563. data/server/vendor/gems/gems/couchrest-1.1.2/utils/remap.rb +27 -0
  564. data/server/vendor/gems/gems/couchrest-1.1.2/utils/subset.rb +30 -0
  565. data/server/vendor/gems/gems/mime-types-1.16/History.txt +107 -0
  566. data/server/vendor/gems/gems/mime-types-1.16/Install.txt +17 -0
  567. data/server/vendor/gems/gems/mime-types-1.16/Licence.txt +15 -0
  568. data/server/vendor/gems/gems/mime-types-1.16/Manifest.txt +12 -0
  569. data/server/vendor/gems/gems/mime-types-1.16/README.txt +28 -0
  570. data/server/vendor/gems/gems/mime-types-1.16/Rakefile +316 -0
  571. data/server/vendor/gems/gems/mime-types-1.16/lib/mime/types.rb +751 -0
  572. data/server/vendor/gems/gems/mime-types-1.16/lib/mime/types.rb.data +1324 -0
  573. data/server/vendor/gems/gems/mime-types-1.16/mime-types.gemspec +43 -0
  574. data/server/vendor/gems/gems/mime-types-1.16/setup.rb +1585 -0
  575. data/server/vendor/gems/gems/mime-types-1.16/test/test_mime_type.rb +356 -0
  576. data/server/vendor/gems/gems/mime-types-1.16/test/test_mime_types.rb +122 -0
  577. data/server/vendor/gems/gems/multi_json-1.0.3/Gemfile +7 -0
  578. data/server/vendor/gems/gems/multi_json-1.0.3/LICENSE.md +20 -0
  579. data/server/vendor/gems/gems/multi_json-1.0.3/README.md +70 -0
  580. data/server/vendor/gems/gems/multi_json-1.0.3/Rakefile +23 -0
  581. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json.rb +74 -0
  582. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/json_gem.rb +21 -0
  583. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/json_pure.rb +21 -0
  584. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb +48 -0
  585. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/yajl.rb +18 -0
  586. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/vendor/ok_json.rb +581 -0
  587. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/version.rb +3 -0
  588. data/server/vendor/gems/gems/multi_json-1.0.3/multi_json.gemspec +23 -0
  589. data/server/vendor/gems/gems/multi_json-1.0.3/spec/helper.rb +11 -0
  590. data/server/vendor/gems/gems/multi_json-1.0.3/spec/multi_json_spec.rb +134 -0
  591. data/server/vendor/gems/gems/rest-client-1.6.7/README.rdoc +285 -0
  592. data/server/vendor/gems/gems/rest-client-1.6.7/Rakefile +66 -0
  593. data/server/vendor/gems/gems/rest-client-1.6.7/VERSION +1 -0
  594. data/server/vendor/gems/gems/rest-client-1.6.7/bin/restclient +93 -0
  595. data/server/vendor/gems/gems/rest-client-1.6.7/history.md +134 -0
  596. data/server/vendor/gems/gems/rest-client-1.6.7/lib/rest-client.rb +2 -0
  597. data/server/vendor/gems/gems/rest-client-1.6.7/lib/rest_client.rb +2 -0
  598. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient.rb +174 -0
  599. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/abstract_response.rb +106 -0
  600. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/exceptions.rb +193 -0
  601. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/net_http_ext.rb +55 -0
  602. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/payload.rb +235 -0
  603. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/raw_response.rb +34 -0
  604. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/request.rb +316 -0
  605. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/resource.rb +169 -0
  606. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/response.rb +24 -0
  607. data/server/vendor/gems/gems/rest-client-1.6.7/spec/abstract_response_spec.rb +85 -0
  608. data/server/vendor/gems/gems/rest-client-1.6.7/spec/base.rb +16 -0
  609. data/server/vendor/gems/gems/rest-client-1.6.7/spec/exceptions_spec.rb +98 -0
  610. data/server/vendor/gems/gems/rest-client-1.6.7/spec/integration/certs/equifax.crt +19 -0
  611. data/server/vendor/gems/gems/rest-client-1.6.7/spec/integration/certs/verisign.crt +14 -0
  612. data/server/vendor/gems/gems/rest-client-1.6.7/spec/integration/request_spec.rb +25 -0
  613. data/server/vendor/gems/gems/rest-client-1.6.7/spec/integration_spec.rb +38 -0
  614. data/server/vendor/gems/gems/rest-client-1.6.7/spec/master_shake.jpg +0 -0
  615. data/server/vendor/gems/gems/rest-client-1.6.7/spec/payload_spec.rb +234 -0
  616. data/server/vendor/gems/gems/rest-client-1.6.7/spec/raw_response_spec.rb +17 -0
  617. data/server/vendor/gems/gems/rest-client-1.6.7/spec/request2_spec.rb +40 -0
  618. data/server/vendor/gems/gems/rest-client-1.6.7/spec/request_spec.rb +529 -0
  619. data/server/vendor/gems/gems/rest-client-1.6.7/spec/resource_spec.rb +134 -0
  620. data/server/vendor/gems/gems/rest-client-1.6.7/spec/response_spec.rb +169 -0
  621. data/server/vendor/gems/gems/rest-client-1.6.7/spec/restclient_spec.rb +73 -0
  622. data/server/vendor/gems/specifications/couchrest-1.1.2.gemspec +43 -0
  623. data/server/vendor/gems/specifications/mime-types-1.16.gemspec +42 -0
  624. data/server/vendor/gems/specifications/multi_json-1.0.3.gemspec +40 -0
  625. data/server/vendor/gems/specifications/rest-client-1.6.7.gemspec +37 -0
  626. data/server/web.js +93 -0
  627. metadata +633 -7
@@ -0,0 +1,751 @@
1
+ # vim: ft=ruby encoding=utf-8
2
+ #--
3
+ # MIME::Types
4
+ # A Ruby implementation of a MIME Types information library. Based in spirit
5
+ # on the Perl MIME::Types information library by Mark Overmeer.
6
+ # http://rubyforge.org/projects/mime-types/
7
+ #
8
+ # Licensed under the Ruby disjunctive licence with the GNU GPL or the Perl
9
+ # Artistic licence. See Licence.txt for more information.
10
+ #
11
+ # Copyright 2003 - 2009 Austin Ziegler
12
+ #++
13
+
14
+ # The namespace for MIME applications, tools, and libraries.
15
+ module MIME
16
+ # Reflects a MIME Content-Type which is in invalid format (e.g., it isn't
17
+ # in the form of type/subtype).
18
+ class InvalidContentType < RuntimeError; end
19
+
20
+ # The definition of one MIME content-type.
21
+ #
22
+ # == Usage
23
+ # require 'mime/types'
24
+ #
25
+ # plaintext = MIME::Types['text/plain']
26
+ # print plaintext.media_type # => 'text'
27
+ # print plaintext.sub_type # => 'plain'
28
+ #
29
+ # puts plaintext.extensions.join(" ") # => 'asc txt c cc h hh cpp'
30
+ #
31
+ # puts plaintext.encoding # => 8bit
32
+ # puts plaintext.binary? # => false
33
+ # puts plaintext.ascii? # => true
34
+ # puts plaintext == 'text/plain' # => true
35
+ # puts MIME::Type.simplified('x-appl/x-zip') # => 'appl/zip'
36
+ #
37
+ class Type
38
+ VERSION = '1.16'
39
+
40
+ include Comparable
41
+
42
+ MEDIA_TYPE_RE = %r{([-\w.+]+)/([-\w.+]*)}o
43
+ UNREG_RE = %r{[Xx]-}o
44
+ ENCODING_RE = %r{(?:base64|7bit|8bit|quoted\-printable)}o
45
+ PLATFORM_RE = %r|#{RUBY_PLATFORM}|o
46
+
47
+ SIGNATURES = %w(application/pgp-keys application/pgp
48
+ application/pgp-signature application/pkcs10
49
+ application/pkcs7-mime application/pkcs7-signature
50
+ text/vcard)
51
+
52
+ IANA_URL = "http://www.iana.org/assignments/media-types/%s/%s"
53
+ RFC_URL = "http://rfc-editor.org/rfc/rfc%s.txt"
54
+ DRAFT_URL = "http://datatracker.ietf.org/public/idindex.cgi?command=id_details&filename=%s"
55
+ LTSW_URL = "http://www.ltsw.se/knbase/internet/%s.htp"
56
+ CONTACT_URL = "http://www.iana.org/assignments/contact-people.htm#%s"
57
+
58
+ # Returns +true+ if the simplified type matches the current
59
+ def like?(other)
60
+ if other.respond_to?(:simplified)
61
+ @simplified == other.simplified
62
+ else
63
+ @simplified == Type.simplified(other)
64
+ end
65
+ end
66
+
67
+ # Compares the MIME::Type against the exact content type or the
68
+ # simplified type (the simplified type will be used if comparing against
69
+ # something that can be treated as a String with #to_s). In comparisons,
70
+ # this is done against the lowercase version of the MIME::Type.
71
+ def <=>(other)
72
+ if other.respond_to?(:content_type)
73
+ @content_type.downcase <=> other.content_type.downcase
74
+ elsif other.respond_to?(:to_s)
75
+ @simplified <=> Type.simplified(other.to_s)
76
+ else
77
+ @content_type.downcase <=> other.downcase
78
+ end
79
+ end
80
+
81
+ # Compares the MIME::Type based on how reliable it is before doing a
82
+ # normal <=> comparison. Used by MIME::Types#[] to sort types. The
83
+ # comparisons involved are:
84
+ #
85
+ # 1. self.simplified <=> other.simplified (ensures that we
86
+ # don't try to compare different types)
87
+ # 2. IANA-registered definitions > other definitions.
88
+ # 3. Generic definitions > platform definitions.
89
+ # 3. Complete definitions > incomplete definitions.
90
+ # 4. Current definitions > obsolete definitions.
91
+ # 5. Obselete with use-instead references > obsolete without.
92
+ # 6. Obsolete use-instead definitions are compared.
93
+ def priority_compare(other)
94
+ pc = simplified <=> other.simplified
95
+
96
+ if pc.zero? and registered? != other.registered?
97
+ pc = registered? ? -1 : 1
98
+ end
99
+
100
+ if pc.zero? and platform? != other.platform?
101
+ pc = platform? ? 1 : -1
102
+ end
103
+
104
+ if pc.zero? and complete? != other.complete?
105
+ pc = complete? ? -1 : 1
106
+ end
107
+
108
+ if pc.zero? and obsolete? != other.obsolete?
109
+ pc = obsolete? ? 1 : -1
110
+ end
111
+
112
+ if pc.zero? and obsolete? and (use_instead != other.use_instead)
113
+ pc = if use_instead.nil?
114
+ -1
115
+ elsif other.use_instead.nil?
116
+ 1
117
+ else
118
+ use_instead <=> other.use_instead
119
+ end
120
+ end
121
+
122
+ pc
123
+ end
124
+
125
+ # Returns +true+ if the other object is a MIME::Type and the content
126
+ # types match.
127
+ def eql?(other)
128
+ other.kind_of?(MIME::Type) and self == other
129
+ end
130
+
131
+ # Returns the whole MIME content-type string.
132
+ #
133
+ # text/plain => text/plain
134
+ # x-chemical/x-pdb => x-chemical/x-pdb
135
+ attr_reader :content_type
136
+ # Returns the media type of the simplified MIME type.
137
+ #
138
+ # text/plain => text
139
+ # x-chemical/x-pdb => chemical
140
+ attr_reader :media_type
141
+ # Returns the media type of the unmodified MIME type.
142
+ #
143
+ # text/plain => text
144
+ # x-chemical/x-pdb => x-chemical
145
+ attr_reader :raw_media_type
146
+ # Returns the sub-type of the simplified MIME type.
147
+ #
148
+ # text/plain => plain
149
+ # x-chemical/x-pdb => pdb
150
+ attr_reader :sub_type
151
+ # Returns the media type of the unmodified MIME type.
152
+ #
153
+ # text/plain => plain
154
+ # x-chemical/x-pdb => x-pdb
155
+ attr_reader :raw_sub_type
156
+ # The MIME types main- and sub-label can both start with <tt>x-</tt>,
157
+ # which indicates that it is a non-registered name. Of course, after
158
+ # registration this flag can disappear, adds to the confusing
159
+ # proliferation of MIME types. The simplified string has the <tt>x-</tt>
160
+ # removed and are translated to lowercase.
161
+ #
162
+ # text/plain => text/plain
163
+ # x-chemical/x-pdb => chemical/pdb
164
+ attr_reader :simplified
165
+ # The list of extensions which are known to be used for this MIME::Type.
166
+ # Non-array values will be coerced into an array with #to_a. Array
167
+ # values will be flattened and +nil+ values removed.
168
+ attr_accessor :extensions
169
+ remove_method :extensions= ;
170
+ def extensions=(ext) #:nodoc:
171
+ @extensions = [ext].flatten.compact
172
+ end
173
+
174
+ # The encoding (7bit, 8bit, quoted-printable, or base64) required to
175
+ # transport the data of this content type safely across a network, which
176
+ # roughly corresponds to Content-Transfer-Encoding. A value of +nil+ or
177
+ # <tt>:default</tt> will reset the #encoding to the #default_encoding
178
+ # for the MIME::Type. Raises ArgumentError if the encoding provided is
179
+ # invalid.
180
+ #
181
+ # If the encoding is not provided on construction, this will be either
182
+ # 'quoted-printable' (for text/* media types) and 'base64' for eveything
183
+ # else.
184
+ attr_accessor :encoding
185
+ remove_method :encoding= ;
186
+ def encoding=(enc) #:nodoc:
187
+ if enc.nil? or enc == :default
188
+ @encoding = self.default_encoding
189
+ elsif enc =~ ENCODING_RE
190
+ @encoding = enc
191
+ else
192
+ raise ArgumentError, "The encoding must be nil, :default, base64, 7bit, 8bit, or quoted-printable."
193
+ end
194
+ end
195
+
196
+ # The regexp for the operating system that this MIME::Type is specific
197
+ # to.
198
+ attr_accessor :system
199
+ remove_method :system= ;
200
+ def system=(os) #:nodoc:
201
+ if os.nil? or os.kind_of?(Regexp)
202
+ @system = os
203
+ else
204
+ @system = %r|#{os}|
205
+ end
206
+ end
207
+ # Returns the default encoding for the MIME::Type based on the media
208
+ # type.
209
+ attr_reader :default_encoding
210
+ remove_method :default_encoding
211
+ def default_encoding
212
+ (@media_type == 'text') ? 'quoted-printable' : 'base64'
213
+ end
214
+
215
+ # Returns the media type or types that should be used instead of this
216
+ # media type, if it is obsolete. If there is no replacement media type,
217
+ # or it is not obsolete, +nil+ will be returned.
218
+ attr_reader :use_instead
219
+ remove_method :use_instead
220
+ def use_instead
221
+ return nil unless @obsolete
222
+ @use_instead
223
+ end
224
+
225
+ # Returns +true+ if the media type is obsolete.
226
+ def obsolete?
227
+ @obsolete ? true : false
228
+ end
229
+ # Sets the obsolescence indicator for this media type.
230
+ attr_writer :obsolete
231
+
232
+ # The documentation for this MIME::Type. Documentation about media
233
+ # types will be found on a media type definition as a comment.
234
+ # Documentation will be found through #docs.
235
+ attr_accessor :docs
236
+ remove_method :docs= ;
237
+ def docs=(d)
238
+ if d
239
+ a = d.scan(%r{use-instead:#{MEDIA_TYPE_RE}})
240
+
241
+ if a.empty?
242
+ @use_instead = nil
243
+ else
244
+ @use_instead = a.map { |el| "#{el[0]}/#{el[1]}" }
245
+ end
246
+ end
247
+ @docs = d
248
+ end
249
+
250
+ # The encoded URL list for this MIME::Type. See #urls for more
251
+ # information.
252
+ attr_accessor :url
253
+ # The decoded URL list for this MIME::Type.
254
+ # The special URL value IANA will be translated into:
255
+ # http://www.iana.org/assignments/media-types/<mediatype>/<subtype>
256
+ #
257
+ # The special URL value RFC### will be translated into:
258
+ # http://www.rfc-editor.org/rfc/rfc###.txt
259
+ #
260
+ # The special URL value DRAFT:name will be translated into:
261
+ # https://datatracker.ietf.org/public/idindex.cgi?
262
+ # command=id_detail&filename=<name>
263
+ #
264
+ # The special URL value LTSW will be translated into:
265
+ # http://www.ltsw.se/knbase/internet/<mediatype>.htp
266
+ #
267
+ # The special URL value [token] will be translated into:
268
+ # http://www.iana.org/assignments/contact-people.htm#<token>
269
+ #
270
+ # These values will be accessible through #urls, which always returns an
271
+ # array.
272
+ def urls
273
+ @url.map do |el|
274
+ case el
275
+ when %r{^IANA$}
276
+ IANA_URL % [ @media_type, @sub_type ]
277
+ when %r{^RFC(\d+)$}
278
+ RFC_URL % $1
279
+ when %r{^DRAFT:(.+)$}
280
+ DRAFT_URL % $1
281
+ when %r{^LTSW$}
282
+ LTSW_URL % @media_type
283
+ when %r<^\{([^=]+)=([^\]]+)\}>
284
+ [$1, $2]
285
+ when %r{^\[([^=]+)=([^\]]+)\]}
286
+ [$1, CONTACT_URL % $2]
287
+ when %r{^\[([^\]]+)\]}
288
+ CONTACT_URL % $1
289
+ else
290
+ el
291
+ end
292
+ end
293
+ end
294
+
295
+ class << self
296
+ # The MIME types main- and sub-label can both start with <tt>x-</tt>,
297
+ # which indicates that it is a non-registered name. Of course, after
298
+ # registration this flag can disappear, adds to the confusing
299
+ # proliferation of MIME types. The simplified string has the
300
+ # <tt>x-</tt> removed and are translated to lowercase.
301
+ def simplified(content_type)
302
+ matchdata = MEDIA_TYPE_RE.match(content_type)
303
+
304
+ if matchdata.nil?
305
+ simplified = nil
306
+ else
307
+ media_type = matchdata.captures[0].downcase.gsub(UNREG_RE, '')
308
+ subtype = matchdata.captures[1].downcase.gsub(UNREG_RE, '')
309
+ simplified = "#{media_type}/#{subtype}"
310
+ end
311
+ simplified
312
+ end
313
+
314
+ # Creates a MIME::Type from an array in the form of:
315
+ # [type-name, [extensions], encoding, system]
316
+ #
317
+ # +extensions+, +encoding+, and +system+ are optional.
318
+ #
319
+ # MIME::Type.from_array("application/x-ruby", ['rb'], '8bit')
320
+ # MIME::Type.from_array(["application/x-ruby", ['rb'], '8bit'])
321
+ #
322
+ # These are equivalent to:
323
+ #
324
+ # MIME::Type.new('application/x-ruby') do |t|
325
+ # t.extensions = %w(rb)
326
+ # t.encoding = '8bit'
327
+ # end
328
+ def from_array(*args) #:yields MIME::Type.new:
329
+ # Dereferences the array one level, if necessary.
330
+ args = args[0] if args[0].kind_of?(Array)
331
+
332
+ if args.size.between?(1, 8)
333
+ m = MIME::Type.new(args[0]) do |t|
334
+ t.extensions = args[1] if args.size > 1
335
+ t.encoding = args[2] if args.size > 2
336
+ t.system = args[3] if args.size > 3
337
+ t.obsolete = args[4] if args.size > 4
338
+ t.docs = args[5] if args.size > 5
339
+ t.url = args[6] if args.size > 6
340
+ t.registered = args[7] if args.size > 7
341
+ end
342
+ yield m if block_given?
343
+ else
344
+ raise ArgumentError, "Array provided must contain between one and eight elements."
345
+ end
346
+ m
347
+ end
348
+
349
+ # Creates a MIME::Type from a hash. Keys are case-insensitive,
350
+ # dashes may be replaced with underscores, and the internal Symbol
351
+ # of the lowercase-underscore version can be used as well. That is,
352
+ # Content-Type can be provided as content-type, Content_Type,
353
+ # content_type, or :content_type.
354
+ #
355
+ # Known keys are <tt>Content-Type</tt>,
356
+ # <tt>Content-Transfer-Encoding</tt>, <tt>Extensions</tt>, and
357
+ # <tt>System</tt>.
358
+ #
359
+ # MIME::Type.from_hash('Content-Type' => 'text/x-yaml',
360
+ # 'Content-Transfer-Encoding' => '8bit',
361
+ # 'System' => 'linux',
362
+ # 'Extensions' => ['yaml', 'yml'])
363
+ #
364
+ # This is equivalent to:
365
+ #
366
+ # MIME::Type.new('text/x-yaml') do |t|
367
+ # t.encoding = '8bit'
368
+ # t.system = 'linux'
369
+ # t.extensions = ['yaml', 'yml']
370
+ # end
371
+ def from_hash(hash) #:yields MIME::Type.new:
372
+ type = {}
373
+ hash.each_pair do |k, v|
374
+ type[k.to_s.tr('A-Z', 'a-z').gsub(/-/, '_').to_sym] = v
375
+ end
376
+
377
+ m = MIME::Type.new(type[:content_type]) do |t|
378
+ t.extensions = type[:extensions]
379
+ t.encoding = type[:content_transfer_encoding]
380
+ t.system = type[:system]
381
+ t.obsolete = type[:obsolete]
382
+ t.docs = type[:docs]
383
+ t.url = type[:url]
384
+ t.registered = type[:registered]
385
+ end
386
+
387
+ yield m if block_given?
388
+ m
389
+ end
390
+
391
+ # Essentially a copy constructor.
392
+ #
393
+ # MIME::Type.from_mime_type(plaintext)
394
+ #
395
+ # is equivalent to:
396
+ #
397
+ # MIME::Type.new(plaintext.content_type.dup) do |t|
398
+ # t.extensions = plaintext.extensions.dup
399
+ # t.system = plaintext.system.dup
400
+ # t.encoding = plaintext.encoding.dup
401
+ # end
402
+ def from_mime_type(mime_type) #:yields the new MIME::Type:
403
+ m = MIME::Type.new(mime_type.content_type.dup) do |t|
404
+ t.extensions = mime_type.extensions.map { |e| e.dup }
405
+ t.url = mime_type.url && mime_type.url.map { |e| e.dup }
406
+
407
+ mime_type.system && t.system = mime_type.system.dup
408
+ mime_type.encoding && t.encoding = mime_type.encoding.dup
409
+
410
+ t.obsolete = mime_type.obsolete?
411
+ t.registered = mime_type.registered?
412
+
413
+ mime_type.docs && t.docs = mime_type.docs.dup
414
+
415
+ end
416
+
417
+ yield m if block_given?
418
+ end
419
+ end
420
+
421
+ # Builds a MIME::Type object from the provided MIME Content Type value
422
+ # (e.g., 'text/plain' or 'applicaton/x-eruby'). The constructed object
423
+ # is yielded to an optional block for additional configuration, such as
424
+ # associating extensions and encoding information.
425
+ def initialize(content_type) #:yields self:
426
+ matchdata = MEDIA_TYPE_RE.match(content_type)
427
+
428
+ if matchdata.nil?
429
+ raise InvalidContentType, "Invalid Content-Type provided ('#{content_type}')"
430
+ end
431
+
432
+ @content_type = content_type
433
+ @raw_media_type = matchdata.captures[0]
434
+ @raw_sub_type = matchdata.captures[1]
435
+
436
+ @simplified = MIME::Type.simplified(@content_type)
437
+ matchdata = MEDIA_TYPE_RE.match(@simplified)
438
+ @media_type = matchdata.captures[0]
439
+ @sub_type = matchdata.captures[1]
440
+
441
+ self.extensions = nil
442
+ self.encoding = :default
443
+ self.system = nil
444
+ self.registered = true
445
+ self.url = nil
446
+ self.obsolete = nil
447
+ self.docs = nil
448
+
449
+ yield self if block_given?
450
+ end
451
+
452
+ # MIME content-types which are not regestered by IANA nor defined in
453
+ # RFCs are required to start with <tt>x-</tt>. This counts as well for
454
+ # a new media type as well as a new sub-type of an existing media
455
+ # type. If either the media-type or the content-type begins with
456
+ # <tt>x-</tt>, this method will return +false+.
457
+ def registered?
458
+ if (@raw_media_type =~ UNREG_RE) || (@raw_sub_type =~ UNREG_RE)
459
+ false
460
+ else
461
+ @registered
462
+ end
463
+ end
464
+ attr_writer :registered #:nodoc:
465
+
466
+ # MIME types can be specified to be sent across a network in particular
467
+ # formats. This method returns +true+ when the MIME type encoding is set
468
+ # to <tt>base64</tt>.
469
+ def binary?
470
+ @encoding == 'base64'
471
+ end
472
+
473
+ # MIME types can be specified to be sent across a network in particular
474
+ # formats. This method returns +false+ when the MIME type encoding is
475
+ # set to <tt>base64</tt>.
476
+ def ascii?
477
+ not binary?
478
+ end
479
+
480
+ # Returns +true+ when the simplified MIME type is in the list of known
481
+ # digital signatures.
482
+ def signature?
483
+ SIGNATURES.include?(@simplified.downcase)
484
+ end
485
+
486
+ # Returns +true+ if the MIME::Type is specific to an operating system.
487
+ def system?
488
+ not @system.nil?
489
+ end
490
+
491
+ # Returns +true+ if the MIME::Type is specific to the current operating
492
+ # system as represented by RUBY_PLATFORM.
493
+ def platform?
494
+ system? and (RUBY_PLATFORM =~ @system)
495
+ end
496
+
497
+ # Returns +true+ if the MIME::Type specifies an extension list,
498
+ # indicating that it is a complete MIME::Type.
499
+ def complete?
500
+ not @extensions.empty?
501
+ end
502
+
503
+ # Returns the MIME type as a string.
504
+ def to_s
505
+ @content_type
506
+ end
507
+
508
+ # Returns the MIME type as a string for implicit conversions.
509
+ def to_str
510
+ @content_type
511
+ end
512
+
513
+ # Returns the MIME type as an array suitable for use with
514
+ # MIME::Type.from_array.
515
+ def to_a
516
+ [ @content_type, @extensions, @encoding, @system, @obsolete, @docs,
517
+ @url, registered? ]
518
+ end
519
+
520
+ # Returns the MIME type as an array suitable for use with
521
+ # MIME::Type.from_hash.
522
+ def to_hash
523
+ { 'Content-Type' => @content_type,
524
+ 'Content-Transfer-Encoding' => @encoding,
525
+ 'Extensions' => @extensions,
526
+ 'System' => @system,
527
+ 'Obsolete' => @obsolete,
528
+ 'Docs' => @docs,
529
+ 'URL' => @url,
530
+ 'Registered' => registered?,
531
+ }
532
+ end
533
+ end
534
+
535
+ # = MIME::Types
536
+ # MIME types are used in MIME-compliant communications, as in e-mail or
537
+ # HTTP traffic, to indicate the type of content which is transmitted.
538
+ # MIME::Types provides the ability for detailed information about MIME
539
+ # entities (provided as a set of MIME::Type objects) to be determined and
540
+ # used programmatically. There are many types defined by RFCs and vendors,
541
+ # so the list is long but not complete; don't hesitate to ask to add
542
+ # additional information. This library follows the IANA collection of MIME
543
+ # types (see below for reference).
544
+ #
545
+ # == Description
546
+ # MIME types are used in MIME entities, as in email or HTTP traffic. It is
547
+ # useful at times to have information available about MIME types (or,
548
+ # inversely, about files). A MIME::Type stores the known information about
549
+ # one MIME type.
550
+ #
551
+ # == Usage
552
+ # require 'mime/types'
553
+ #
554
+ # plaintext = MIME::Types['text/plain']
555
+ # print plaintext.media_type # => 'text'
556
+ # print plaintext.sub_type # => 'plain'
557
+ #
558
+ # puts plaintext.extensions.join(" ") # => 'asc txt c cc h hh cpp'
559
+ #
560
+ # puts plaintext.encoding # => 8bit
561
+ # puts plaintext.binary? # => false
562
+ # puts plaintext.ascii? # => true
563
+ # puts plaintext.obsolete? # => false
564
+ # puts plaintext.registered? # => true
565
+ # puts plaintext == 'text/plain' # => true
566
+ # puts MIME::Type.simplified('x-appl/x-zip') # => 'appl/zip'
567
+ #
568
+ # This module is built to conform to the MIME types of RFCs 2045 and 2231.
569
+ # It follows the official IANA registry at
570
+ # http://www.iana.org/assignments/media-types/ and
571
+ # ftp://ftp.iana.org/assignments/media-types with some unofficial types
572
+ # added from the the collection at
573
+ # http://www.ltsw.se/knbase/internet/mime.htp
574
+ #
575
+ # This is originally based on Perl MIME::Types by Mark Overmeer.
576
+ #
577
+ # = Author
578
+ # Copyright:: Copyright (c) 2002 - 2009 by Austin Ziegler
579
+ # <austin@rubyforge.org>
580
+ # Version:: 1.16
581
+ # Based On:: Perl
582
+ # MIME::Types[http://search.cpan.org/author/MARKOV/MIME-Types-1.27/MIME/Types.pm],
583
+ # Copyright (c) 2001 - 2009 by Mark Overmeer
584
+ # <mimetypes@overmeer.net>.
585
+ # Licence:: Ruby's, Perl Artistic, or GPL version 2 (or later)
586
+ # See Also:: http://www.iana.org/assignments/media-types/
587
+ # http://www.ltsw.se/knbase/internet/mime.htp
588
+ #
589
+ class Types
590
+ # The released version of Ruby MIME::Types
591
+ VERSION = '1.16'
592
+
593
+ # The data version.
594
+ attr_reader :data_version
595
+
596
+ def initialize(data_version = nil)
597
+ @type_variants = Hash.new { |h, k| h[k] = [] }
598
+ @extension_index = Hash.new { |h, k| h[k] = [] }
599
+ end
600
+
601
+ def add_type_variant(mime_type) #:nodoc:
602
+ @type_variants[mime_type.simplified] << mime_type
603
+ end
604
+
605
+ def index_extensions(mime_type) #:nodoc:
606
+ mime_type.extensions.each { |ext| @extension_index[ext] << mime_type }
607
+ end
608
+
609
+ @__types__ = self.new(VERSION)
610
+
611
+ # Returns a list of MIME::Type objects, which may be empty. The optional
612
+ # flag parameters are :complete (finds only complete MIME::Type objects)
613
+ # and :platform (finds only MIME::Types for the current platform). It is
614
+ # possible for multiple matches to be returned for either type (in the
615
+ # example below, 'text/plain' returns two values -- one for the general
616
+ # case, and one for VMS systems.
617
+ #
618
+ # puts "\nMIME::Types['text/plain']"
619
+ # MIME::Types['text/plain'].each { |t| puts t.to_a.join(", ") }
620
+ #
621
+ # puts "\nMIME::Types[/^image/, :complete => true]"
622
+ # MIME::Types[/^image/, :complete => true].each do |t|
623
+ # puts t.to_a.join(", ")
624
+ # end
625
+ #
626
+ # If multiple type definitions are returned, returns them sorted as
627
+ # follows:
628
+ # 1. Complete definitions sort before incomplete ones;
629
+ # 2. IANA-registered definitions sort before LTSW-recorded
630
+ # definitions.
631
+ # 3. Generic definitions sort before platform-specific ones;
632
+ # 4. Current definitions sort before obsolete ones;
633
+ # 5. Obsolete definitions with use-instead clauses sort before those
634
+ # without;
635
+ # 6. Obsolete definitions use-instead clauses are compared.
636
+ # 7. Sort on name.
637
+ def [](type_id, flags = {})
638
+ if type_id.kind_of?(Regexp)
639
+ matches = []
640
+ @type_variants.each_key do |k|
641
+ matches << @type_variants[k] if k =~ type_id
642
+ end
643
+ matches.flatten!
644
+ elsif type_id.kind_of?(MIME::Type)
645
+ matches = [type_id]
646
+ else
647
+ matches = @type_variants[MIME::Type.simplified(type_id)]
648
+ end
649
+
650
+ matches.delete_if { |e| not e.complete? } if flags[:complete]
651
+ matches.delete_if { |e| not e.platform? } if flags[:platform]
652
+
653
+ matches.sort { |a, b| a.priority_compare(b) }
654
+ end
655
+
656
+ # Return the list of MIME::Types which belongs to the file based on its
657
+ # filename extension. If +platform+ is +true+, then only file types that
658
+ # are specific to the current platform will be returned.
659
+ #
660
+ # puts "MIME::Types.type_for('citydesk.xml')
661
+ # => "#{MIME::Types.type_for('citydesk.xml')}"
662
+ # puts "MIME::Types.type_for('citydesk.gif')
663
+ # => "#{MIME::Types.type_for('citydesk.gif')}"
664
+ def type_for(filename, platform = false)
665
+ ext = filename.chomp.downcase.gsub(/.*\./o, '')
666
+ list = @extension_index[ext]
667
+ list.delete_if { |e| not e.platform? } if platform
668
+ list
669
+ end
670
+
671
+ # A synonym for MIME::Types.type_for
672
+ def of(filename, platform = false)
673
+ type_for(filename, platform)
674
+ end
675
+
676
+ # Add one or more MIME::Type objects to the set of known types. Each
677
+ # type should be experimental (e.g., 'application/x-ruby'). If the type
678
+ # is already known, a warning will be displayed.
679
+ #
680
+ # <b>Please inform the maintainer of this module when registered types
681
+ # are missing.</b>
682
+ def add(*types)
683
+ types.each do |mime_type|
684
+ if @type_variants.include?(mime_type.simplified)
685
+ if @type_variants[mime_type.simplified].include?(mime_type)
686
+ warn "Type #{mime_type} already registered as a variant of #{mime_type.simplified}."
687
+ end
688
+ end
689
+ add_type_variant(mime_type)
690
+ index_extensions(mime_type)
691
+ end
692
+ end
693
+
694
+ class << self
695
+ def add_type_variant(mime_type) #:nodoc:
696
+ @__types__.add_type_variant(mime_type)
697
+ end
698
+
699
+ def index_extensions(mime_type) #:nodoc:
700
+ @__types__.index_extensions(mime_type)
701
+ end
702
+
703
+ # Returns a list of MIME::Type objects, which may be empty. The
704
+ # optional flag parameters are :complete (finds only complete
705
+ # MIME::Type objects) and :platform (finds only MIME::Types for the
706
+ # current platform). It is possible for multiple matches to be
707
+ # returned for either type (in the example below, 'text/plain' returns
708
+ # two values -- one for the general case, and one for VMS systems.
709
+ #
710
+ # puts "\nMIME::Types['text/plain']"
711
+ # MIME::Types['text/plain'].each { |t| puts t.to_a.join(", ") }
712
+ #
713
+ # puts "\nMIME::Types[/^image/, :complete => true]"
714
+ # MIME::Types[/^image/, :complete => true].each do |t|
715
+ # puts t.to_a.join(", ")
716
+ # end
717
+ def [](type_id, flags = {})
718
+ @__types__[type_id, flags]
719
+ end
720
+
721
+ # Return the list of MIME::Types which belongs to the file based on
722
+ # its filename extension. If +platform+ is +true+, then only file
723
+ # types that are specific to the current platform will be returned.
724
+ #
725
+ # puts "MIME::Types.type_for('citydesk.xml')
726
+ # => "#{MIME::Types.type_for('citydesk.xml')}"
727
+ # puts "MIME::Types.type_for('citydesk.gif')
728
+ # => "#{MIME::Types.type_for('citydesk.gif')}"
729
+ def type_for(filename, platform = false)
730
+ @__types__.type_for(filename, platform)
731
+ end
732
+
733
+ # A synonym for MIME::Types.type_for
734
+ def of(filename, platform = false)
735
+ @__types__.type_for(filename, platform)
736
+ end
737
+
738
+ # Add one or more MIME::Type objects to the set of known types. Each
739
+ # type should be experimental (e.g., 'application/x-ruby'). If the
740
+ # type is already known, a warning will be displayed.
741
+ #
742
+ # <b>Please inform the maintainer of this module when registered types
743
+ # are missing.</b>
744
+ def add(*types)
745
+ @__types__.add(*types)
746
+ end
747
+ end
748
+ end
749
+ end
750
+
751
+ load File.join(File.dirname(__FILE__), 'types.rb.data')