=begin #Cloudsmith API (v1) #The API to the Cloudsmith Service OpenAPI spec version: v1 Contact: support@cloudsmith.io Generated by: https://github.com/swagger-api/swagger-codegen.git Swagger Codegen version: 2.4.43 =end require 'date' module CloudsmithApi class DebUpstream # The authentication mode to use when accessing this upstream. attr_accessor :auth_mode # Secret to provide with requests to upstream. attr_accessor :auth_secret # Username to provide with requests to upstream. attr_accessor :auth_username # The component to fetch from the upstream attr_accessor :component # The datetime the upstream source was created. attr_accessor :created_at attr_accessor :disable_reason # The distribution version that packages found on this upstream could be associated with. attr_accessor :distro_versions # The key for extra header #1 to send to upstream. attr_accessor :extra_header_1 # The key for extra header #2 to send to upstream. attr_accessor :extra_header_2 # The value for extra header #1 to send to upstream. This is stored as plaintext, and is NOT encrypted. attr_accessor :extra_value_1 # The value for extra header #2 to send to upstream. This is stored as plaintext, and is NOT encrypted. attr_accessor :extra_value_2 # A public GPG key to associate with packages found on this upstream. When using the Cloudsmith setup script, this GPG key will be automatically imported on your deployment machines to allow upstream packages to validate and install. attr_accessor :gpg_key_inline # When provided, Cloudsmith will fetch, validate, and associate a public GPG key found at the provided URL. When using the Cloudsmith setup script, this GPG key will be automatically imported on your deployment machines to allow upstream packages to validate and install. attr_accessor :gpg_key_url # The GPG signature verification mode for this upstream. attr_accessor :gpg_verification # When true, source packages will be available from this upstream. attr_accessor :include_sources # Whether or not this upstream is active and ready for requests. attr_accessor :is_active # The mode that this upstream should operate in. Upstream sources can be used to proxy resolved packages, as well as operate in a proxy/cache or cache only mode. attr_accessor :mode # A descriptive name for this upstream source. A shortened version of this name will be used for tagging cached packages retrieved from this upstream. attr_accessor :name # When true, this upstream source is pending validation. attr_accessor :pending_validation # Upstream sources are selected for resolving requests by sequential order (1..n), followed by creation date. attr_accessor :priority attr_accessor :slug_perm attr_accessor :updated_at # The distribution to fetch from the upstream attr_accessor :upstream_distribution # The URL for this upstream source. This must be a fully qualified URL including any path elements required to reach the root of the repository. attr_accessor :upstream_url # The signature verification status for this upstream. attr_accessor :verification_status # If enabled, SSL certificates are verified when requests are made to this upstream. It's recommended to leave this enabled for all public sources to help mitigate Man-In-The-Middle (MITM) attacks. Please note this only applies to HTTPS upstreams. attr_accessor :verify_ssl class EnumAttributeValidator attr_reader :datatype attr_reader :allowable_values def initialize(datatype, allowable_values) @allowable_values = allowable_values.map do |value| case datatype.to_s when /Integer/i value.to_i when /Float/i value.to_f else value end end end def valid?(value) !value || allowable_values.include?(value) end end # Attribute mapping from ruby-style variable name to JSON key. def self.attribute_map { :'auth_mode' => :'auth_mode', :'auth_secret' => :'auth_secret', :'auth_username' => :'auth_username', :'component' => :'component', :'created_at' => :'created_at', :'disable_reason' => :'disable_reason', :'distro_versions' => :'distro_versions', :'extra_header_1' => :'extra_header_1', :'extra_header_2' => :'extra_header_2', :'extra_value_1' => :'extra_value_1', :'extra_value_2' => :'extra_value_2', :'gpg_key_inline' => :'gpg_key_inline', :'gpg_key_url' => :'gpg_key_url', :'gpg_verification' => :'gpg_verification', :'include_sources' => :'include_sources', :'is_active' => :'is_active', :'mode' => :'mode', :'name' => :'name', :'pending_validation' => :'pending_validation', :'priority' => :'priority', :'slug_perm' => :'slug_perm', :'updated_at' => :'updated_at', :'upstream_distribution' => :'upstream_distribution', :'upstream_url' => :'upstream_url', :'verification_status' => :'verification_status', :'verify_ssl' => :'verify_ssl' } end # Attribute type mapping. def self.swagger_types { :'auth_mode' => :'String', :'auth_secret' => :'String', :'auth_username' => :'String', :'component' => :'String', :'created_at' => :'DateTime', :'disable_reason' => :'String', :'distro_versions' => :'Array', :'extra_header_1' => :'String', :'extra_header_2' => :'String', :'extra_value_1' => :'String', :'extra_value_2' => :'String', :'gpg_key_inline' => :'String', :'gpg_key_url' => :'String', :'gpg_verification' => :'String', :'include_sources' => :'BOOLEAN', :'is_active' => :'BOOLEAN', :'mode' => :'String', :'name' => :'String', :'pending_validation' => :'BOOLEAN', :'priority' => :'Integer', :'slug_perm' => :'String', :'updated_at' => :'DateTime', :'upstream_distribution' => :'String', :'upstream_url' => :'String', :'verification_status' => :'String', :'verify_ssl' => :'BOOLEAN' } end # Initializes the object # @param [Hash] attributes Model attributes in the form of hash def initialize(attributes = {}) return unless attributes.is_a?(Hash) # convert string to symbol for hash key attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v } if attributes.has_key?(:'auth_mode') self.auth_mode = attributes[:'auth_mode'] else self.auth_mode = 'None' end if attributes.has_key?(:'auth_secret') self.auth_secret = attributes[:'auth_secret'] end if attributes.has_key?(:'auth_username') self.auth_username = attributes[:'auth_username'] end if attributes.has_key?(:'component') self.component = attributes[:'component'] end if attributes.has_key?(:'created_at') self.created_at = attributes[:'created_at'] end if attributes.has_key?(:'disable_reason') self.disable_reason = attributes[:'disable_reason'] else self.disable_reason = 'N/A' end if attributes.has_key?(:'distro_versions') if (value = attributes[:'distro_versions']).is_a?(Array) self.distro_versions = value end end if attributes.has_key?(:'extra_header_1') self.extra_header_1 = attributes[:'extra_header_1'] end if attributes.has_key?(:'extra_header_2') self.extra_header_2 = attributes[:'extra_header_2'] end if attributes.has_key?(:'extra_value_1') self.extra_value_1 = attributes[:'extra_value_1'] end if attributes.has_key?(:'extra_value_2') self.extra_value_2 = attributes[:'extra_value_2'] end if attributes.has_key?(:'gpg_key_inline') self.gpg_key_inline = attributes[:'gpg_key_inline'] end if attributes.has_key?(:'gpg_key_url') self.gpg_key_url = attributes[:'gpg_key_url'] end if attributes.has_key?(:'gpg_verification') self.gpg_verification = attributes[:'gpg_verification'] else self.gpg_verification = 'Allow All' end if attributes.has_key?(:'include_sources') self.include_sources = attributes[:'include_sources'] end if attributes.has_key?(:'is_active') self.is_active = attributes[:'is_active'] end if attributes.has_key?(:'mode') self.mode = attributes[:'mode'] else self.mode = 'Proxy Only' end if attributes.has_key?(:'name') self.name = attributes[:'name'] end if attributes.has_key?(:'pending_validation') self.pending_validation = attributes[:'pending_validation'] end if attributes.has_key?(:'priority') self.priority = attributes[:'priority'] end if attributes.has_key?(:'slug_perm') self.slug_perm = attributes[:'slug_perm'] end if attributes.has_key?(:'updated_at') self.updated_at = attributes[:'updated_at'] end if attributes.has_key?(:'upstream_distribution') self.upstream_distribution = attributes[:'upstream_distribution'] end if attributes.has_key?(:'upstream_url') self.upstream_url = attributes[:'upstream_url'] end if attributes.has_key?(:'verification_status') self.verification_status = attributes[:'verification_status'] else self.verification_status = 'Unknown' end if attributes.has_key?(:'verify_ssl') self.verify_ssl = attributes[:'verify_ssl'] end end # Show invalid properties with the reasons. Usually used together with valid? # @return Array for valid properties with the reasons def list_invalid_properties invalid_properties = Array.new if @distro_versions.nil? invalid_properties.push('invalid value for "distro_versions", distro_versions cannot be nil.') end if @name.nil? invalid_properties.push('invalid value for "name", name cannot be nil.') end if @upstream_url.nil? invalid_properties.push('invalid value for "upstream_url", upstream_url cannot be nil.') end invalid_properties end # Check to see if the all the properties in the model are valid # @return true if the model is valid def valid? auth_mode_validator = EnumAttributeValidator.new('String', ['None', 'Username and Password']) return false unless auth_mode_validator.valid?(@auth_mode) disable_reason_validator = EnumAttributeValidator.new('String', ['N/A', 'Upstream points to its own repository', 'Missing upstream source', 'Upstream was disabled by request of user']) return false unless disable_reason_validator.valid?(@disable_reason) return false if @distro_versions.nil? gpg_verification_validator = EnumAttributeValidator.new('String', ['Allow All', 'Warn on Invalid', 'Reject Invalid']) return false unless gpg_verification_validator.valid?(@gpg_verification) mode_validator = EnumAttributeValidator.new('String', ['Proxy Only', 'Cache and Proxy']) return false unless mode_validator.valid?(@mode) return false if @name.nil? return false if @upstream_url.nil? verification_status_validator = EnumAttributeValidator.new('String', ['Unknown', 'Invalid', 'Valid', 'Invalid (No Key)']) return false unless verification_status_validator.valid?(@verification_status) true end # Custom attribute writer method checking allowed values (enum). # @param [Object] auth_mode Object to be assigned def auth_mode=(auth_mode) validator = EnumAttributeValidator.new('String', ['None', 'Username and Password']) unless validator.valid?(auth_mode) fail ArgumentError, 'invalid value for "auth_mode", must be one of #{validator.allowable_values}.' end @auth_mode = auth_mode end # Custom attribute writer method checking allowed values (enum). # @param [Object] disable_reason Object to be assigned def disable_reason=(disable_reason) validator = EnumAttributeValidator.new('String', ['N/A', 'Upstream points to its own repository', 'Missing upstream source', 'Upstream was disabled by request of user']) unless validator.valid?(disable_reason) fail ArgumentError, 'invalid value for "disable_reason", must be one of #{validator.allowable_values}.' end @disable_reason = disable_reason end # Custom attribute writer method checking allowed values (enum). # @param [Object] gpg_verification Object to be assigned def gpg_verification=(gpg_verification) validator = EnumAttributeValidator.new('String', ['Allow All', 'Warn on Invalid', 'Reject Invalid']) unless validator.valid?(gpg_verification) fail ArgumentError, 'invalid value for "gpg_verification", must be one of #{validator.allowable_values}.' end @gpg_verification = gpg_verification end # Custom attribute writer method checking allowed values (enum). # @param [Object] mode Object to be assigned def mode=(mode) validator = EnumAttributeValidator.new('String', ['Proxy Only', 'Cache and Proxy']) unless validator.valid?(mode) fail ArgumentError, 'invalid value for "mode", must be one of #{validator.allowable_values}.' end @mode = mode end # Custom attribute writer method checking allowed values (enum). # @param [Object] verification_status Object to be assigned def verification_status=(verification_status) validator = EnumAttributeValidator.new('String', ['Unknown', 'Invalid', 'Valid', 'Invalid (No Key)']) unless validator.valid?(verification_status) fail ArgumentError, 'invalid value for "verification_status", must be one of #{validator.allowable_values}.' end @verification_status = verification_status end # Checks equality by comparing each attribute. # @param [Object] Object to be compared def ==(o) return true if self.equal?(o) self.class == o.class && auth_mode == o.auth_mode && auth_secret == o.auth_secret && auth_username == o.auth_username && component == o.component && created_at == o.created_at && disable_reason == o.disable_reason && distro_versions == o.distro_versions && extra_header_1 == o.extra_header_1 && extra_header_2 == o.extra_header_2 && extra_value_1 == o.extra_value_1 && extra_value_2 == o.extra_value_2 && gpg_key_inline == o.gpg_key_inline && gpg_key_url == o.gpg_key_url && gpg_verification == o.gpg_verification && include_sources == o.include_sources && is_active == o.is_active && mode == o.mode && name == o.name && pending_validation == o.pending_validation && priority == o.priority && slug_perm == o.slug_perm && updated_at == o.updated_at && upstream_distribution == o.upstream_distribution && upstream_url == o.upstream_url && verification_status == o.verification_status && verify_ssl == o.verify_ssl end # @see the `==` method # @param [Object] Object to be compared def eql?(o) self == o end # Calculates hash code according to all attributes. # @return [Fixnum] Hash code def hash [auth_mode, auth_secret, auth_username, component, created_at, disable_reason, distro_versions, extra_header_1, extra_header_2, extra_value_1, extra_value_2, gpg_key_inline, gpg_key_url, gpg_verification, include_sources, is_active, mode, name, pending_validation, priority, slug_perm, updated_at, upstream_distribution, upstream_url, verification_status, verify_ssl].hash end # Builds the object from hash # @param [Hash] attributes Model attributes in the form of hash # @return [Object] Returns the model itself def build_from_hash(attributes) return nil unless attributes.is_a?(Hash) self.class.swagger_types.each_pair do |key, type| if type =~ /\AArray<(.*)>/i # check to ensure the input is an array given that the attribute # is documented as an array but the input is not if attributes[self.class.attribute_map[key]].is_a?(Array) self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) }) end elsif !attributes[self.class.attribute_map[key]].nil? self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]])) end # or else data not found in attributes(hash), not an issue as the data can be optional end self end # Deserializes the data based on type # @param string type Data type # @param string value Value to be deserialized # @return [Object] Deserialized data 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 =~ /\A(true|t|yes|y|1)\z/i true else false end when :Object # generic object (usually a Hash), return directly value 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 else # model temp_model = CloudsmithApi.const_get(type).new temp_model.build_from_hash(value) end end # Returns the string representation of the object # @return [String] String presentation of the object def to_s to_hash.to_s end # to_body is an alias to to_hash (backward compatibility) # @return [Hash] Returns the object in the form of hash def to_body to_hash end # Returns the object in the form of hash # @return [Hash] Returns 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 # Outputs non-array value in the form of hash # For object, use to_hash. Otherwise, just return the value # @param [Object] value Any valid value # @return [Hash] Returns the value in the form of hash 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