require 'date' module HelixWebServices # Displays the information stored in the `p4 protect` command. class Protections # Each item in the protections array is a line in the protections table, and is split into five columns.\n\n1. Access level or mode.\nOne of the access levels list, read, open, write, admin, super, review; or one of the rights =read, =open, =write, and =branch,\n\n2. Either `user` or `group`, to indicate what's identified by this entry.\n\n3. The group name or user name.\nTo grant permission to all users, use a wildcard with just an asterix symbol.\n\n4. The IP address of the client host.\n\n5. The depot file path, which can contain wildcards.\nTo exclude this mapping from the permission set, use a dash `-` as the first character of this value.\n\nIPv6 addresses and IPv4 addresses are also supported.\nYou can use the * wildcard to refer to all IP addresses, but only when you are not using CIDR notation.\n\nIf you use the * wildcard with an IPv6 address, you must enclose the entire IPv6 address in square brackets.\nFor example, [2001:db8:1:2:*] is equivalent to [2001:db8:1:2::]/64.\nBest practice is to use CIDR notation, surround IPv6 addresses with brackets, and to avoid the * wildcard.\n\nHow the system forms host addresses depends on the setting of the dm.proxy.protects variable.\nBy default, this variable is set to 1.\nThis means that if the client host uses some intermediary (proxy, broker, replica) to access the server, the proxy- prefix is prepended to the client host address to indicate that the connection is not direct.\nIf you specify proxy-* for the Host field, that will affect all connections made via proxies, brokers, and replicas. A value like proxy-10.0.0.5 identifies a client machine with an IP address of 10.0.0.5 that is connected to the server through an intermediary.\n\nSetting the dm.proxy.protects variable to 0, removes the proxy- prefix and allows you to write a single set of protection entries that apply both to directly-connected clients as well as to those that connect via an intermediary.\nThis is more convenient but less secure if it matters that a connection is made using an intermediary. If you use this setting, all intermediaries must be at release 2012.1 or higher. attr_accessor :protections # Attribute mapping from ruby-style variable name to JSON key. def self.attribute_map { :'protections' => :'protections' } end # Attribute type mapping. def self.swagger_types { :'protections' => :'Array' } end def initialize(attributes = {}) return unless attributes.is_a?(Hash) # convert string to symbol for hash key attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo} if attributes[:'protections'] if (value = attributes[:'protections']).is_a?(Array) self.protections = value end end end # Check equality by comparing each attribute. def ==(o) return true if self.equal?(o) self.class == o.class && protections == o.protections end # @see the `==` method def eql?(o) self == o end # Calculate hash code according to all attributes. def hash [protections].hash end # build the object from hash def build_from_hash(attributes) return nil unless attributes.is_a?(Hash) self.class.swagger_types.each_pair do |key, type| if type =~ /^Array<(.*)>/i if attributes[self.class.attribute_map[key]].is_a?(Array) self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } ) else #TODO show warning in debug mode end elsif !attributes[self.class.attribute_map[key]].nil? self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]])) else # data not found in attributes(hash), not an issue as the data can be optional end end self end def _deserialize(type, value) case type.to_sym when :DateTime DateTime.parse(value) when :Date Date.parse(value) when :String value.to_s when :Integer value.to_i when :Float value.to_f when :BOOLEAN if value.to_s =~ /^(true|t|yes|y|1)$/i true else false end when /\AArray<(?.+)>\z/ inner_type = Regexp.last_match[:inner_type] value.map { |v| _deserialize(inner_type, v) } when /\AHash<(?.+), (?.+)>\z/ k_type = Regexp.last_match[:k_type] v_type = Regexp.last_match[:v_type] {}.tap do |hash| value.each do |k, v| hash[_deserialize(k_type, k)] = _deserialize(v_type, v) end end when :Object value else # model _model = HelixWebServices.const_get(type).new _model.build_from_hash(value) end end def to_s to_hash.to_s end # to_body is an alias to to_body (backward compatibility)) def to_body to_hash end # return the object in the form of hash def to_hash hash = {} self.class.attribute_map.each_pair do |attr, param| value = self.send(attr) next if value.nil? hash[param] = _to_hash(value) end hash end # Method to output non-array value in the form of hash # For object, use to_hash. Otherwise, just return the value def _to_hash(value) if value.is_a?(Array) value.compact.map{ |v| _to_hash(v) } elsif value.is_a?(Hash) {}.tap do |hash| value.each { |k, v| hash[k] = _to_hash(v) } end elsif value.respond_to? :to_hash value.to_hash else value end end end end