Class: PactBroker::Api::Resources::BaseResource
- Inherits:
-
Webmachine::Resource
- Object
- Webmachine::Resource
- PactBroker::Api::Resources::BaseResource
show all
- Includes:
- PactBrokerUrls, Logging, Services
- Defined in:
- lib/pact_broker/api/resources/base_resource.rb
Direct Known Subclasses
Group, Index, LatestPact, LatestPacts, LatestProviderPacts, LatestVerificationsForConsumerVersion, Pact, PactContentDiff, PactVersions, PactWebhooks, Pacticipant, Pacticipants, PreviousDistinctPactVersion, Relationships, Tag, Verification, Verifications, Version, Versions, Webhook, WebhookExecution, Webhooks
Constant Summary
Constants included
from Logging
Logging::LOG_DIR, Logging::LOG_FILE_NAME
Instance Method Summary
collapse
Methods included from Logging
included, #log_error, #logger, #logger=
#hal_browser_url, #latest_pact_url, #latest_pacts_url, #latest_verifications_for_consumer_version_url, #latest_version_url, #new_verification_url, #pact_url, #pact_url_from_params, #pact_version_url, #pact_versions_url, #pacticipant_url, #pacticipants_url, #previous_distinct_diff_url, #previous_distinct_pact_version_url, #tag_url, #tags_url, #url_encode, #verification_publication_url, #verification_url, #version_url, #versions_url, #webhook_execution_url, #webhook_url, #webhooks_for_pact_url, #webhooks_url
Methods included from Services
#group_service, #pact_service, #pacticipant_service, #tag_service, #verification_service, #version_service, #webhook_service
Instance Method Details
#base_url ⇒ Object
42
43
44
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 42
def base_url
request.base_uri.to_s.chomp('/')
end
|
#charsets_provided ⇒ Object
46
47
48
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 46
def charsets_provided
[['utf-8', :encode]]
end
|
#consumer_name ⇒ Object
93
94
95
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 93
def consumer_name
identifier_from_path[:consumer_name]
end
|
#contract_validation_errors?(contract, params) ⇒ Boolean
126
127
128
129
130
131
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 126
def contract_validation_errors? contract, params
if (invalid = !contract.validate(params))
set_json_validation_error_messages contract.errors.messages
end
invalid
end
|
#decorator_context(options = {}) ⇒ Object
59
60
61
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 59
def decorator_context options = {}
Decorators::DecoratorContext.new(base_url, resource_url, options)
end
|
#encode(body) ⇒ Object
We only use utf-8 so leave encoding as it is
51
52
53
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 51
def encode(body)
body
end
|
#handle_exception(e) ⇒ Object
#identifier_from_path ⇒ Object
Also known as:
path_info
34
35
36
37
38
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 34
def identifier_from_path
request.path_info.each_with_object({}) do | pair, hash|
hash[pair.first] = URI.decode(pair.last)
end
end
|
#invalid_json? ⇒ Boolean
105
106
107
108
109
110
111
112
113
114
115
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 105
def invalid_json?
begin
JSON.parse(request_body, PACT_PARSING_OPTIONS) false
rescue StandardError => e
logger.error "Error parsing JSON #{e} - #{request_body}"
set_json_error_message "Error parsing JSON - #{e.message}"
response.['Content-Type'] = 'application/json;charset=utf-8'
true
end
end
|
#pacticipant_name ⇒ Object
101
102
103
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 101
def pacticipant_name
identifier_from_path[:pacticipant_name]
end
|
#params ⇒ Object
67
68
69
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 67
def params
@params ||= JSON.parse(request.body.to_s, {symbolize_names: true}.merge(PACT_PARSING_OPTIONS))
end
|
#params_with_string_keys ⇒ Object
71
72
73
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 71
def params_with_string_keys
JSON.parse(request.body.to_s, {symbolize_names: false}.merge(PACT_PARSING_OPTIONS))
end
|
#provider_name ⇒ Object
97
98
99
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 97
def provider_name
identifier_from_path[:provider_name]
end
|
#request_body ⇒ Object
89
90
91
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 89
def request_body
@request_body ||= request.body.to_s
end
|
#resource_url ⇒ Object
55
56
57
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 55
def resource_url
request.uri.to_s
end
|
#set_json_error_message(message) ⇒ Object
79
80
81
82
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 79
def set_json_error_message message
response.['Content-Type'] = 'application/json;charset=utf-8'
response.body = {error: message}.to_json
end
|
#set_json_validation_error_messages(errors) ⇒ Object
84
85
86
87
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 84
def set_json_validation_error_messages errors
response.['Content-Type'] = 'application/json;charset=utf-8'
response.body = {errors: errors}.to_json
end
|
#validation_errors?(model) ⇒ Boolean
117
118
119
120
121
122
123
124
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 117
def validation_errors? model
if (errors = model.validate).any?
set_json_validation_error_messages errors
true
else
false
end
end
|