praxis 0.9 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/CHANGELOG.md +51 -0
  4. data/CONTRIBUTING.md +3 -2
  5. data/Gemfile +1 -1
  6. data/README.md +5 -3
  7. data/lib/api_browser/app/css/main.css +4 -0
  8. data/lib/api_browser/app/js/directives/attribute_description.js +17 -14
  9. data/lib/api_browser/app/js/directives/type_label.js +7 -7
  10. data/lib/api_browser/app/sass/modules/_body.scss +8 -1
  11. data/lib/api_browser/app/views/directives/attribute_description/_example.html +9 -4
  12. data/lib/api_browser/app/views/directives/attribute_table_row/_links.html +4 -3
  13. data/lib/api_browser/app/views/resource/_actions.html +11 -5
  14. data/lib/praxis/action_definition/headers_dsl_compiler.rb +6 -6
  15. data/lib/praxis/action_definition.rb +19 -4
  16. data/lib/praxis/api_definition.rb +3 -3
  17. data/lib/praxis/application.rb +1 -0
  18. data/lib/praxis/bootloader_stages/routing.rb +3 -3
  19. data/lib/praxis/bootloader_stages/warn_unloaded_files.rb +1 -0
  20. data/lib/praxis/callbacks.rb +35 -0
  21. data/lib/praxis/controller.rb +18 -35
  22. data/lib/praxis/file_group.rb +12 -7
  23. data/lib/praxis/links.rb +4 -0
  24. data/lib/praxis/media_type_collection.rb +21 -15
  25. data/lib/praxis/request.rb +2 -7
  26. data/lib/praxis/request_stages/action.rb +10 -7
  27. data/lib/praxis/request_stages/request_stage.rb +45 -10
  28. data/lib/praxis/request_stages/validate.rb +7 -3
  29. data/lib/praxis/responses/http.rb +0 -24
  30. data/lib/praxis/responses/internal_server_error.rb +40 -0
  31. data/lib/praxis/responses/validation_error.rb +1 -0
  32. data/lib/praxis/version.rb +1 -1
  33. data/lib/praxis.rb +5 -24
  34. data/praxis.gemspec +3 -3
  35. data/spec/functional_spec.rb +62 -17
  36. data/spec/praxis/action_definition_spec.rb +14 -6
  37. data/spec/praxis/callbacks_spec.rb +107 -0
  38. data/spec/praxis/controller_spec.rb +0 -38
  39. data/spec/praxis/file_group_spec.rb +5 -0
  40. data/spec/praxis/media_type_collection_spec.rb +20 -7
  41. data/spec/praxis/request_spec.rb +15 -1
  42. data/spec/praxis/request_stage_spec.rb +93 -0
  43. data/spec/praxis/request_stages_action_spec.rb +61 -0
  44. data/spec/praxis/request_stages_validate_spec.rb +1 -1
  45. data/spec/praxis/responses/internal_server_error_spec.rb +51 -0
  46. data/spec/praxis/responses/validation_error_spec.rb +66 -0
  47. data/spec/praxis/router_spec.rb +5 -1
  48. data/spec/spec_app/app/concerns/authenticated.rb +15 -0
  49. data/spec/spec_app/app/concerns/basic_api.rb +12 -0
  50. data/spec/spec_app/app/concerns/log_wrapper.rb +14 -0
  51. data/spec/spec_app/app/controllers/base_class.rb +14 -0
  52. data/spec/spec_app/app/controllers/instances.rb +31 -5
  53. data/spec/spec_app/app/controllers/volumes.rb +17 -0
  54. data/spec/spec_app/config/environment.rb +1 -0
  55. data/spec/spec_app/design/api.rb +3 -3
  56. data/spec/spec_app/design/media_types/volume.rb +1 -1
  57. data/spec/spec_app/design/media_types/volume_snapshot.rb +1 -0
  58. data/spec/spec_app/design/resources/instances.rb +10 -3
  59. data/spec/spec_app/design/resources/volumes.rb +27 -0
  60. data/spec/support/spec_resource_definitions.rb +32 -0
  61. data/tasks/praxis_app_generator.thor +2 -2
  62. metadata +23 -9
@@ -240,6 +240,7 @@ module V1
240
240
  attribute :id, Integer, required: true, min: 0
241
241
  end
242
242
  response :ok
243
+ response :not_found
243
244
  end
244
245
  end
245
246
  end
@@ -292,8 +293,7 @@ module V1
292
293
  if hello
293
294
  response.body = { id: id, data: hello }
294
295
  else
295
- response.status = 404
296
- response.body = { error: '404: Not found' }
296
+ self.response = Praxis::Responses::NotFound.new
297
297
  end
298
298
  response.headers['Content-Type'] = 'application/json'
