praxis 0.16.1 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (399) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +0 -1
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +2 -1
  5. data/CHANGELOG.md +41 -0
  6. data/CONTRIBUTING.md +3 -0
  7. data/lib/api_browser/Gruntfile.js +20 -4
  8. data/lib/api_browser/app/bower_components/angular-mocks/.bower.json +6 -6
  9. data/lib/api_browser/app/bower_components/angular-mocks/README.md +11 -5
  10. data/lib/api_browser/app/bower_components/angular-mocks/angular-mocks.js +475 -216
  11. data/lib/api_browser/app/bower_components/angular-mocks/bower.json +2 -2
  12. data/lib/api_browser/app/bower_components/angular-mocks/ngAnimateMock.js +2 -0
  13. data/lib/api_browser/app/bower_components/angular-mocks/ngMock.js +2 -0
  14. data/lib/api_browser/app/bower_components/angular-mocks/ngMockE2E.js +2 -0
  15. data/lib/api_browser/app/bower_components/angular-mocks/package.json +1 -1
  16. data/lib/api_browser/app/bower_components/angular-sanitize/.bower.json +8 -8
  17. data/lib/api_browser/app/bower_components/angular-sanitize/README.md +19 -5
  18. data/lib/api_browser/app/bower_components/angular-sanitize/angular-sanitize.js +186 -127
  19. data/lib/api_browser/app/bower_components/angular-sanitize/angular-sanitize.min.js +12 -10
  20. data/lib/api_browser/app/bower_components/angular-sanitize/angular-sanitize.min.js.map +3 -3
  21. data/lib/api_browser/app/bower_components/angular-sanitize/bower.json +3 -2
  22. data/lib/api_browser/app/bower_components/angular-sanitize/index.js +2 -0
  23. data/lib/api_browser/app/bower_components/angular-sanitize/package.json +26 -0
  24. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/.bower.json +15 -8
  25. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/bower.json +11 -3
  26. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-csp.css +6 -0
  27. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-tpls.js +1177 -453
  28. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-tpls.min.js +4 -4
  29. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap.js +1066 -404
  30. data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap.min.js +3 -3
  31. data/lib/api_browser/app/bower_components/angular-ui-router/.bower.json +5 -6
  32. data/lib/api_browser/app/bower_components/angular-ui-router/CHANGELOG.md +208 -3
  33. data/lib/api_browser/app/bower_components/angular-ui-router/CONTRIBUTING.md +65 -0
  34. data/lib/api_browser/app/bower_components/angular-ui-router/LICENSE +1 -1
  35. data/lib/api_browser/app/bower_components/angular-ui-router/README.md +36 -71
  36. data/lib/api_browser/app/bower_components/angular-ui-router/api/angular-ui-router.d.ts +126 -0
  37. data/lib/api_browser/app/bower_components/angular-ui-router/bower.json +1 -1
  38. data/lib/api_browser/app/bower_components/angular-ui-router/release/angular-ui-router.js +1902 -755
  39. data/lib/api_browser/app/bower_components/angular-ui-router/release/angular-ui-router.min.js +2 -2
  40. data/lib/api_browser/app/bower_components/angular-ui-router/src/common.js +69 -23
  41. data/lib/api_browser/app/bower_components/angular-ui-router/src/resolve.js +15 -5
  42. data/lib/api_browser/app/bower_components/angular-ui-router/src/state.js +556 -295
  43. data/lib/api_browser/app/bower_components/angular-ui-router/src/stateDirectives.js +101 -42
  44. data/lib/api_browser/app/bower_components/angular-ui-router/src/stateFilters.js +6 -2
  45. data/lib/api_browser/app/bower_components/angular-ui-router/src/templateFactory.js +2 -2
  46. data/lib/api_browser/app/bower_components/angular-ui-router/src/urlMatcherFactory.js +822 -97
  47. data/lib/api_browser/app/bower_components/angular-ui-router/src/urlRouter.js +274 -120
  48. data/lib/api_browser/app/bower_components/angular-ui-router/src/viewDirective.js +33 -20
  49. data/lib/api_browser/app/bower_components/angular-ui-router/src/viewScroll.js +1 -1
  50. data/lib/api_browser/app/bower_components/angular/.bower.json +5 -5
  51. data/lib/api_browser/app/bower_components/angular/README.md +2 -5
  52. data/lib/api_browser/app/bower_components/angular/angular-csp.css +5 -8
  53. data/lib/api_browser/app/bower_components/angular/angular.js +12975 -6996
  54. data/lib/api_browser/app/bower_components/angular/angular.min.js +285 -213
  55. data/lib/api_browser/app/bower_components/angular/angular.min.js.gzip +0 -0
  56. data/lib/api_browser/app/bower_components/angular/angular.min.js.map +3 -3
  57. data/lib/api_browser/app/bower_components/angular/bower.json +1 -1
  58. data/lib/api_browser/app/bower_components/angular/index.js +2 -0
  59. data/lib/api_browser/app/bower_components/angular/package.json +2 -2
  60. data/lib/api_browser/app/bower_components/bootstrap-sass/.bower.json +31 -16
  61. data/lib/api_browser/app/bower_components/bootstrap-sass/CHANGELOG.md +108 -0
  62. data/lib/api_browser/app/bower_components/bootstrap-sass/CONTRIBUTING.md +55 -37
  63. data/lib/api_browser/app/bower_components/bootstrap-sass/README.md +147 -206
  64. data/lib/api_browser/app/bower_components/bootstrap-sass/bower.json +19 -8
  65. data/lib/api_browser/app/bower_components/bootstrap-sass/{dist/fonts → vendor/assets/fonts/bootstrap}/glyphicons-halflings-regular.eot +0 -0
  66. data/lib/api_browser/app/bower_components/bootstrap-sass/{dist/fonts → vendor/assets/fonts/bootstrap}/glyphicons-halflings-regular.svg +0 -0
  67. data/lib/api_browser/app/bower_components/bootstrap-sass/{dist/fonts → vendor/assets/fonts/bootstrap}/glyphicons-halflings-regular.ttf +0 -0
  68. data/lib/api_browser/app/bower_components/bootstrap-sass/{dist/fonts → vendor/assets/fonts/bootstrap}/glyphicons-halflings-regular.woff +0 -0
  69. data/lib/api_browser/app/bower_components/bootstrap-sass/vendor/assets/javascripts/bootstrap.js +12 -0
  70. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/affix.js +1 -1
  71. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/alert.js +1 -1
  72. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/button.js +11 -5
  73. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/carousel.js +5 -5
  74. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/collapse.js +1 -1
  75. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/dropdown.js +5 -5
  76. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/modal.js +1 -1
  77. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/popover.js +1 -1
  78. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/scrollspy.js +2 -2
  79. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/tab.js +1 -1
  80. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/tooltip.js +1 -1
  81. data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/transition.js +1 -1
  82. data/lib/api_browser/app/bower_components/bootstrap-sass/vendor/assets/stylesheets/bootstrap.scss +1 -0
  83. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_alerts.scss +0 -0
  84. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_badges.scss +6 -6
  85. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_breadcrumbs.scss +0 -0
  86. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_button-groups.scss +7 -33
  87. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_buttons.scss +2 -5
  88. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_carousel.scss +1 -0
  89. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_close.scss +0 -0
  90. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_code.scss +0 -0
  91. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_component-animations.scss +0 -0
  92. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_dropdowns.scss +3 -8
  93. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_forms.scss +11 -0
  94. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_glyphicons.scss +5 -5
  95. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_grid.scss +12 -26
  96. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_input-groups.scss +1 -1
  97. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_jumbotron.scss +8 -2
  98. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_labels.scss +6 -0
  99. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_list-group.scss +0 -0
  100. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_media.scss +0 -0
  101. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_mixins.scss +38 -51
  102. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_modals.scss +2 -5
  103. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_navbar.scss +41 -53
  104. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_navs.scss +0 -20
  105. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_normalize.scss +0 -0
  106. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_pager.scss +0 -0
  107. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_pagination.scss +0 -0
  108. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_panels.scss +11 -1
  109. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_popovers.scss +0 -0
  110. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_print.scss +0 -0
  111. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_progress-bars.scss +0 -12
  112. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_responsive-utilities.scss +0 -0
  113. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_scaffolding.scss +0 -0
  114. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_tables.scss +5 -18
  115. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_theme.scss +2 -2
  116. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_thumbnails.scss +9 -3
  117. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_tooltip.scss +0 -0
  118. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_type.scss +54 -52
  119. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_utilities.scss +0 -0
  120. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_variables.scss +20 -11
  121. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_wells.scss +0 -0
  122. data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/bootstrap.scss +0 -0
  123. data/lib/api_browser/app/bower_components/lodash/.bower.json +9 -13
  124. data/lib/api_browser/app/bower_components/lodash/LICENSE.txt +3 -3
  125. data/lib/api_browser/app/bower_components/lodash/bower.json +4 -7
  126. data/lib/api_browser/app/bower_components/lodash/lodash.js +12235 -0
  127. data/lib/api_browser/app/bower_components/lodash/lodash.min.js +98 -0
  128. data/lib/api_browser/app/index.html +0 -1
  129. data/lib/api_browser/app/js/app.js +2 -5
  130. data/lib/api_browser/app/js/controllers/action.js +21 -37
  131. data/lib/api_browser/app/js/controllers/controller.js +23 -1
  132. data/lib/api_browser/app/js/controllers/menu.js +46 -14
  133. data/lib/api_browser/app/js/controllers/type.js +2 -9
  134. data/lib/api_browser/app/js/directives/attribute_description.js +15 -5
  135. data/lib/api_browser/app/js/directives/attribute_table.js +6 -6
  136. data/lib/api_browser/app/js/directives/fixed_if_fits.js +20 -0
  137. data/lib/api_browser/app/js/directives/no_container.js +6 -6
  138. data/lib/api_browser/app/js/directives/type_placeholder.js +21 -0
  139. data/lib/api_browser/app/js/factories/Configuration.js +13 -0
  140. data/lib/api_browser/app/js/factories/Documentation.js +0 -3
  141. data/lib/api_browser/app/js/factories/normalize_attributes.js +19 -0
  142. data/lib/api_browser/app/js/factories/template_for.js +113 -0
  143. data/lib/api_browser/app/sass/modules/_body.scss +26 -4
  144. data/lib/api_browser/app/sass/modules/_sidebar.scss +68 -1
  145. data/lib/api_browser/app/sass/praxis.scss +1 -5
  146. data/lib/api_browser/app/sass/variables/_bootstrap-variables.scss +13 -4
  147. data/lib/api_browser/app/views/action.html +13 -17
  148. data/lib/api_browser/app/views/controller.html +32 -4
  149. data/lib/api_browser/app/views/directives/attribute_description.html +1 -1
  150. data/lib/api_browser/app/views/directives/attribute_description/{_default.html → default.html} +0 -0
  151. data/lib/api_browser/app/views/directives/attribute_description/example.html +13 -0
  152. data/lib/api_browser/app/views/directives/attribute_description/headers.html +8 -0
  153. data/lib/api_browser/app/views/directives/attribute_description/member_options.html +4 -0
  154. data/lib/api_browser/app/views/directives/attribute_description/values.html +14 -0
  155. data/lib/api_browser/app/views/directives/attribute_table.html +2 -2
  156. data/lib/api_browser/app/views/home.html +1 -3
  157. data/lib/api_browser/app/views/layout.html +3 -36
  158. data/lib/api_browser/app/views/menu.html +45 -0
  159. data/lib/api_browser/app/views/navbar.html +1 -1
  160. data/lib/api_browser/app/views/type.html +2 -2
  161. data/lib/api_browser/app/views/type/{_details.html → details.html} +6 -6
  162. data/lib/api_browser/app/views/types/embedded/default.html +10 -0
  163. data/lib/api_browser/app/views/types/embedded/links.html +11 -0
  164. data/lib/api_browser/app/views/types/embedded/struct.html +2 -0
  165. data/lib/api_browser/app/views/types/label/link.html +1 -0
  166. data/lib/api_browser/app/views/types/label/primitive.html +1 -0
  167. data/lib/api_browser/app/views/types/label/primitive_collection.html +1 -0
  168. data/lib/api_browser/app/views/types/label/type.html +1 -0
  169. data/lib/api_browser/app/views/types/label/type_collection.html +1 -0
  170. data/lib/api_browser/app/views/{directives/request_body/_default.html → types/standalone/default.html} +1 -1
  171. data/lib/api_browser/app/views/types/standalone/struct.html +1 -0
  172. data/lib/api_browser/bower.json +9 -9
  173. data/lib/api_browser/package.json +1 -1
  174. data/lib/praxis.rb +10 -4
  175. data/lib/praxis/action_definition.rb +16 -4
  176. data/lib/praxis/action_definition/headers_dsl_compiler.rb +5 -2
  177. data/lib/praxis/api_definition.rb +3 -1
  178. data/lib/praxis/api_general_info.rb +49 -5
  179. data/lib/praxis/application.rb +12 -4
  180. data/lib/praxis/bootloader.rb +1 -0
  181. data/lib/praxis/bootloader_stages/environment.rb +2 -0
  182. data/lib/praxis/bootloader_stages/routing.rb +1 -1
  183. data/lib/praxis/bootloader_stages/subgroup_loader.rb +1 -0
  184. data/lib/praxis/exceptions/validation.rb +7 -0
  185. data/lib/praxis/handlers/plain.rb +16 -0
  186. data/lib/praxis/handlers/xml.rb +4 -4
  187. data/lib/praxis/links.rb +13 -3
  188. data/lib/praxis/media_type_identifier.rb +3 -0
  189. data/lib/praxis/multipart/parser.rb +41 -48
  190. data/lib/praxis/multipart/part.rb +196 -3
  191. data/lib/praxis/request.rb +14 -11
  192. data/lib/praxis/request_stages/request_stage.rb +4 -0
  193. data/lib/praxis/request_stages/response.rb +10 -9
  194. data/lib/praxis/request_stages/validate.rb +1 -7
  195. data/lib/praxis/request_stages/validate_params_and_headers.rb +30 -5
  196. data/lib/praxis/request_stages/validate_payload.rb +14 -5
  197. data/lib/praxis/resource_definition.rb +117 -15
  198. data/lib/praxis/response.rb +6 -5
  199. data/lib/praxis/response_definition.rb +51 -5
  200. data/lib/praxis/responses/http.rb +5 -0
  201. data/lib/praxis/responses/multipart_ok.rb +51 -0
  202. data/lib/praxis/responses/validation_error.rb +7 -7
  203. data/lib/praxis/restful_doc_generator.rb +9 -4
  204. data/lib/praxis/route.rb +3 -2
  205. data/lib/praxis/router.rb +26 -16
  206. data/lib/praxis/router/rack.rb +51 -0
  207. data/lib/praxis/router/simple.rb +146 -0
  208. data/lib/praxis/routing_config.rb +2 -2
  209. data/lib/praxis/trait.rb +1 -1
  210. data/lib/praxis/types/fuzzy_hash.rb +49 -0
  211. data/lib/praxis/types/media_type_common.rb +1 -1
  212. data/lib/praxis/types/multipart.rb +47 -12
  213. data/lib/praxis/types/multipart_array.rb +320 -0
  214. data/lib/praxis/types/multipart_array/part_definition.rb +52 -0
  215. data/lib/praxis/validation_handler.rb +10 -0
  216. data/lib/praxis/version.rb +2 -2
  217. data/praxis.gemspec +3 -3
  218. data/spec/api_browser/directives/type_placeholder_spec.js +134 -0
  219. data/spec/api_browser/factories/normalize_attributes_spec.js +97 -0
  220. data/spec/api_browser/factories/template_for_spec.js +67 -0
  221. data/spec/functional_spec.rb +111 -45
  222. data/spec/praxis/action_definition_spec.rb +31 -7
  223. data/spec/praxis/api_definition_spec.rb +2 -2
  224. data/spec/praxis/api_general_info_spec.rb +25 -0
  225. data/spec/praxis/application_spec.rb +24 -11
  226. data/spec/praxis/handlers/xml_spec.rb +55 -33
  227. data/spec/praxis/links_spec.rb +18 -1
  228. data/spec/praxis/media_type_collection_spec.rb +1 -1
  229. data/spec/praxis/media_type_spec.rb +2 -2
  230. data/spec/praxis/multipart/parser_spec.rb +21 -13
  231. data/spec/praxis/plugins/praxis_mapper_plugin_spec.rb +1 -1
  232. data/spec/praxis/request_spec.rb +52 -24
  233. data/spec/praxis/{request_stages_action_spec.rb → request_stages/action_spec.rb} +1 -1
  234. data/spec/praxis/{request_stage_spec.rb → request_stages/request_stage_spec.rb} +0 -0
  235. data/spec/praxis/{request_stages_validate_spec.rb → request_stages/validate_spec.rb} +1 -1
  236. data/spec/praxis/resource_definition_spec.rb +30 -4
  237. data/spec/praxis/response_definition_spec.rb +60 -19
  238. data/spec/praxis/response_spec.rb +2 -2
  239. data/spec/praxis/responses/validation_error_spec.rb +33 -16
  240. data/spec/praxis/route_spec.rb +4 -2
  241. data/spec/praxis/router_spec.rb +28 -12
  242. data/spec/praxis/routing_config_spec.rb +11 -5
  243. data/spec/praxis/types/collection_spec.rb +1 -1
  244. data/spec/praxis/types/fuzzy_hash_spec.rb +20 -0
  245. data/spec/praxis/types/multipart_array/part_definition_spec.rb +5 -0
  246. data/spec/praxis/types/multipart_array_spec.rb +334 -0
  247. data/spec/praxis/types/multipart_spec.rb +14 -5
  248. data/spec/spec_app/app/controllers/instances.rb +20 -10
  249. data/spec/spec_app/app/controllers/volumes.rb +8 -4
  250. data/spec/spec_app/app/responses/bulk_response.rb +0 -6
  251. data/spec/spec_app/config/environment.rb +13 -0
  252. data/spec/spec_app/design/api.rb +7 -10
  253. data/spec/spec_app/design/media_types/instance.rb +3 -1
  254. data/spec/spec_app/design/resources/instances.rb +50 -41
  255. data/spec/spec_app/design/resources/volume_snapshots.rb +39 -0
  256. data/spec/spec_app/design/resources/volumes.rb +11 -6
  257. data/spec/spec_helper.rb +3 -1
  258. metadata +125 -218
  259. data/lib/api_browser/app/bower_components/angular-ui-router/src/compat.js +0 -146
  260. data/lib/api_browser/app/bower_components/bootstrap-sass/CNAME +0 -1
  261. data/lib/api_browser/app/bower_components/bootstrap-sass/DOCS-LICENSE +0 -319
  262. data/lib/api_browser/app/bower_components/bootstrap-sass/Gemfile +0 -5
  263. data/lib/api_browser/app/bower_components/bootstrap-sass/Gemfile.lock +0 -14
  264. data/lib/api_browser/app/bower_components/bootstrap-sass/Gruntfile.js +0 -244
  265. data/lib/api_browser/app/bower_components/bootstrap-sass/LICENSE +0 -176
  266. data/lib/api_browser/app/bower_components/bootstrap-sass/LICENSE-MIT +0 -21
  267. data/lib/api_browser/app/bower_components/bootstrap-sass/Rakefile +0 -44
  268. data/lib/api_browser/app/bower_components/bootstrap-sass/_config.yml +0 -25
  269. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/ads.html +0 -1
  270. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/footer.html +0 -34
  271. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/header.html +0 -42
  272. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-about.html +0 -12
  273. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-components.html +0 -137
  274. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-css.html +0 -99
  275. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-customize.html +0 -40
  276. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-getting-started.html +0 -44
  277. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-javascript.html +0 -88
  278. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-main.html +0 -37
  279. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/old-bs-docs.html +0 -8
  280. data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/social-buttons.html +0 -16
  281. data/lib/api_browser/app/bower_components/bootstrap-sass/_layouts/default.html +0 -79
  282. data/lib/api_browser/app/bower_components/bootstrap-sass/_layouts/home.html +0 -47
  283. data/lib/api_browser/app/bower_components/bootstrap-sass/about.html +0 -93
  284. data/lib/api_browser/app/bower_components/bootstrap-sass/browserstack.json +0 -37
  285. data/lib/api_browser/app/bower_components/bootstrap-sass/components.html +0 -3689
  286. data/lib/api_browser/app/bower_components/bootstrap-sass/composer.json +0 -28
  287. data/lib/api_browser/app/bower_components/bootstrap-sass/css.html +0 -2674
  288. data/lib/api_browser/app/bower_components/bootstrap-sass/customize.html +0 -1715
  289. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap-theme.css +0 -427
  290. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap-theme.min.css +0 -1
  291. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap.css +0 -6350
  292. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap.min.css +0 -1
  293. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/js/bootstrap.js +0 -2002
  294. data/lib/api_browser/app/bower_components/bootstrap-sass/dist/js/bootstrap.min.js +0 -9
  295. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/css/docs.css +0 -1195
  296. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/css/pygments-manni.css +0 -66
  297. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/ico/apple-touch-icon-144-precomposed.png +0 -0
  298. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/ico/favicon.png +0 -0
  299. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/application.js +0 -103
  300. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/customizer.js +0 -332
  301. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/filesaver.js +0 -169
  302. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/holder.js +0 -404
  303. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/ie8-responsive-file-warning.js +0 -12
  304. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/jszip.js +0 -1467
  305. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/less.js +0 -9
  306. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/raw-files.js +0 -3
  307. data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/uglify.js +0 -14
  308. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/carousel/carousel.css +0 -148
  309. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/carousel/index.html +0 -206
  310. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/grid/grid.css +0 -28
  311. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/grid/index.html +0 -148
  312. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron-narrow/index.html +0 -82
  313. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron-narrow/jumbotron-narrow.css +0 -79
  314. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron/index.html +0 -99
  315. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron/jumbotron.css +0 -5
  316. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/justified-nav/index.html +0 -83
  317. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/justified-nav/justified-nav.css +0 -88
  318. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-fixed-top/index.html +0 -91
  319. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-fixed-top/navbar-fixed-top.css +0 -4
  320. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-static-top/index.html +0 -92
  321. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-static-top/navbar-static-top.css +0 -7
  322. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar/index.html +0 -88
  323. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar/navbar.css +0 -8
  324. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/non-responsive/index.html +0 -101
  325. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/non-responsive/non-responsive.css +0 -116
  326. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/offcanvas/index.html +0 -130
  327. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/offcanvas/offcanvas.css +0 -50
  328. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/offcanvas/offcanvas.js +0 -5
  329. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/carousel.jpg +0 -0
  330. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/grid.jpg +0 -0
  331. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/jumbotron-narrow.jpg +0 -0
  332. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/jumbotron.jpg +0 -0
  333. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/justified-nav.jpg +0 -0
  334. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/navbar-fixed.jpg +0 -0
  335. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/navbar-static.jpg +0 -0
  336. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/navbar.jpg +0 -0
  337. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/non-responsive.jpg +0 -0
  338. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/offcanvas.jpg +0 -0
  339. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/sign-in.jpg +0 -0
  340. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/starter-template.jpg +0 -0
  341. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/sticky-footer-navbar.jpg +0 -0
  342. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/sticky-footer.jpg +0 -0
  343. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/theme.jpg +0 -0
  344. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/signin/index.html +0 -50
  345. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/signin/signin.css +0 -40
  346. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/starter-template/index.html +0 -68
  347. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/starter-template/starter-template.css +0 -7
  348. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer-navbar/index.html +0 -91
  349. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer-navbar/sticky-footer-navbar.css +0 -45
  350. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer/index.html +0 -55
  351. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer/sticky-footer.css +0 -38
  352. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/theme/index.html +0 -384
  353. data/lib/api_browser/app/bower_components/bootstrap-sass/examples/theme/theme.css +0 -14
  354. data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.eot +0 -0
  355. data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.svg +0 -229
  356. data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.ttf +0 -0
  357. data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.woff +0 -0
  358. data/lib/api_browser/app/bower_components/bootstrap-sass/getting-started.html +0 -1021
  359. data/lib/api_browser/app/bower_components/bootstrap-sass/index.html +0 -16
  360. data/lib/api_browser/app/bower_components/bootstrap-sass/javascript.html +0 -1983
  361. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/index.html +0 -52
  362. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/affix.js +0 -25
  363. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/alert.js +0 -62
  364. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/button.js +0 -116
  365. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/carousel.js +0 -87
  366. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/collapse.js +0 -164
  367. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/dropdown.js +0 -219
  368. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/modal.js +0 -196
  369. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/phantom.js +0 -69
  370. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/popover.js +0 -133
  371. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/scrollspy.js +0 -37
  372. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/tab.js +0 -86
  373. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/tooltip.js +0 -437
  374. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/transition.js +0 -13
  375. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/vendor/jquery.js +0 -6
  376. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/vendor/qunit.css +0 -232
  377. data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/vendor/qunit.js +0 -1510
  378. data/lib/api_browser/app/bower_components/bootstrap-sass/package.json +0 -40
  379. data/lib/api_browser/app/bower_components/lodash/dist/lodash.compat.js +0 -7157
  380. data/lib/api_browser/app/bower_components/lodash/dist/lodash.compat.min.js +0 -61
  381. data/lib/api_browser/app/bower_components/lodash/dist/lodash.js +0 -6785
  382. data/lib/api_browser/app/bower_components/lodash/dist/lodash.min.js +0 -56
  383. data/lib/api_browser/app/bower_components/lodash/dist/lodash.underscore.js +0 -4979
  384. data/lib/api_browser/app/bower_components/lodash/dist/lodash.underscore.min.js +0 -39
  385. data/lib/api_browser/app/js/directives/attribute_table_row.js +0 -17
  386. data/lib/api_browser/app/js/directives/request_body.js +0 -25
  387. data/lib/api_browser/app/js/directives/request_headers.js +0 -17
  388. data/lib/api_browser/app/js/directives/request_parameters.js +0 -17
  389. data/lib/api_browser/app/js/directives/type_label.js +0 -52
  390. data/lib/api_browser/app/js/factories/PayloadTemplates.js +0 -10
  391. data/lib/api_browser/app/js/factories/TemplateProvider.js +0 -45
  392. data/lib/api_browser/app/js/factories/TypeTemplates.js +0 -11
  393. data/lib/api_browser/app/views/directives/attribute_description/_example.html +0 -13
  394. data/lib/api_browser/app/views/directives/attribute_description/_headers.html +0 -8
  395. data/lib/api_browser/app/views/directives/attribute_table_row/_default.html +0 -10
  396. data/lib/api_browser/app/views/directives/attribute_table_row/_links.html +0 -11
  397. data/lib/api_browser/app/views/directives/attribute_table_row/_struct.html +0 -2
  398. data/lib/api_browser/app/views/directives/request_body/_struct.html +0 -1
  399. data/lib/api_browser/app/views/resource/_actions.html +0 -27
