コード例 #1
0
        public override async Task Run()
        {
            var options = new ConsoleOptions <Func <Task> >("What would you like to do?", new[]
            {
                new Option <Func <Task> >("Export user list", UserLists),
                new Option <Func <Task> >("Edit a user", ManageUser),
                new Option <Func <Task> >("Create a user", CreateUser)
            });

            Func <Task> f;

            do
            {
                try
                {
                    f = options.Ask()?.Value;
                    if (f == null)
                    {
                        break;
                    }

                    await f.Invoke();
                }
                catch (Exception e)
                {
                    Log.Error(e.UnwrapForLog());
                }
            } while (true);
        }
コード例 #2
0
        public override async Task Run()
        {
            var opt = new ConsoleOptions <Func <Task> >("Choose what to edit", new[]
            {
                new Option <Func <Task> >("Credentials - Switch file", SwitchCreds),
                new Option <Func <Task> >("Credentials - Edit", EditCreds),
                OpenDirectory != null ? new Option <Func <Task> >("Credentials - Open directory", () => OpenDirectory(Settings.CredentialsFile)) : null,
                new Option <Func <Task> >("Tenant - Edit", EditTenant),
                new Option <Func <Task> >("Tenant - Add", AddTenant),
                new Option <Func <Task> >("Tenant - Delete", DeleteTenant)
            }.Where(o => o != null), "Done");

            Func <Task> func;

            do
            {
                if (!Settings.Credentials.Tenants.Any())
                {
                    opt.Options.ForEach(o => o.Value.Show = !o.Value.Description.StartsWith("Tenant"));
                }
                func = opt.Ask()?.Value;

                if (func == null)
                {
                    break;
                }

                await func();
            } while (true);
        }
コード例 #3
0
        private static async Task <bool> Run()
        {
            var options = new ConsoleOptions <Resource>("What would you like to run?", new[]
            {
//                new Option<Resource>("export the auditing log", new AuditLog(Settings.ActiveTenant)),
//                new Option<Resource>("export the usage log", new UsageReport(Settings.ActiveTenant)),
                new Option <Resource>("User management", new Users(Settings.ActiveTenant)),
                new Option <Resource>("Settings", new Configuration(Settings.ActiveTenant))
            });

            var cmd = options.Ask();

            if (cmd == null)
            {
                return(false);
            }

            await cmd.Value.Run();

            return(Console.ReadLine().ParseBool() != false);
        }
コード例 #4
0
        private async Task ManageUser()
        {
            UserFilter userFilter = null;
            JObject    user       = null;
            string     name       = null;

            async Task askForUser()
            {
                userFilter = ConsoleOptions.GetInput("Which user? (objectId || signInName || displayName)", mutate: r =>
                {
                    var id = r.ParseGuid();

                    if (id.HasValue)
                    {
                        return(new UserFilter(id.Value, null));
                    }

                    try
                    {
                        var mailAddress = new MailAddress(r);

                        return(new UserFilter(null, $"$filter=signInNames / any(x: x / value eq '{r}')"));
                    }
                    catch (Exception)
                    {
                        return(new UserFilter(null, $"$filter=displayName eq '{r}'"));
                    }
                });
            }

            async Task search()
            {
                if (userFilter == null)
                {
                    return;
                }

                user = await QueryUser(userFilter);

                if (user == null)
                {
                    return;
                }

                name = user["displayName"].ToString();

                if (ConsoleOptions.YesNo($"Found {name}. Print user details?"))
                {
                    Log.PrintJson(user);
                }
            }

            await askForUser();

            do
            {
                await search();

                if (user == null && !ConsoleOptions.YesNo("Search again?"))
                {
                    return;
                }
            } while (user == null);


            var options = new ConsoleOptions <Func <JObject, Task> >($"What would you like to do with {name}?", new[]
            {
                new Option <Func <JObject, Task> >("Update", j => Update(j).Then(search)),
                new Option <Func <JObject, Task> >("Print user details", async j => Log.PrintJson(j)),
                new Option <Func <JObject, Task> >("Get another user", async j => await askForUser().Then(search))
            });

            Func <JObject, Task> f = null;

            while (userFilter != null)
            {
                try
                {
                    f = options.Ask()?.Value;
                    if (f == null)
                    {
                        break;
                    }

                    await f.Invoke(user);
                }
                catch (Exception e)
                {
                    Log.Error(e.UnwrapForLog());
                }
            }
        }