Module: Aws::Endpoints::Matchers Private
- Defined in:
- lib/aws-sdk-core/endpoints/matchers.rb
Overview
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
generic matcher functions for service endpoints
Constant Summary collapse
- BRACKET_REGEX =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
Regex that extracts anything in square brackets
/\[(.*?)\]/.freeze
Class Method Summary collapse
-
.attr(value, path) ⇒ Object
private
getAttr(value: Object | Array, path: string) Document.
-
.aws_parse_arn(value) ⇒ Object
private
aws.parseArn(value: string) Option<ARN>.
-
.aws_partition(value) ⇒ Object
private
aws.partition(value: string) Option<Partition>.
-
.aws_virtual_hostable_s3_bucket?(value, allow_sub_domains = false) ⇒ Boolean
private
aws.isVirtualHostableS3Bucket(value: string, allowSubDomains: bool) bool.
-
.boolean_equals?(value1, value2) ⇒ Boolean
private
booleanEquals(value1: bool, value2: bool) bool.
-
.not(bool) ⇒ Object
private
not(value: bool) bool.
-
.parse_url(value) ⇒ Object
private
parseUrl(value: string) Option<URL>.
-
.set?(value) ⇒ Boolean
private
isSet(value: Option<T>) bool.
-
.string_equals?(value1, value2) ⇒ Boolean
private
stringEquals(value1: string, value2: string) bool.
- .substring(input, start, stop, reverse) ⇒ Object private
-
.uri_encode(value) ⇒ Object
private
uriEncode(value: string) string.
-
.valid_host_label?(value, allow_sub_domains = false) ⇒ Boolean
private
isValidHostLabel(value: string, allowSubDomains: bool) bool.
Class Method Details
.attr(value, path) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
getAttr(value: Object | Array, path: string) Document
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/aws-sdk-core/endpoints/matchers.rb', line 26 def self.attr(value, path) parts = path.split('.') val = if (index = parts.first[BRACKET_REGEX, 1]) # remove brackets and index from part before indexing if (base = parts.first.gsub(BRACKET_REGEX, '')) && !base.empty? value[base][index.to_i] else value[index.to_i] end else value[parts.first] end if parts.size == 1 val else attr(val, parts.slice(1..-1).join('.')) end end |
.aws_parse_arn(value) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
aws.parseArn(value: string) Option<ARN>
101 102 103 104 105 106 107 108 109 110 |
# File 'lib/aws-sdk-core/endpoints/matchers.rb', line 101 def self.aws_parse_arn(value) arn = Aws::ARNParser.parse(value) json = arn.as_json # HACK: because of poor naming and also requirement of splitting resource = json.delete('resource') json['resourceId'] = resource.split(%r{[:\/]}, -1) json rescue Aws::Errors::InvalidARNError nil end |
.aws_partition(value) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
aws.partition(value: string) Option<Partition>
96 97 98 |
# File 'lib/aws-sdk-core/endpoints/matchers.rb', line 96 def self.aws_partition(value) Aws::Partitions::Metadata.partition(value) end |
.aws_virtual_hostable_s3_bucket?(value, allow_sub_domains = false) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
aws.isVirtualHostableS3Bucket(value: string, allowSubDomains: bool) bool
113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/aws-sdk-core/endpoints/matchers.rb', line 113 def self.aws_virtual_hostable_s3_bucket?(value, allow_sub_domains = false) return false if value.empty? if allow_sub_domains labels = value.split('.', -1) return labels.all? { |l| aws_virtual_hostable_s3_bucket?(l) } end # must be between 3 and 63 characters long, no uppercase value =~ /\A(?!-)[a-z0-9-]{3,63}(?<!-)\z/ && # not an IP address value !~ /(\d+\.){3}\d+/ end |
.boolean_equals?(value1, value2) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
booleanEquals(value1: bool, value2: bool) bool
65 66 67 |
# File 'lib/aws-sdk-core/endpoints/matchers.rb', line 65 def self.boolean_equals?(value1, value2) value1 == value2 end |
.not(bool) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
not(value: bool) bool
21 22 23 |
# File 'lib/aws-sdk-core/endpoints/matchers.rb', line 21 def self.not(bool) !bool end |
.parse_url(value) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
parseUrl(value: string) Option<URL>
75 76 77 78 79 |
# File 'lib/aws-sdk-core/endpoints/matchers.rb', line 75 def self.parse_url(value) URL.new(value).as_json rescue ArgumentError, URI::InvalidURIError nil end |
.set?(value) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
isSet(value: Option<T>) bool
16 17 18 |
# File 'lib/aws-sdk-core/endpoints/matchers.rb', line 16 def self.set?(value) !value.nil? end |
.string_equals?(value1, value2) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
stringEquals(value1: string, value2: string) bool
60 61 62 |
# File 'lib/aws-sdk-core/endpoints/matchers.rb', line 60 def self.string_equals?(value1, value2) value1 == value2 end |
.substring(input, start, stop, reverse) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/aws-sdk-core/endpoints/matchers.rb', line 47 def self.substring(input, start, stop, reverse) return nil if start >= stop || input.size < stop return nil if input.chars.any? { |c| c.ord > 127 } return input[start...stop] unless reverse r_start = input.size - stop r_stop = input.size - start input[r_start...r_stop] end |
.uri_encode(value) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
uriEncode(value: string) string
70 71 72 |
# File 'lib/aws-sdk-core/endpoints/matchers.rb', line 70 def self.uri_encode(value) CGI.escape(value.encode('UTF-8')).gsub('+', '%20').gsub('%7E', '~') end |
.valid_host_label?(value, allow_sub_domains = false) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
isValidHostLabel(value: string, allowSubDomains: bool) bool
82 83 84 85 86 87 88 89 90 91 |
# File 'lib/aws-sdk-core/endpoints/matchers.rb', line 82 def self.valid_host_label?(value, allow_sub_domains = false) return false if value.empty? if allow_sub_domains labels = value.split('.', -1) return labels.all? { |l| valid_host_label?(l) } end !!(value =~ /\A(?!-)[a-zA-Z0-9-]{1,63}(?<!-)\z/) end |