lib/pact_broker/api/resources/webhook.rb in pact_broker-2.4.2 vs lib/pact_broker/api/resources/webhook.rb in pact_broker-2.5.0

- old
+ new

@@ -5,22 +5,42 @@ module Api module Resources class Webhook < BaseResource + def content_types_accepted + [["application/json", :from_json]] + end + def content_types_provided [["application/hal+json", :to_json]] end def allowed_methods - ["GET", "DELETE"] + ["GET", "PUT", "DELETE"] end def resource_exists? webhook end + def malformed_request? + if request.put? + return invalid_json? || validation_errors?(webhook) + end + false + end + + def from_json + if webhook + @webhook = webhook_service.update_by_uuid uuid, new_webhook + response.body = to_json + else + 404 + end + end + def to_json Decorators::WebhookDecorator.new(webhook).to_json(user_options: { base_url: base_url }) end def delete_resource @@ -28,18 +48,26 @@ true end private + def validation_errors? webhook + errors = webhook_service.errors(new_webhook) + set_json_validation_error_messages(errors.messages) if !errors.empty? + !errors.empty? + end + def webhook @webhook ||= webhook_service.find_by_uuid uuid end + def new_webhook + @new_webhook ||= Decorators::WebhookDecorator.new(PactBroker::Domain::Webhook.new).from_json(request_body) + end + def uuid identifier_from_path[:uuid] end - end end - end end