/// <summary> /// Creates a new <see cref="ResourceId"/> /// </summary> /// <param name="resourceId">The fully-qualified resource Id</param> /// <param name="output">The resource Id</param> public static bool TryParse(string resourceId, out ResourceId output) { ResourceGroupLevelResourceId groupLevelResourceId; if (ResourceGroupLevelResourceId.TryParse(resourceId, out groupLevelResourceId)) { output = groupLevelResourceId; return(true); } SubscriptionLevelResourceId subscriptionLevelResourceId; if (SubscriptionLevelResourceId.TryParse(resourceId, out subscriptionLevelResourceId)) { output = subscriptionLevelResourceId; return(true); } TenantLevelResourceId tenantLevelResourceId; if (TenantLevelResourceId.TryParse(resourceId, out tenantLevelResourceId)) { output = tenantLevelResourceId; return(true); } output = null; return(false); }
/// <summary> /// Creates a new <see cref="ResourceGroupLevelResourceId"/> /// </summary> /// <param name="resourceId">The resource Id string</param> public static ResourceGroupLevelResourceId Parse(string resourceId) { ResourceGroupLevelResourceId output; if (!ResourceGroupLevelResourceId.TryParse(resourceId, out output)) { throw new ArgumentException($"Unable to parse fully qualified resource id '{resourceId}'.", nameof(resourceId)); } return(output); }
/// <summary> /// Tries to create a new <see cref="ResourceGroupLevelResourceId"/> /// </summary> /// <param name="resourceId">The resource Id string</param> /// <param name="output">The resource Id output</param> public static bool TryParse(string resourceId, out ResourceGroupLevelResourceId output) { output = null; if (resourceId == null) { return(false); } var segments = resourceId.Trim('/').SplitRemoveEmpty('/'); if (segments.Length < 5) { return(false); } if (!"subscriptions".EqualsInsensitively(segments[0])) { return(false); } if (!"resourceGroups".EqualsInsensitively(segments[2])) { return(false); } if (!"providers".EqualsInsensitively(segments[4])) { return(false); } ResourceIdScope routingScope; IEnumerable <ResourceIdScope> parentScopes; if (!ResourceId.TryParseResourceScopes( pathSegments: segments, startIndex: 4, routingScope: out routingScope, parentScopes: out parentScopes)) { return(false); } output = new ResourceGroupLevelResourceId( subscriptionId: segments[1], resourceGroup: segments[3], routingScope: routingScope, parentScopes: parentScopes); return(true); }
/// <summary> /// Initializes a new instance of the <see cref="ResourceGroupLevelResourceId"/> class /// </summary> /// <param name="subscriptionId">The subscription Id</param> /// <param name="resourceGroup">The resource group</param> /// <param name="routingScope">The routing scope</param> /// <param name="parentScopes">The parent scopes</param> private ResourceGroupLevelResourceId(string subscriptionId, string resourceGroup, ResourceIdScope routingScope, IEnumerable <ResourceIdScope> parentScopes) : base(routingScope, parentScopes, ResourceGroupLevelResourceId.FormatResourceId(subscriptionId, resourceGroup, routingScope, parentScopes)) { this.SubscriptionId = subscriptionId; this.ResourceGroup = resourceGroup; }
/// <summary> /// Creates a new <see cref="TenantLevelResourceId"/> /// </summary> /// <param name="subscriptionId">The subscription Id</param> /// <param name="resourceGroup">The resource group</param> /// <param name="routingResourceId">The routing resource Id</param> /// <param name="output">The resource Id output</param> public static bool TryCreateFromRoutingResourceId(string subscriptionId, string resourceGroup, string routingResourceId, out ResourceGroupLevelResourceId output) => TryParse($"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/{routingResourceId}", out output);