Exemple #1
0
        static async Task Main(string[] args)
        {
            if (args.Contains("-h") || args.Contains("--help"))
            {
                Console.WriteLine("Winofy client device application");
                Console.WriteLine("You can use these arguments");
                Console.WriteLine("----------common----------");
                Console.WriteLine("-u: Username [Not Recommended. Use -token instead]");
                Console.WriteLine("-p: Password [Not Recommended. Use -token instead]");
                Console.WriteLine("-token: Authorization token");
                Console.WriteLine("-h, --help: Show help");
                Console.WriteLine("----------command----------");
                Console.WriteLine("init: Initialize device file and save to the device.json");
                Console.WriteLine("register: Register device to the server");
                Console.WriteLine("create: Create new account");
                Console.WriteLine("token: Get Authorization Token");
                Console.WriteLine("record: Send record to the server (this needs -SI, -axes, -temp, -humidity -window parameters)");
                Console.WriteLine("list: List the registered devices");
                Console.WriteLine("----------record command----------");
                Console.WriteLine("-SI: SI value");
                Console.WriteLine("-axes: Axes (0=YZ, 1=XZ, 2=XY)");
                Console.WriteLine("-temp: Temperature (Celsius)");
                Console.WriteLine("-humidity: Humidity (0~1)");
                Console.WriteLine("-window: Window state(0=Opened, 1=Closed, 2=None)");
                return;
            }

            var token = await GetTokenAsync(args);

            if (args.Contains("token"))
            {
                token = string.IsNullOrEmpty(token) ? "Failed to authorize" : token;
                Console.WriteLine(token);
                return;
            }

            if (string.IsNullOrEmpty(token))
            {
                return;
            }

            Client.SetAuthorizationToken(token);

            if (args.Contains("list"))
            {
                var dev = await Client.ListDevicesAsync();

                foreach (var d in dev.Devices)
                {
                    Console.WriteLine($"----------");
                    Console.WriteLine($"ID:{d.Id}");
                    Console.WriteLine($"Name:{d.Name}");
                    Console.WriteLine($"Description:{d.Description}");
                }

                return;
            }

            var device = GetOrInitDevice(args);

            if (device == null)
            {
                return;
            }

            if (args.Contains("register"))
            {
                await RegisterDeviceAsync(device);

                return;
            }

            if (args.Contains("record"))
            {
                await SendRecordAsync(args, device);

                return;
            }
        }
Exemple #2
0
        private static async Task <WinofyClient> PrepareClientAsync(HomeConfig config)
        {
            var client = new WinofyClient();

            if (!string.IsNullOrEmpty(config.AuthorizationToken))
            {
                var result = await client.ValidateTokenAsync(config.Username, config.AuthorizationToken);

                if (!result.Valid)
                {
                    config.AuthorizationToken = null;
                }
            }

            while (string.IsNullOrEmpty(config.AuthorizationToken))
            {
                Console.Write("Username : "******"Password : "******"Failed to login. Please check your username and password");
                }
            }

            client.SetAuthorizationToken(config.AuthorizationToken);

            if (string.IsNullOrEmpty(config.Device?.Id))
            {
                Console.WriteLine("This device may not be registered");
                Console.WriteLine("Tell us the device name and description");
                Console.Write("Name : ");
                var name = Console.ReadLine();
                Console.Write("Description : ");
                var desc = Console.ReadLine();

                var device = new Device()
                {
                    Name         = name,
                    Description  = desc,
                    Notification = true
                };

                var result = await client.RegisterDeviceAsync(device, true);

                if (result.Success)
                {
                    config.Device = device;
                }
                else
                {
                    Console.WriteLine("Failed to register this device. See messages from the server");
                    Console.WriteLine(result.Message.ToString());
                }
            }

            using (var sw = new StreamWriter(HomeConfig.ConfigPath))
            {
                sw.Write(JsonConvert.SerializeObject(config, Formatting.Indented));
            }

            return(client);
        }