package models

import (
    i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f "github.com/microsoft/kiota-abstractions-go"
    i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91 "github.com/microsoft/kiota-abstractions-go/serialization"
)

// IpNamedLocation 
type IpNamedLocation struct {
    NamedLocation
    // List of IP address ranges in IPv4 CIDR format (e.g. 1.2.3.4/32) or any allowable IPv6 format from IETF RFC596. Required.
    ipRanges []IpRangeable
    // true if this location is explicitly trusted. Optional. Default value is false.
    isTrusted *bool
}
// NewIpNamedLocation instantiates a new IpNamedLocation and sets the default values.
func NewIpNamedLocation()(*IpNamedLocation) {
    m := &IpNamedLocation{
        NamedLocation: *NewNamedLocation(),
    }
    return m
}
// CreateIpNamedLocationFromDiscriminatorValue creates a new instance of the appropriate class based on discriminator value
func CreateIpNamedLocationFromDiscriminatorValue(parseNode i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode)(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable, error) {
    return NewIpNamedLocation(), nil
}
// GetFieldDeserializers the deserialization information for the current model
func (m *IpNamedLocation) GetFieldDeserializers()(map[string]func(i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.ParseNode)(error)) {
    res := m.NamedLocation.GetFieldDeserializers()
    res["ipRanges"] = i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.SetCollectionOfObjectValues(CreateIpRangeFromDiscriminatorValue , m.SetIpRanges)
    res["isTrusted"] = i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.SetBoolValue(m.SetIsTrusted)
    return res
}
// GetIpRanges gets the ipRanges property value. List of IP address ranges in IPv4 CIDR format (e.g. 1.2.3.4/32) or any allowable IPv6 format from IETF RFC596. Required.
func (m *IpNamedLocation) GetIpRanges()([]IpRangeable) {
    return m.ipRanges
}
// GetIsTrusted gets the isTrusted property value. true if this location is explicitly trusted. Optional. Default value is false.
func (m *IpNamedLocation) GetIsTrusted()(*bool) {
    return m.isTrusted
}
// Serialize serializes information the current object
func (m *IpNamedLocation) Serialize(writer i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.SerializationWriter)(error) {
    err := m.NamedLocation.Serialize(writer)
    if err != nil {
        return err
    }
    if m.GetIpRanges() != nil {
        cast := i2ae4187f7daee263371cb1c977df639813ab50ffa529013b7437480d1ec0158f.CollectionCast[i878a80d2330e89d26896388a3f487eef27b0a0e6c010c493bf80be1452208f91.Parsable](m.GetIpRanges())
        err = writer.WriteCollectionOfObjectValues("ipRanges", cast)
        if err != nil {
            return err
        }
    }
    {
        err = writer.WriteBoolValue("isTrusted", m.GetIsTrusted())
        if err != nil {
            return err
        }
    }
    return nil
}
// SetIpRanges sets the ipRanges property value. List of IP address ranges in IPv4 CIDR format (e.g. 1.2.3.4/32) or any allowable IPv6 format from IETF RFC596. Required.
func (m *IpNamedLocation) SetIpRanges(value []IpRangeable)() {
    m.ipRanges = value
}
// SetIsTrusted sets the isTrusted property value. true if this location is explicitly trusted. Optional. Default value is false.
func (m *IpNamedLocation) SetIsTrusted(value *bool)() {
    m.isTrusted = value
}
