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, Pact, PactContentDiff, PactVersions, PactWebhooks, Pacticipant, Pacticipants, PreviousDistinctPactVersion, Relationships, Tag, Version, 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, #logger, #logger=
#hal_browser_url, #latest_pact_url, #latest_pacts_url, #latest_version_url, #pact_url, #pact_url_from_params, #pact_versions_url, #pacticipant_url, #pacticipants_url, #previous_distinct_diff_url, #previous_distinct_pact_version_url, #tag_url, #tags_url, #url_encode, #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, #version_service, #webhook_service
Instance Method Details
#base_url ⇒ Object
41
42
43
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 41
def base_url
request.base_uri.to_s.chomp('/')
end
|
#charsets_provided ⇒ Object
45
46
47
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 45
def charsets_provided
[['utf-8', :encode]]
end
|
#consumer_name ⇒ Object
84
85
86
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 84
def consumer_name
identifier_from_path[:consumer_name]
end
|
#contract_validation_errors?(contract) ⇒ Boolean
113
114
115
116
117
118
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 113
def contract_validation_errors? contract
if (invalid = !contract.validate)
set_json_validation_error_messages contract.errors.full_messages
end
invalid
end
|
#decorator_context(options = {}) ⇒ Object
58
59
60
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 58
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
50
51
52
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 50
def encode(body)
body
end
|
#handle_exception(e) ⇒ Object
#identifier_from_path ⇒ Object
Also known as:
path_info
33
34
35
36
37
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 33
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
92
93
94
95
96
97
98
99
100
101
102
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 92
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
|
#params ⇒ Object
66
67
68
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 66
def params
@params ||= JSON.parse(request.body.to_s, {symbolize_names: true}.merge(PACT_PARSING_OPTIONS))
end
|
#provider_name ⇒ Object
88
89
90
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 88
def provider_name
identifier_from_path[:provider_name]
end
|
#request_body ⇒ Object
80
81
82
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 80
def request_body
@request_body ||= request.body.to_s
end
|
#resource_url ⇒ Object
54
55
56
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 54
def resource_url
request.uri.to_s
end
|
#set_json_error_message(message) ⇒ Object
70
71
72
73
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 70
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
75
76
77
78
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 75
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
104
105
106
107
108
109
110
111
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 104
def validation_errors? model
if (errors = model.validate).any?
set_json_validation_error_messages errors
true
else
false
end
end
|