Module: JSONAPI::ActsAsResourceController
- Included in:
- ResourceController
- Defined in:
- lib/jsonapi/acts_as_resource_controller.rb
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- MEDIA_TYPE_MATCHER =
/.+".+"[^,]*|[^,]+/
- ALL_MEDIA_TYPES =
'*/*'
Class Method Summary collapse
Instance Method Summary collapse
- #create ⇒ Object
- #create_relationship ⇒ Object
- #destroy ⇒ Object
- #destroy_relationship ⇒ Object
- #get_related_resource ⇒ Object
- #get_related_resources ⇒ Object
- #index ⇒ Object
- #operation_dispatcher ⇒ Object
- #process_operations(operations) ⇒ Object
- #process_request ⇒ Object
- #rollback ⇒ Object
- #show ⇒ Object
- #show_relationship ⇒ Object
- #transaction ⇒ Object
- #update ⇒ Object
- #update_relationship ⇒ Object
Class Method Details
.included(base) ⇒ Object
8 9 10 11 12 13 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 8 def self.included(base) base.extend ClassMethods base.include Callbacks base.cattr_reader :server_error_callbacks base.define_jsonapi_resources_callbacks :process_operations end |
Instance Method Details
#create ⇒ Object
27 28 29 30 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 27 def create return unless verify_content_type_header process_request end |
#create_relationship ⇒ Object
32 33 34 35 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 32 def create_relationship return unless verify_content_type_header process_request end |
#destroy ⇒ Object
47 48 49 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 47 def destroy process_request end |
#destroy_relationship ⇒ Object
51 52 53 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 51 def destroy_relationship process_request end |
#get_related_resource ⇒ Object
55 56 57 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 55 def process_request end |
#get_related_resources ⇒ Object
59 60 61 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 59 def process_request end |
#index ⇒ Object
15 16 17 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 15 def index process_request end |
#operation_dispatcher ⇒ Object
104 105 106 107 108 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 104 def operation_dispatcher @operation_dispatcher ||= JSONAPI::OperationDispatcher.new(transaction: transaction, rollback: rollback, server_error_callbacks: @request.server_error_callbacks) end |
#process_operations(operations) ⇒ Object
84 85 86 87 88 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 84 def process_operations(operations) run_callbacks :process_operations do operation_dispatcher.process(operations) end end |
#process_request ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 63 def process_request return unless verify_accept_header @request = JSONAPI::RequestParser.new(params, context: context, key_formatter: key_formatter, server_error_callbacks: (self.class.server_error_callbacks || [])) unless @request.errors.empty? render_errors(@request.errors) else operations = @request.operations unless JSONAPI.configuration.resource_cache.nil? operations.each {|op| op.[:cache_serializer] = resource_serializer } end results = process_operations(operations) render_results(results) end rescue => e handle_exceptions(e) end |
#rollback ⇒ Object
98 99 100 101 102 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 98 def rollback lambda { fail ActiveRecord::Rollback } end |
#show ⇒ Object
19 20 21 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 19 def show process_request end |
#show_relationship ⇒ Object
23 24 25 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 23 def show_relationship process_request end |
#transaction ⇒ Object
90 91 92 93 94 95 96 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 90 def transaction lambda { |&block| ActiveRecord::Base.transaction do block.yield end } end |
#update ⇒ Object
42 43 44 45 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 42 def update return unless verify_content_type_header process_request end |
#update_relationship ⇒ Object
37 38 39 40 |
# File 'lib/jsonapi/acts_as_resource_controller.rb', line 37 def update_relationship return unless verify_content_type_header process_request end |