@@ -1,2 +1,2 @@
1
- <p ng-bind-html="attribute.description | markdown"></p>
1
+ <div ng-bind-html="attribute.description | markdown"></div>
2
2
  <dl></dl>
@@ -0,0 +1,13 @@
1
+ <dt ng-if="row.value.length < 50">Example</dt>
2
+ <dt ng-if="row.value.length >= 50">
3
+ Example (<a ng-init="row.isCollapsed = true" ng-click="row.isCollapsed = !row.isCollapsed">{{row.isCollapsed? 'show' : 'hide'}}</a>)
4
+ </dt>
5
+ </dt>
6
+
7
+
8
+ <dd ng-if="row.value.length <= 50">
9
+ <code ng-class="{hide: false}">{{row.value}}</code>
10
+ </dd>
11
+ <dd ng-if="row.value.length > 50">
12
+ <pre ng-class="{hide: row.isCollapsed}">{{row.value}}</pre>
13
+ </dd>
@@ -0,0 +1,8 @@
1
+ <dt ng-hide="row.value | isEmpty">{{row.name}}</dt>
2
+ <dd ng-hide="row.value | isEmpty">
3
+ <div ng-repeat="(k,v) in row.value">
4
+ <span>{{k}}:</span>
5
+ <span ng-if="v.value === true"><em>Any value</em></span>
6
+ <span ng-if="v.value !== true">{{v.value}}</span>
7
+ </div>
8
+ </dd>
@@ -0,0 +1,4 @@
1
+ <dt>Member type values</dt>
2
+ <dd class="well">
3
+ <attribute-description attribute="{options: row.value, description: 'These settings apply to the contained type:'}"></attribute-description>
4
+ </dd>
@@ -0,0 +1,14 @@
1
+ <dt ng-if="row.value.length == 1">Value</dt>
2
+ <dt ng-if="row.value.length < 5 && row.value.length > 1">Possible values</dt>
3
+ <dt ng-if="row.value.length >= 5">
4
+ Possible values (<a ng-init="row.isCollapsed = true" ng-click="row.isCollapsed = !row.isCollapsed">{{row.isCollapsed? 'show' : 'hide'}}</a>)
5
+ </dt>
6
+ </dt>
7
+
8
+ <dd ng-if="row.value.length == 1"><code>{{row.value[0]}}</code> (this field will always hold this value)</dd>
9
+ <dd ng-if="row.value.length > 1">
10
+ <div ng-class="{hide: !row.isCollapsed || row.value.length < 5}">{{row.value.slice(0, 4).join(', ')}}, <a ng-init="row.isCollapsed = true" ng-click="row.isCollapsed = !row.isCollapsed">and {{row.value.length - 4}} more</a>.</div>
11
+ <ul ng-class="{hide: row.isCollapsed && row.value.length >= 5}">
12
+ <li ng-repeat="v in row.value"><code>{{v}}</code></li>
13
+ </ul>
14
+ </dd>
@@ -1,5 +1,5 @@
1
1
  <div class="table-responsive">
