5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# File 'app/controllers/zero_rails_adapter/mutations_controller.rb', line 5
def create
verify_request!
identity = authenticate!
zero_request = Request.parse(parsed_body, query: request.query_parameters)
context = Context.new(identity:, request: zero_request, rack_request: request)
render json: Processor.new(request: zero_request, context:).call, status: :ok
rescue JSON::ParserError => error
render json: push_failed("parse", "Failed to parse push body: #{error.message}", []),
status: :ok
rescue ParseError => error
subject = error.source == :query ? "push query parameters" : "push body"
render json: push_failed("parse", "Failed to parse #{subject}: #{error.message}", error.mutation_ids),
status: :ok
rescue UnsupportedPushVersionError => error
render json: push_failed("unsupportedPushVersion", error.message, error.mutation_ids),
status: :ok
rescue UnauthorizedError => error
render json: authentication_error(error), status: :unauthorized
rescue ForbiddenError => error
render json: authentication_error(error), status: :forbidden
rescue StandardError => error
ZeroRailsAdapter.configuration.logger&.error(
"ZeroRailsAdapter request failed: #{error.class}: #{error.message}"
)
render json: push_failed(
"internal",
Processor::INTERNAL_ERROR_MESSAGE,
[]
), status: :internal_server_error
end
|