Class: PactBroker::Api::Resources::Pact
Instance Method Summary
collapse
Methods included from Messages
#message, #pluralize, #potential_duplicate_pacticipant_message, #validation_message
#set_post_deletion_response
#finish_request, #handle_webhook_events, #schedule_triggered_webhooks
#potential_duplicate_pacticipants?
Instance Method Details
#allowed_methods ⇒ Object
35
36
37
|
# File 'lib/pact_broker/api/resources/pact.rb', line 35
def allowed_methods
["GET", "PUT", "DELETE", "PATCH", "OPTIONS"]
end
|
#content_types_accepted ⇒ Object
31
32
33
|
# File 'lib/pact_broker/api/resources/pact.rb', line 31
def content_types_accepted
[["application/json", :from_json]]
end
|
#content_types_provided ⇒ Object
22
23
24
25
26
27
28
29
|
# File 'lib/pact_broker/api/resources/pact.rb', line 22
def content_types_provided
[
["application/hal+json", :to_json],
["application/json", :to_json],
["text/html", :to_html],
["application/vnd.pactbrokerextended.v1+json", :to_extended_json]
]
end
|
#delete_resource ⇒ Object
87
88
89
90
91
|
# File 'lib/pact_broker/api/resources/pact.rb', line 87
def delete_resource
pact_service.delete(pact_params)
set_post_deletion_response
true
end
|
#from_json ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# File 'lib/pact_broker/api/resources/pact.rb', line 57
def from_json
response_code = pact ? 200 : 201
handle_webhook_events do
if request.patch? && resource_exists?
@pact = pact_service.merge_pact(pact_params)
else
@pact = pact_service.create_or_update_pact(pact_params)
end
end
response.body = to_json
response_code
end
|
#is_conflict? ⇒ Boolean
39
40
41
42
43
|
# File 'lib/pact_broker/api/resources/pact.rb', line 39
def is_conflict?
merge_conflict = request.patch? && resource_exists? && Pacts::Merger.conflict?(pact.json_content, pact_params.json_content)
potential_duplicate_pacticipants?(pact_params.pacticipant_names) || merge_conflict || disallowed_modification?
end
|
45
46
47
48
49
50
51
|
# File 'lib/pact_broker/api/resources/pact.rb', line 45
def malformed_request?
if request.patch? || request.put?
invalid_json? || contract_validation_errors?(Contracts::PutPactParamsContract.new(pact_params), pact_params)
else
false
end
end
|
#policy_name ⇒ Object
93
94
95
|
# File 'lib/pact_broker/api/resources/pact.rb', line 93
def policy_name
:'pacts::pact'
end
|
#policy_pacticipant ⇒ Object
97
98
99
100
101
102
103
|
# File 'lib/pact_broker/api/resources/pact.rb', line 97
def policy_pacticipant
if resource_exists?
consumer
else
nil
end
end
|
#resource_exists? ⇒ Boolean
53
54
55
|
# File 'lib/pact_broker/api/resources/pact.rb', line 53
def resource_exists?
!!pact
end
|
#to_extended_json ⇒ Object
75
76
77
|
# File 'lib/pact_broker/api/resources/pact.rb', line 75
def to_extended_json
decorator_class(:extended_pact_decorator).new(pact).to_json(decorator_options(metadata: identifier_from_path[:metadata]))
end
|
#to_html ⇒ Object
79
80
81
82
83
84
85
|
# File 'lib/pact_broker/api/resources/pact.rb', line 79
def to_html
PactBroker.configuration.html_pact_renderer.call(
pact, {
base_url: ui_base_url,
badge_url: badge_url_for_latest_pact(pact, ui_base_url)
})
end
|
#to_json ⇒ Object
71
72
73
|
# File 'lib/pact_broker/api/resources/pact.rb', line 71
def to_json
decorator_class(:pact_decorator).new(pact).to_json(decorator_options(metadata: identifier_from_path[:metadata]))
end
|