2
- <table class="table table-striped">
2
+ <table class="table table-striped table-bordered">
3
3
  <thead>
4
4
  <tr>
5
5
  <th>Attribute</th>
@@ -11,7 +11,7 @@
11
11
  <tr ng-if="g.name && g.attributes.length">
12
12
  <th colspan="3">{{g.name}}</th>
13
13
  </tr>
14
- <tr rs-attribute-table-row ng-repeat="item in g.attributes" name="item.name" attribute="item" ></tr>
14
+ <tr type-placeholder ng-repeat="item in g.attributes" type="item.type" template="embedded" name="item.name" details="item"></tr>
15
15
  </tbody>
16
16
  </table>
17
17
  </div>
@@ -1,7 +1,5 @@
1
- <!-- Home -->
2
-
3
1
  <div class="jumbotron">
4
2
  <h2>
5
- API Doc Browser
3
+ {{:: title}}
6
4
  </h2>
7
5
  </div>
@@ -1,41 +1,8 @@
1
- <!-- layout -->
2
- <ng-include src="'views/navbar.html'"></ng-include>
1
+ <ng-include src="'views/navbar.html'"></ng-include>
3
2
 
4
3
  <div class="container" ng-cloak>
5
4
  <div class="row">
6
- <div class="col-sm-3" ng-controller="MenuCtrl">
7
- <div class="sidebar">
8
- <div class="row">
9
- <div class="col-sm-12">
10
- <p>
11
- <div class="btn-group" dropdown is-open="status.isopen">
12
- <button type="button" class="btn btn-success dropdown-toggle" ng-disabled="disabled">
13
- API Version: {{selectedVersion}} <span class="caret"></span>
14
- </button>
15
- <ul class="dropdown-menu col-sm-12" role="menu">
16
- <li ng-repeat="version in versions">
17
- <a ng-click="select(version)" dropdown-toggle>{{version}}</a>
18
- </li>
19
- </ul>
20
- </div>
21
- </p>
22
- </div>
23
- </div>
24
- <div class="row">
25
- <div class="col-sm-12">
26
- <div class="list-group">
27
- <a ng-repeat="link in availableLinks()"
28
- href="{{link.stateRef}}"
29
- class="list-group-item"
30
- ng-class="{active: link.typeName == currentType}">
31
- {{ link.name }}
32
- </a>
33
- </div>
34
- </div>
35
- </div>
36
- </div>
37
- </div>
38
- <div class="col-sm-9" ui-view="">
39
- </div>
5
+ <div class="col-sm-3" ng-controller="MenuCtrl" ng-include="'views/menu.html'"></div>
6
+ <div class="col-sm-9" ui-view=""></div>
40
7
  </div>
