/// <summary> /// Adds the permissions for the specified <paramref name="permission"/> /// </summary> /// <param name="permission">The permission group to add scopes for.</param> /// <param name="options">The <see cref="ScopeOptions"/> indicating read-only or all scopes for a given permission group.</param> /// <returns>The builder instance with the permissions added.</returns> public SendGridPermissionsBuilder AddPermissionsFor(SendGridPermission permission, ScopeOptions options = ScopeOptions.All) { var scopesToAdd = BuildScopes(permission, options); ThrowIfViolatesMutualExclusivity(scopesToAdd); this.addedScopes.AddRange(scopesToAdd); return(this); }
/// <summary> /// Builds the specified options. /// </summary> /// <param name="permission">The permission group to build the scopes list for.</param> /// <param name="requestedOptions">The options.</param> /// <returns> /// A final list of scopes to use for this permission filtered by the requested options /// </returns> private string[] BuildScopes(SendGridPermission permission, ScopeOptions requestedOptions) { if (requestedOptions == ScopeOptions.ReadOnly) { return(allPermissions[permission].Where(x => x.EndsWith(".read")).ToArray()); } return(allPermissions[permission].ToArray()); }