/// <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="SubscriptionLevelResourceId"/> /// </summary> /// <param name="resourceId">The resource Id string</param> public static SubscriptionLevelResourceId Parse(string resourceId) { SubscriptionLevelResourceId output; if (!SubscriptionLevelResourceId.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="SubscriptionLevelResourceId"/> /// </summary> /// <param name="resourceId">The resource Id string</param> /// <param name="output">The resource Id output</param> public static bool TryParse(string resourceId, out SubscriptionLevelResourceId output) { output = null; if (resourceId == null) { return(false); } var segments = resourceId.Trim('/').SplitRemoveEmpty('/'); if (segments.Length < 3) { return(false); } if (!"subscriptions".EqualsInsensitively(segments[0])) { return(false); } if (!"providers".EqualsInsensitively(segments[2])) { return(false); } ResourceIdScope routingScope; IEnumerable <ResourceIdScope> parentScopes; if (!ResourceId.TryParseResourceScopes( pathSegments: segments, startIndex: 2, routingScope: out routingScope, parentScopes: out parentScopes)) { return(false); } output = new SubscriptionLevelResourceId( subscriptionId: segments[1], routingScope: routingScope, parentScopes: parentScopes); return(true); }
/// <summary> /// Initializes a new instance of the <see cref="SubscriptionLevelResourceId"/> class /// </summary> /// <param name="subscriptionId">The subscription Id</param> /// <param name="routingScope">The routing scope</param> /// <param name="parentScopes">The parent scopes</param> private SubscriptionLevelResourceId(string subscriptionId, ResourceIdScope routingScope, IEnumerable <ResourceIdScope> parentScopes) : base(routingScope, parentScopes, SubscriptionLevelResourceId.FormatResourceId(subscriptionId, routingScope, parentScopes)) { this.SubscriptionId = subscriptionId; }