41
8
  </div>
@@ -0,0 +1,45 @@
1
+ <div class="sidebar fixed-if-fits hidden-print">
2
+ <div class="row">
3
+ <div class="col-sm-12">
4
+ <p>
5
+ <div class="btn-group" dropdown is-open="status.isopen">
6
+ <button type="button" class="btn btn-success dropdown-toggle" ng-disabled="disabled">
7
+ {{:: versionLabel}}: {{selectedVersion}} <span class="caret"></span>
8
+ </button>
9
+ <ul class="dropdown-menu col-sm-12" role="menu">
10
+ <li ng-repeat="version in versions">
11
+ <a ng-click="select(version)" dropdown-toggle>{{version}}</a>
12
+ </li>
13
+ </ul>
14
+ </div>
15
+ </p>
16
+ </div>
17
+ </div>
18
+ <div class="row">
19
+ <div class="col-sm-12">
20
+ <tabset justified="true" class="tab-list-group">
21
+ <tab heading="Resources" active="active.resources">
22
+ <div class="list-group">
23
+ <a ng-repeat="link in availableResources()"
24
+ href="{{link.stateRef}}"
25
+ class="list-group-item"
26
+ ng-hide="expandChildren && link.parent && selectedGrandfatherType != link.grandfather"
27
+ ng-class="{active: link.typeName == currentType, 'child-resource': link.parent, 'group-selected': selectedGrandfatherType == link.grandfather}">
28
+ {{ link.name }}
29
+ </a>
30
+ </div>
31
+ </tab>
32
+ <tab heading="Schemas" active="active.schemas">
33
+ <div class="list-group">
34
+ <a ng-repeat="link in availableOthers()"
35
+ href="{{link.stateRef}}"
36
+ class="list-group-item"
37
+ ng-class="{active: link.typeName == currentType}">
38
+ {{ link.name }}
39
+ </a>
40
+ </div>
41
+ </tab>
42
+ </tabset>
43
+ </div>
44
+ </div>
45
+ </div>
@@ -2,7 +2,7 @@
2
2
  <div class="navbar navbar-default navbar-fixed-top" role="navigation">
