Skip to content

Commit cdb933d

Browse files
authored
Merge pull request #801 from cerebris/rework_mime_type_checks
Refactor controller filters
2 parents 8a2bd30 + 05f873c commit cdb933d

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

lib/jsonapi/acts_as_resource_controller.rb

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ module ActsAsResourceController
88
def self.included(base)
99
base.extend ClassMethods
1010
base.include Callbacks
11-
base.before_action :ensure_correct_media_type, only: [:create, :update, :create_relationship, :update_relationship]
12-
base.before_action :ensure_valid_accept_media_type
1311
base.cattr_reader :server_error_callbacks
1412
base.define_jsonapi_resources_callbacks :process_operations
1513
end
@@ -27,18 +25,22 @@ def show_relationship
2725
end
2826

2927
def create
28+
return unless verify_content_type_header
3029
process_request
3130
end
3231

3332
def create_relationship
33+
return unless verify_content_type_header
3434
process_request
3535
end
3636

3737
def update_relationship
38+
return unless verify_content_type_header
3839
process_request
3940
end
4041

4142
def update
43+
return unless verify_content_type_header
4244
process_request
4345
end
4446

@@ -59,6 +61,8 @@ def get_related_resources
5961
end
6062

6163
def process_request
64+
return unless verify_accept_header
65+
6266
@request = JSONAPI::RequestParser.new(params, context: context,
6367
key_formatter: key_formatter,
6468
server_error_callbacks: (self.class.server_error_callbacks || []))
@@ -134,20 +138,24 @@ def resource_klass_name
134138
@resource_klass_name ||= "#{self.class.name.underscore.sub(/_controller$/, '').singularize}_resource".camelize
135139
end
136140

137-
def ensure_correct_media_type
141+
def verify_content_type_header
138142
unless request.content_type == JSONAPI::MEDIA_TYPE
139143
fail JSONAPI::Exceptions::UnsupportedMediaTypeError.new(request.content_type)
140144
end
145+
true
141146
rescue => e
142147
handle_exceptions(e)
148+
false
143149
end
144150

145-
def ensure_valid_accept_media_type
151+
def verify_accept_header
146152
unless valid_accept_media_type?
147153
fail JSONAPI::Exceptions::NotAcceptableError.new(request.accept)
148154
end
155+
true
149156
rescue => e
150157
handle_exceptions(e)
158+
false
151159
end
152160

153161
def valid_accept_media_type?

0 commit comments

Comments
 (0)