예제 #1
0
        public override void OnGet(HttpListenerRequest request, HttpListenerResponse response)
        {
            JObject obj = new JObject()
            {
                { "result", true },
                { "ports", new JArray(SerialIO.GetPortNames().ToArray()) },
                { "wifi", CoreState.SettingsInstance.useWifi }
            };

            ResponseFactory.GenerateResponse(response, obj.ToString());
        }
예제 #2
0
        public async Task <Response <T> > GetAsync <T>(string uriExtension)
        {
            try
            {
                var response = await GetResponseAsync(uriExtension);

                return(await ResponseFactory.GenerateResponse <T>(response));
            }
            catch (Exception)
            {
                SetRediscoverServiceUri();
                throw;
            }
        }
예제 #3
0
        public async Task <Response <TReturn> > PostAsync <TReturn, TMessage>(string uriExtension, TMessage message)
        {
            try
            {
                var client = await GetHttpClient();

                var response = await client.PostAsJsonAsync(_absoluteUri + uriExtension, message);

                return(await ResponseFactory.GenerateResponse <TReturn>(response));
            }
            catch (Exception)
            {
                SetRediscoverServiceUri();
                throw;
            }
        }
예제 #4
0
        public async Task <Response <TResponse> > GetAbsoluteAsync <TResponse>(string absoluteUri)
        {
            try
            {
                var client = await GetHttpClient();

                var response = await client.GetAsync(absoluteUri);

                return(await ResponseFactory.GenerateResponse <TResponse>(response));
            }
            catch (Exception)
            {
                SetRediscoverServiceUri();
                throw;
            }
        }
예제 #5
0
        public override void OnPost(HttpListenerRequest request, HttpListenerResponse response)
        {
            if (!CoreState.HasCloseRequested)
            {
                CoreState.HasCloseRequested = true; // TODO i should use this instead of closing the application directly

                string jsonResponse = "{\"result\":true}";
                ResponseFactory.GenerateResponse(response, jsonResponse);

                CoreState.DisposableElements.ForEach(e => e());

                SettingsManager.SaveSettings();

                // System.Environment.Exit(0); //TODO also, i have to close every thing that must be closed (serial, http server, etc)
                // Bug: if I use System.Env.exit, every method after this invocation is not called.
            }
        }
        public override void OnPost(HttpListenerRequest request, HttpListenerResponse response)
        {
            if (request.ContentType == null)
            {
                ConsoleManager.LogError("Missing Content-Type in " + ActionName);
                return;
            }
            if (!request.ContentType.Equals("application/json"))
            {
                return;                                                 //TODO Create exception
            }
            // Get request body:
            string jsonBody = ResponseFactory.JsonStringFromRequest(request);

            //Parse body and get port value
            JToken t       = JToken.Parse(jsonBody);
            string port    = (string)t.SelectToken("port");
            bool?  useWifi = (bool?)t.SelectToken("wifi");

            // Set port value
            CoreState.SettingsInstance.COMPort = port;
            //Set if use wifi to communicate
            CoreState.SettingsInstance.useWifi = useWifi.GetValueOrDefault(false);

            if (!useWifi.Value)
            {
                // Starts the SerialManager
                SerialManager.ManagerInstance.Start();
            }
            else
            {
                // Set udp port, start WifiManager
                if (int.TryParse(port, out int value))
                {
                    CoreState.SettingsInstance.WifiServerPort = value;
                    WifiManager.ManagerInstance.Start();
                }
            }

            string jsonResponse = "{\"result\":true}";

            ResponseFactory.GenerateResponse(response, jsonResponse);
            SettingsManager.SaveSettings();
        }
예제 #7
0
        public override void OnPost(HttpListenerRequest request, HttpListenerResponse response)
        {
            // Check if the request has the correct json content
            if (request.ContentType == null)
            {
                ConsoleManager.LogError("Missing Content-Type in " + ActionName);
                return;
            }
            if (!request.ContentType.Equals("application/json"))
            {
                return;
            }

            string jsonBody = ResponseFactory.JsonStringFromRequest(request);

            // Data parsing:
            JToken t           = JToken.Parse(jsonBody);
            int    componentId = (int)t.SelectToken("id");

            JObject           obj       = (JObject)t.SelectToken("data");
            DigitalActionType eventType = (DigitalActionType)(int)obj.SelectToken("action");

            switch (eventType)
            {
            case DigitalActionType.None:
                InputDispatcher.UpdatePushButtonAction(componentId, null);
                break;

            case DigitalActionType.LaunchApp:
                string actionName = (string)obj.SelectToken("name");
                string appPath    = (string)obj.SelectToken("path");
                InputDispatcher.UpdatePushButtonAction(componentId, new ActionRunProgram(actionName)
                {
                    FullAppDirectory = appPath, AppName = actionName
                });
                break;

            case DigitalActionType.OpenWebsite:
                string uri    = (string)obj.SelectToken("websiteUri");
                string name   = (string)obj.SelectToken("name");
                var    action = new ActionOpenWebsite()
                {
                    WebsiteName = name, WebsiteUri = uri
                };
                action.Init();
                InputDispatcher.UpdatePushButtonAction(componentId, action);
                break;

            case DigitalActionType.Macro:
                ActionRunMacro.MacroType macroType = (ActionRunMacro.MacroType)(int) obj.SelectToken("macroType");
                string macroText = (string)obj.SelectToken("macroText");
                InputDispatcher.UpdatePushButtonAction(componentId, new ActionRunMacro(macroType, macroText));
                break;     // TODO add selected keys to execute macro
            }
            // Store new action mapping:
            InputDispatcher.UpdateActionMappingFile();

            // Send response to the frontend
            string jsonResponse = "{\"result\":true}";

            ResponseFactory.GenerateResponse(response, jsonResponse);
        }
예제 #8
0
 public override void OnGet(HttpListenerRequest request, HttpListenerResponse response)
 {
     ResponseFactory.GenerateResponse(response, "{\"status\":" + CoreState.SettingsInstance.IsFirstLaunch.ToString().ToLower() + "}");
 }
 public override void OnGet(HttpListenerRequest request, HttpListenerResponse response)
 {
     ResponseFactory.GenerateResponse(response, InputDispatcher.ObjectsToJSON());
 }