3
3
  <div class="container">
4
4
  <div class="navbar-header">
5
- <a class="navbar-brand" href="#">API Browser</a>
5
+ <a class="navbar-brand" href="#">{{:: title}}</a>
6
6
  </div>
7
7
  </div>
8
8
  </div>
@@ -11,7 +11,7 @@
11
11
  </h1>
12
12
  </div>
13
13
  </div>
14
- <div class="row" ng-if="controllers">
14
+ <div class="row" ng-if="controllers.length">
15
15
  <div class="col-lg-12">
16
16
  <h3>Served by</h3>
17
17
  <ul>
@@ -21,5 +21,5 @@
21
21
  </ul>
22
22
  </div>
23
23
  </div>
24
- <ng-include src="'views/type/_details.html'" />
24
+ <ng-include src="'views/type/details.html'" />
25
25
  </div>
@@ -1,10 +1,10 @@
1
1
  <div class="row" ng-if="type">
2
2
  <div class="col-lg-12">
3
- <h2>Media Type</h2>
4
- <p ng-if="type.identifier"><b>Identifier: {{ type.identifier }}</b></p>
5
- <p ng-if="type.description" ng-bind-html="type.description | markdown"></p>
6
-
7
- <rs-attribute-table attributes="type.attributes"></rs-attribute-table>
3
+ <h2>Schema</h2>
4
+ <p ng-if="type.identifier"><b>Media-type: {{ type.identifier }}</b></p>
5
+ <div ng-if="type.description" ng-bind-html="type.description | markdown"></div>
6
+
7
+ <attribute-table attributes="type.attributes"></attribute-table>
8
8
  </div>
