-
Notifications
You must be signed in to change notification settings - Fork 367
Expand file tree
/
Copy pathservice_broker_create_message.rb
More file actions
55 lines (40 loc) · 1.57 KB
/
service_broker_create_message.rb
File metadata and controls
55 lines (40 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
require 'messages/metadata_base_message'
require 'messages/basic_credentials_message'
require 'messages/authentication_message'
require 'messages/validators/url_validator'
require 'messages/validators/authentication_validator'
require 'messages/mixins/authentication_message_mixin'
require 'utils/hash_utils'
module VCAP::CloudController
class ServiceBrokerCreateMessage < MetadataBaseMessage
include AuthenticationMessageMixin
register_allowed_keys %i[name url authentication relationships]
def self.relationships_requested?
@relationships_requested ||= proc { |a| a.requested?(:relationships) }
end
validates :name, string: true
validate :validate_name
validates :url, string: true
validates_with UrlValidator
validates :authentication, hash: true
validates_with AuthenticationValidator, if: ->(record) { record.authentication.is_a? Hash }
validates_with RelationshipValidator, if: relationships_requested?
validates_with NoAdditionalKeysValidator
def relationships_message
@relationships_message ||= Relationships.new(relationships&.deep_symbolize_keys)
end
def validate_name
return unless name == ''
errors.add(:name, 'must not be empty string')
end
delegate :space_guid, to: :relationships_message
class Relationships < BaseMessage
register_allowed_keys [:space]
validates_with NoAdditionalKeysValidator
validates :space, presence: true, allow_nil: false, to_one_relationship: true
def space_guid
HashUtils.dig(space, :data, :guid)
end
end
end
end