299
299
  response
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: praxis
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.9'
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep M. Blanquer
@@ -43,16 +43,16 @@ dependencies:
43
43
  name: activesupport
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '4'
48
+ version: '3'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - "~>"
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: '4'
55
+ version: '3'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: ruport
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -101,28 +101,28 @@ dependencies:
101
101
  requirements:
102
102
  - - "~>"
103
103
  - !ruby/object:Gem::Version
104
- version: '1.0'
104
+ version: '1.1'
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
109
  - - "~>"
110
110
  - !ruby/object:Gem::Version
111
- version: '1.0'
111
+ version: '1.1'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: attributor
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
116
  - - "~>"
117
117
  - !ruby/object:Gem::Version
118
- version: '2'
118
+ version: '2.2'
119
119
  type: :runtime
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
123
  - - "~>"
124
124
  - !ruby/object:Gem::Version
125
- version: '2'
125
+ version: '2.2'
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: thor
128
128
  requirement: !ruby/object:Gem::Requirement
@@ -375,6 +375,7 @@ files:
375
375
  - ".ruby-version"
376
376
  - ".simplecov"
377
377
  - ".travis.yml"
378
+ - CHANGELOG.md
378
379
  - CONTRIBUTING.md
379
380
  - Gemfile
380
381
  - Guardfile
@@ -765,6 +766,7 @@ files:
765
766
  - lib/praxis/bootloader_stages/routing.rb
766
767
  - lib/praxis/bootloader_stages/subgroup_loader.rb
767
768
  - lib/praxis/bootloader_stages/warn_unloaded_files.rb
769
+ - lib/praxis/callbacks.rb
768
770
  - lib/praxis/config.rb
769
771
  - lib/praxis/content_type_parser.rb
770
772
  - lib/praxis/controller.rb
@@ -798,6 +800,7 @@ files:
798
800
  - lib/praxis/response_definition.rb
799
801
  - lib/praxis/response_template.rb
800
802
  - lib/praxis/responses/http.rb
803
+ - lib/praxis/responses/internal_server_error.rb
801
804
  - lib/praxis/responses/validation_error.rb
802
805
  - lib/praxis/route.rb
803
806
  - lib/praxis/router.rb
@@ -818,6 +821,7 @@ files:
818
821
  - spec/praxis/api_resource_spec.rb
819
822
  - spec/praxis/application_spec.rb
820
823
  - spec/praxis/bootloader_spec.rb
824
+ - spec/praxis/callbacks_spec.rb
821
825
  - spec/praxis/config_spec.rb
822
826
  - spec/praxis/content_type_parser_spec.rb
823
827
  - spec/praxis/controller_spec.rb
@@ -828,16 +832,25 @@ files:
828
832
  - spec/praxis/media_type_spec.rb
829
833
  - spec/praxis/multipart/parser_spec.rb
830
834
  - spec/praxis/request_spec.rb
835
+ - spec/praxis/request_stage_spec.rb
836
+ - spec/praxis/request_stages_action_spec.rb
831
837
  - spec/praxis/request_stages_validate_spec.rb
832
838
  - spec/praxis/resource_definition_spec.rb
833
839
  - spec/praxis/response_definition_spec.rb
834
840
  - spec/praxis/response_spec.rb
841
+ - spec/praxis/responses/internal_server_error_spec.rb
842
+ - spec/praxis/responses/validation_error_spec.rb
835
843
  - spec/praxis/restful_routing_config_spec.rb
836
844
  - spec/praxis/route_spec.rb
837
845
  - spec/praxis/router_spec.rb
838
846
  - spec/praxis/stage_spec.rb
839
847
  - spec/praxis/types/multipart_spec.rb
848
+ - spec/spec_app/app/concerns/authenticated.rb
849
+ - spec/spec_app/app/concerns/basic_api.rb
850
+ - spec/spec_app/app/concerns/log_wrapper.rb
851
+ - spec/spec_app/app/controllers/base_class.rb
840
852
  - spec/spec_app/app/controllers/instances.rb
853
+ - spec/spec_app/app/controllers/volumes.rb
841
854
  - spec/spec_app/app/responses/bulk_response.rb
842
855
  - spec/spec_app/app/responses/multipart.rb
843
856
  - spec/spec_app/app/responses/other_response.rb
@@ -848,6 +861,7 @@ files:
848
861
  - spec/spec_app/design/media_types/volume.rb
849
862
  - spec/spec_app/design/media_types/volume_snapshot.rb
850
863
  - spec/spec_app/design/resources/instances.rb
864
+ - spec/spec_app/design/resources/volumes.rb
851
865
  - spec/spec_helper.rb
852
866
  - spec/support/spec_media_types.rb
853
867
  - spec/support/spec_resource_definitions.rb