9
9
  </div>
10
10
  <div class="row" ng-if="views.length">
@@ -16,7 +16,7 @@
16
16
  <div class="col-md-4">
17
17
  <h4>Attributes</h4>
18
18
  <ul>
19
- <li ng-repeat="(name,value) in view.attributes">{{name}}</li>
19
+ <li ng-repeat="(name,value) in view.attributes">{{name}} <span class="label label-default" ng-if="value.view">rendered with {{value.view}} view</span></li>
20
20
  </ul>
21
21
  </div>
22
22
  <div class="col-md-8">
@@ -0,0 +1,10 @@
1
+ <tr>
2
+ <td ng-bind-html="name | attributeName">
3
+ </td>
4
+ <td>
5
+ <type-placeholder template="label" type="type"></type-placeholder>
6
+ </td>
7
+ <td>
8
+ <attribute-description attribute="details"></attribute-description>
9
+ </td>
10
+ </tr>
@@ -0,0 +1,11 @@
1
+ <tr ng-include="'views/types/embedded/default.html'" no-container></tr>
2
+ <tr ng-repeat="(attribute_name,attribute) in attribute.type.attributes">
3
+ <td ng-bind-html="name + '.' + attribute_name | attributeName">
4
+ </td>
5
+ <td>
6
+ <type-placeholder template="label" type="attribute.type"></type-placeholder>
7
+ </td>
8
+ <td>
9
+ <attribute-description attribute="attribute"></attribute-description>
10
+ </td>
11
+ </tr>
@@ -0,0 +1,2 @@
1
+ <tr ng-include="'views/types/embedded/default.html'" no-container></tr>
2
+ <tr type-placeholder ng-repeat="(k,v) in type.attributes" type="v.type" template="embedded" name="name + '.' + k" details="v"></tr>
@@ -0,0 +1 @@
1
+ <span>Link&nbsp;[&nbsp;<a ui-sref="root.type({version: apiVersion, type: type.link_to})">{{type.link_to | resourceName}}</a>&nbsp;]</span>
@@ -0,0 +1 @@
1
+ <span>{{type.name}}</span>
@@ -0,0 +1 @@
1
+ <span>Collection&nbsp;[&nbsp;{{type.member_attribute.type.name}}&nbsp;]</a>
@@ -0,0 +1 @@
1
+ <a ui-sref="root.type({version: apiVersion, type: type.id})">{{type.name | resourceName}}</a>
@@ -0,0 +1 @@
1
+ <span>Collection&nbsp;[&nbsp;<a ui-sref="root.type({version: apiVersion, type: type.member_attribute.type.id})">{{type.member_attribute.type.name | resourceName}}</a>&nbsp;]</span>
@@ -10,7 +10,7 @@
10
10
  <tr>
