File: System\ServiceModel\Channels\AddressingVersionExtensions.cs
Web Access
Project: src\src\System.ServiceModel.NetFramingBase\src\System.ServiceModel.NetFramingBase.csproj (System.ServiceModel.NetFramingBase)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace System.ServiceModel.Channels
{
    internal static class AddressingVersionExtensions
    {
        public static Uri AnonymousUri(this AddressingVersion thisPtr)
        {
            if (thisPtr is null) return null;
 
            return thisPtr.ToString() switch
            {
                "AddressingNone (http://schemas.microsoft.com/ws/2005/05/addressing/none)" => null,
                "Addressing200408 (http://schemas.xmlsoap.org/ws/2004/08/addressing)" => new Uri("http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous"),
                "Addressing10 (http://www.w3.org/2005/08/addressing)" => new Uri("http://www.w3.org/2005/08/addressing/anonymous"),
                _ => throw new ArgumentException($"Invalid AddressingVersion:\"{thisPtr}\"", nameof(AddressingVersion))
            };
        }
 
        public static Uri NoneUri(this AddressingVersion thisPtr)
        {
            if (thisPtr is null) return null;
 
            return thisPtr.ToString() switch
            {
                "AddressingNone (http://schemas.microsoft.com/ws/2005/05/addressing/none)" => null,
                "Addressing200408 (http://schemas.xmlsoap.org/ws/2004/08/addressing)" => null,
                "Addressing10 (http://www.w3.org/2005/08/addressing)" => new Uri("http://www.w3.org/2005/08/addressing/none"),
                _ => throw new ArgumentException($"Invalid AddressingVersion:\"{thisPtr}\"", nameof(AddressingVersion))
            };
        }
    }
}