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
Constructor Details
Returns a new instance of BaseResource.
34
35
36
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 34
def initialize
PactBroker.configuration.before_resource.call(self)
end
|
Instance Method Details
#base_url ⇒ Object
50
51
52
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 50
def base_url
request.base_uri.to_s.chomp('/')
end
|
#charsets_provided ⇒ Object
54
55
56
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 54
def charsets_provided
[['utf-8', :encode]]
end
|
#consumer_name ⇒ Object
101
102
103
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 101
def consumer_name
identifier_from_path[:consumer_name]
end
|
#contract_validation_errors?(contract, params) ⇒ Boolean
134
135
136
137
138
139
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 134
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
67
68
69
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 67
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
59
60
61
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 59
def encode(body)
body
end
|
#finish_request ⇒ Object
38
39
40
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 38
def finish_request
PactBroker.configuration.after_resource.call(self)
end
|
#handle_exception(e) ⇒ Object
#identifier_from_path ⇒ Object
Also known as:
path_info
42
43
44
45
46
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 42
def identifier_from_path
request.path_info.each_with_object({}) do | pair, hash|
hash[pair.first] = pair.last === String ? URI.decode(pair.last) : pair.last
end
end
|
#invalid_json? ⇒ Boolean
113
114
115
116
117
118
119
120
121
122
123
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 113
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
109
110
111
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 109
def pacticipant_name
identifier_from_path[:pacticipant_name]
end
|
#params ⇒ Object
75
76
77
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 75
def params
@params ||= JSON.parse(request.body.to_s, {symbolize_names: true}.merge(PACT_PARSING_OPTIONS))
end
|
#params_with_string_keys ⇒ Object
79
80
81
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 79
def params_with_string_keys
JSON.parse(request.body.to_s, {symbolize_names: false}.merge(PACT_PARSING_OPTIONS))
end
|
#provider_name ⇒ Object
105
106
107
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 105
def provider_name
identifier_from_path[:provider_name]
end
|
#request_body ⇒ Object
97
98
99
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 97
def request_body
@request_body ||= request.body.to_s
end
|
#resource_url ⇒ Object
63
64
65
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 63
def resource_url
request.uri.to_s
end
|
#set_json_error_message(message) ⇒ Object
87
88
89
90
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 87
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
92
93
94
95
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 92
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
125
126
127
128
129
130
131
132
|
# File 'lib/pact_broker/api/resources/base_resource.rb', line 125
def validation_errors? model
if (errors = model.validate).any?
set_json_validation_error_messages errors
true
else
false
end
end
|