11
11
  <td>{{payload.type.name}}</td>
12
12
  <td>
13
- <rs-attribute-description attribute="{options:{example:payload.example,typeData:payload.type}}"></rs-attribute-description>
13
+ <attribute-description attribute="{options:{example:payload.example,typeData:payload.type}}"></attribute-description>
14
14
  </td>
15
15
  </tr>
16
16
  </tbody>
@@ -0,0 +1 @@
1
+ <attribute-table attributes="details" show-groups="true"></attribute-table>
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "api_doc_browser",
3
- "version": "0.0.0",
3
+ "version": "1.0.0",
4
4
  "authors": [
5
- "Euge Gimelberg <eugene@rightscale.com>"
5
+ "Euge Gimelberg <eugene@rightscale.com>",
6
+ "Jakub Hampl <jakub.hampl@rightscale.com>"
6
7
  ],
7
8
  "license": "MIT",
8
9
  "private": true,
@@ -15,17 +16,16 @@
15
16
  "tests"
16
17
  ],
17
18
  "dependencies": {
18
- "angular": "~1.2.6",
19
+ "angular": "~1.4.0",
19
20
  "jquery": "2.1.1",
20
- "lodash": "~2.4.1",
21
+ "lodash": "^3.7.0",
21
22
  "bootstrap-sass": "~3.0.2",
22
23
  "angular-ui-router": "~0.2.10",
23
- "angular-ui-bootstrap-bower": "~0.11.0",
24
- "angular-sanitize": "~1.2.16",
25
- "showdown": "~0.4.0",
26
- "angular-sanitize": "~1.2.16"
24
+ "angular-ui-bootstrap-bower": "~0.13.0",
25
+ "angular-sanitize": "~1.4",
26
+ "showdown": "~0.4.0"
27
27
  },
28
28
  "devDependencies": {
29
- "angular-mocks": "~1.2.6"
29
+ "angular-mocks": "~1.4.0"
30
30
  }
31
31
  }
@@ -22,7 +22,7 @@
22
22
  "grunt-contrib-watch": "~0.5.3",
23
23
  "grunt-file-blocks": "^0.3.0",
24
24
  "grunt-filerev": "^0.2.1",
25
- "grunt-ngmin": "0.0.3",
25
+ "grunt-ng-annotate": "^0.10.0",
26
26
  "grunt-sass": "^0.18.0",
27
27
  "grunt-usemin": "^2.1.1",
28
28
  "grunt-wiredep": "^1.7.0",
data/lib/praxis.rb CHANGED
@@ -26,6 +26,7 @@ module Praxis
26
26
  autoload :Callbacks, 'praxis/callbacks'
27
27
  autoload :Dispatcher, 'praxis/dispatcher'
28
28
  autoload :ErrorHandler, 'praxis/error_handler'
29
+ autoload :ValidationHandler, 'praxis/validation_handler'
29
30
  autoload :Exception, 'praxis/exception'
30
31
  autoload :FileGroup,'praxis/file_group'
31
32
  autoload :Plugin, 'praxis/plugin'
@@ -49,7 +50,9 @@ module Praxis
49
50
 
50
51
  # types
51
52
  module Types
53
+ autoload :FuzzyHash, 'praxis/types/fuzzy_hash'
52
54
  autoload :MediaTypeCommon, 'praxis/types/media_type_common'
55
+ autoload :MultipartArray, 'praxis/types/multipart_array'
53
56
  end
54
57
 
55
58
  autoload :Links, 'praxis/links'
@@ -77,12 +80,9 @@ module Praxis
77
80
  autoload :Validation, 'praxis/exceptions/validation'
78
81
  end
79
82
 
80
- # Avoid loading responses (and templates) lazily as they need to be registered in time
81
- require 'praxis/responses/http'
82
- require 'praxis/responses/internal_server_error'
83
- require 'praxis/responses/validation_error'
84
83
 
85
84
  module Handlers
85
+ autoload :Plain, 'praxis/handlers/plain'
86
86
  autoload :JSON, 'praxis/handlers/json'
87
87
  autoload :WWWForm, 'praxis/handlers/www_form'
88
88
  autoload :XML, 'praxis/handlers/xml'
@@ -112,4 +112,10 @@ module Praxis
112
112
  autoload :Response, 'praxis/request_stages/response'
113
113
  end
114
114
 
115
+ # Avoid loading responses (and templates) lazily as they need to be registered in time
116
+ require 'praxis/responses/http'
117
+ require 'praxis/responses/internal_server_error'
118
+ require 'praxis/responses/validation_error'
119
+ require 'praxis/responses/multipart_ok'
120
+
115
121
  end
@@ -49,10 +49,10 @@ module Praxis
49
49
  version = resource_definition.version
50
50
  api_info = ApiDefinition.instance.info(resource_definition.version)
51
51
 
52
- version_prefix = "#{api_info.base_path}#{resource_definition.version_prefix}"
53
- prefix = Array(resource_definition.prefix)
52
+ route_base = "#{api_info.base_path}#{resource_definition.version_prefix}"
53
+ prefix = Array(resource_definition.routing_prefix)
54
54
 
55
- @routing_config = RoutingConfig.new(version: version, base: version_prefix, prefix: prefix)
55
+ @routing_config = RoutingConfig.new(version: version, base: route_base, prefix: prefix)
56
56
 
57
57
  resource_definition.traits.each do |trait|
58
58
  self.trait(trait)
@@ -79,7 +79,17 @@ module Praxis
79
79
  attribute.type.attributes(options, &block)
80
80
  end
81
81
 
82
- def response(name, **args)
82
+ def response(name, type=nil, **args, &block)
83
+ if type
84
+ # should verify type is a media type
85
+
86
+ if block_given?
87
+ type = type.construct(block)
88
+ end
89
+
90
+ args[:media_type] = type
91
+ end
92
+
83
93
  template = ApiDefinition.instance.response(name)
84
94
  @responses[name] = template.compile(self, **args)
85
95
  end
@@ -141,6 +151,8 @@ module Praxis
141
151
  @headers = create_attribute(type,
142
152
  dsl_compiler: HeadersDSLCompiler, case_insensitive_load: true,
143
153
  **opts, &block)
154
+
155
+ @headers
144
156
  end
145
157
  @precomputed_header_keys_for_rack = nil #clear memoized data
146
158
  end
@@ -11,7 +11,11 @@ module Praxis
11
11
  # required: true => to make it required
12
12
  # description: "lorem ipsum" => to describe it (like any other attribute)
13
13
 
14
- def header(name, val=nil, **options )
14
+ def header(name, val=nil, **options)
15
+ if val.kind_of?(Class)
16
+ return key name, val, **options
17
+ end
18
+
15
19
  case val
16
20
  when Regexp
17
21
  options[:regexp] = val
@@ -21,7 +25,6 @@ module Praxis
21
25
  # Defining the existence without any other options can only mean that it is required (otherwise it is a useless definition)
22
26
  options[:required] = true if options.empty?
23
27
  end
24
- #orig_attribute name.upcase , String, options
25
28
  key name , String, options
26
29
  end
27
30
 
@@ -12,6 +12,8 @@ module Praxis
12
12
  attr_reader :infos
13
13
  attr_reader :global_info
14
14
 
15
+ attr_accessor :versioning_scheme
16
+
15
17
  def self.define(&block)
16
18
  if block.arity == 0
17
19
  self.instance.instance_eval(&block)
@@ -28,7 +30,7 @@ module Praxis
28
30
  @global_info = ApiGeneralInfo.new
29
31
 
30
32
  @infos = Hash.new do |hash, version|
31
- hash[version] = ApiGeneralInfo.new(@global_info)
33
+ hash[version] = ApiGeneralInfo.new(@global_info, version: version)
32
34
  end
33
35
  end
34
36