public void ScannerShouldInstantiateScannerControllerWithInjectedDependencies() { const string TestRoute = "/scannercontroller/get2"; var test = new TestDependency(); IoC.RegisterInstance <ITestDependency>(nameof(ITestDependency), test); var logger = new TestLogger(); IoC.RegisterInstance <IChromelyLogger>(nameof(IChromelyLogger), logger); var scanner = new RouteScanner(Assembly.GetExecutingAssembly()); var routeCommands = scanner.Scan(); foreach (var route in routeCommands.Item1) { ServiceRouteProvider.AddRoute(route.Key, route.Value); } foreach (var command in routeCommands.Item2) { ServiceRouteProvider.AddCommand(command.Key, command.Value); } var request = new ChromelyRequest(new RoutePath(Method.GET, TestRoute), null, null); var routePath = new RoutePath(Method.GET, TestRoute); var get2 = ServiceRouteProvider.GetRoute(routePath); var getResponse = get2.Invoke(request); Assert.Equal(TestDependency.TestDependencyResponse, getResponse.Data.ToString()); Assert.Equal(ScannerControllerWithDependencyInjection.Get2Response, logger.Message); }
private ChromelyResponse Test(ChromelyRequest request) { return(new ChromelyResponse(request.Id) { Data = "data" }); }
/// <summary> /// The save. /// </summary> /// <param name="request"> /// The request. /// </param> /// <returns> /// The <see cref="ChromelyResponse"/>. /// </returns> private ChromelyResponse Save(ChromelyRequest request) { ChromelyResponse response = new ChromelyResponse(); response.Data = request.PostData; return(response); }
/// <summary> /// The get 1. /// </summary> /// <param name="request"> /// The request. /// </param> /// <returns> /// The <see cref="ChromelyResponse"/>. /// </returns> private ChromelyResponse Get1(ChromelyRequest request) { ChromelyResponse response = new ChromelyResponse(); response.Data = 1000; return(response); }
/// <summary> /// The get 2. /// </summary> /// <param name="request"> /// The request. /// </param> /// <returns> /// The <see cref="ChromelyResponse"/>. /// </returns> private ChromelyResponse Get2(ChromelyRequest request) { ChromelyResponse response = new ChromelyResponse(); response.Data = "Test Get 2"; return(response); }
private ChromelyResponse ExportAllConversations(ChromelyRequest request) { IDictionary <string, object> parameters = request.Parameters; string postDataJson = (string)request.PostData.EnsureJson(); JObject data = JObject.Parse(postDataJson); ConversationService conversationService = ConversationService.getInstance(); List <ConversationAsset> conversations = conversationService.LoadConversations(); foreach (ConversationAsset conversationAsset in conversations) { conversationService.SaveConversation(conversationAsset, FileFormat.JSON); } try { string conversationAssetString = data["conversationAsset"].ToString(); if (conversationAssetString != "") { ConversationAsset conversationAsset = JsonConvert.DeserializeObject <ConversationAsset>(conversationAssetString); conversationService.SaveConversation(conversationAsset, FileFormat.JSON); } } catch (Exception e) { Log.Error(e); } List <ConversationAsset> updatedConversations = conversationService.LoadConversations(); string conversationsJson = JsonConvert.SerializeObject(updatedConversations); ChromelyResponse response = new ChromelyResponse(); response.Data = conversationsJson; return(response); }
public Task <ChromelyResponse> RunAsync(ChromelyRequest request) { var parameters = request.Parameters ?? request.RoutePath.Path.GetParameters()?.ToObjectDictionary(); var postData = request.PostData; return(ExcuteRouteAsync(request.RoutePath, parameters, postData)); }
public ChromelyResponse AddProduct(ChromelyRequest req) { JObject data = (JObject)JsonConvert.DeserializeObject(req.PostData.ToJson()); //Console.WriteLine(data); try { new Repository <Product>().AddThenWrite(new Product( data["price"].Value <double>(), data["name"].Value <string>(), data["type"].Value <string>() )); } catch (FormatException) { return(Response.ParseError(req.Id)); } catch (InvalidOperationException) { return(Response.TransactionProtocolViolation(req.Id)); } catch (ValidationException exception) { return(Response.ValidationError(req.Id, exception)); } return(new Response { status = 204 }.ChromelyWrapper(req.Id)); }
private ChromelyResponse GetArguments(ChromelyRequest request) { return(new ChromelyResponse() { Data = "Hello World Arguments" }); }
public ChromelyResponse GetProducts(ChromelyRequest req) { Dictionary <int, Product> rawData; try { rawData = new Repository <Product>().Data; } catch (InvalidOperationException) { return(Response.TransactionProtocolViolation(req.Id)); } List <Product> data = new List <Product>(); foreach (Product prod in rawData.Values) { if (prod.GetType() == typeof(Product)) { data.Add(prod); } } return(new Response { status = 200, data = JsonConvert.SerializeObject(data) }.ChromelyWrapper(req.Id)); }
public ChromelyResponse GetMovieById(ChromelyRequest req) { int id; try { id = ((JObject)JsonConvert.DeserializeObject(req.PostData.ToJson())).Value <int>("id"); } catch (FormatException) { return(Response.ParseError(req.Id)); } try { return(new Response { status = 200, data = JsonConvert.SerializeObject(new Repository <Product>().Data[id]) }.ChromelyWrapper(req.Id)); } catch (InvalidOperationException) { return(Response.TransactionProtocolViolation(req.Id)); } catch (KeyNotFoundException) { return(new Response { status = 400, statusText = $"No movie found for id {id}." }.ChromelyWrapper(req.Id)); } }
public ChromelyResponse GetMovieById(ChromelyRequest req) { JObject jParse = ((JObject)JsonConvert.DeserializeObject(req.PostData.ToJson())); int id; try { id = jParse.Value <int>("id"); } catch (FormatException) { return(Response.ParseError(req.Id)); } Movie data; try { data = new Repository <Movie>().Data[id]; } catch (KeyNotFoundException) { return(new Response { status = 204, statusText = $"No movie found for {id}" }.ChromelyWrapper(req.Id)); } return(new Response { status = 200, data = JsonConvert.SerializeObject(data) }.ChromelyWrapper(req.Id)); }
private ChromelyResponse GetAudioDevices(ChromelyRequest request) { List <Object> devices = new List <Object>(); var enumerator = new MMDeviceEnumerator(); var outputDevices = enumerator.EnumerateAudioEndPoints(DataFlow.Render, DeviceState.Active); foreach (MMDevice e in outputDevices) { //Console.WriteLine($"{e.DataFlow} {e.FriendlyName} {e.DeviceFriendlyName} {e.State}"); devices.Add(new { ID = e.ID, Flow = e.DataFlow.ToString(), FriendlyName = e.FriendlyName, DeviceFriendlyName = e.DeviceFriendlyName, State = e.State.ToString() }); } var current = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console); //Console.WriteLine($"{current.DataFlow} {current.FriendlyName} {current.DeviceFriendlyName} {current.State}"); var sessions = current.AudioSessionManager.Sessions; /* for (int i = 0; i < sessions.Count; i++) * { * Console.WriteLine($"Info -> DN: {sessions[i].DisplayName} ID: {sessions[i].GetSessionIdentifier} VOL: {sessions[i].SimpleAudioVolume.Volume}"); * var process = FindLivingProcess(sessions[i].GetProcessID); * Console.WriteLine(process.ProcessName); * } */ return(new ChromelyResponse(request.Id) { Data = devices }); }
/// <summary> /// Parse analysis arguments in the given request /// </summary> /// <param name="request">Request</param> /// <returns>Arguments</returns> private static AnalysisArguments ParseAnalysisRequest(ChromelyRequest request) { // Parse postData var arguments = JsonSerializer.Deserialize <AnalysisArguments>(request.PostData?.ToString() ?? "{}"); // Check value if (float.IsNaN(arguments.Start) || float.IsNaN(arguments.End) || float.IsNaN(arguments.Step)) { throw new Exception("Analysis parameters contain NaN numbers"); } // Assert range if (arguments.Start > arguments.End) { throw new Exception($"Invalid analysis range from {arguments.Start} to {arguments.End}"); } // Assert step if (arguments.Step <= 0) { throw new Exception($"Invalid analysis step: {arguments.Step}"); } return(arguments); }
public ChromelyResponse Run(ChromelyRequest request) { if (request.RoutePath == null) { return(GetBadRequestResponse(request.Id)); } if (string.IsNullOrEmpty(request.RoutePath.Path)) { return(GetBadRequestResponse(request.Id)); } if (request.RoutePath.Path.ToLower().Equals("/info")) { return(GetInfo(request.Id)); } var route = ServiceRouteProvider.GetActionRoute(_container, request.RoutePath); if (route == null) { throw new Exception($"Route for path = {request.RoutePath} is null or invalid."); } var parameters = request.Parameters ?? request.RoutePath.Path.GetParameters()?.ToObjectDictionary(); var postData = request.PostData; return(ExecuteRoute(request.Id, request.RoutePath, parameters, postData, request.RawJson)); }
/// <summary> /// The save movies. /// </summary> /// <param name="request"> /// The request. /// </param> /// <returns> /// The <see cref="ChromelyResponse"/>. /// </returns> /// <exception cref="ArgumentNullException"> /// ArgumentNullException - request is null exception. /// </exception> /// <exception cref="Exception"> /// Exception - post data is null exception. /// </exception> private ChromelyResponse SaveMovies(ChromelyRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (request.PostData == null) { throw new Exception("Post data is null or invalid."); } var response = new ChromelyResponse(request.Id); var postDataJson = request.PostData.ToJson(); var options = new JsonSerializerOptions(); options.ReadCommentHandling = JsonCommentHandling.Skip; options.AllowTrailingCommas = true; var movies = JsonSerializer.Deserialize <List <MovieInfo> >(postDataJson, options); var rowsReceived = movies != null ? movies.Count : 0; response.Data = $"{DateTime.Now}: {rowsReceived} rows of data successfully saved."; return(response); }
public ChromelyResponse Update(ChromelyRequest req) { var index = int.Parse(req.Parameters["index"]); var text = req.PostData.ToString(); if (index >= 0 && index < lines.Length) { var trace = new List <LineTrace>(); if (req.Parameters.ContainsKey("autoReplace") && req.Parameters["autoReplace"] == "1") { var oldText = lines[index].Text; for (var i = 0; i < lines.Length; i++) { if (lines[i].Text == oldText) { trace.Add(new LineTrace(i, lines[i])); lines[i].Text = text.Replace(Environment.NewLine, "\n"); ExecuteScript($"window.$app.setLine({i},\"{text}\")"); } } } trace.Add(new LineTrace(index, lines[index])); lines[index].Text = text.Replace(Environment.NewLine, "\n"); PushHistory(trace.ToArray()); } return(Response.OK); }
public ChromelyResponse GetScreenTimeById(ChromelyRequest req) { int id; try { id = ((JObject)JsonConvert.DeserializeObject(req.PostData.ToJson())).Value <int>("id"); } catch (FormatException) { return(Response.ParseError(req.Id)); } try { return(new Response { status = 200, data = JsonConvert.SerializeObject(new Repository <ScreenTime>().Data[id]) }.ChromelyWrapper(req.Id)); } catch (KeyNotFoundException) { return(new Response { status = 400, statusText = "No ScreenTime found for the given id." }.ChromelyWrapper(req.Id)); } }
public ChromelyResponse RunPatcher(ChromelyRequest req) { var body = req.PostData.ToString().ToJson <Dictionary <string, object> >(); var source = body["source"].ToString(); var dest = body["dest"].ToString(); var loc1 = new LocalizationFile(source); var loc2 = new LocalizationFile(dest); var line1 = loc1.Process(); var line2 = loc2.ProcessWithIndexer(out var indexer); long index = 0; for (var i = 0; i < line1.Length; i++) { index = indexer.GetIndex(line1[i]); if (index >= 0 && index < line2.Length) { if (line1[i].HasSameAddress(line2[index])) { if (line1[i].Text != line2[index].Text) { line2[index].Text = line1[i].Text; } } } } File.WriteAllLines(dest, line2.Select(x => x.ToString()), Encoding.Unicode); return(Response.OK); }
/// <summary> /// The execute. /// </summary> /// <param name="request"> /// The request. /// </param> /// <returns> /// The <see cref="ChromelyResponse"/>. /// </returns> private ChromelyResponse Execute(ChromelyRequest request) { var response = new ChromelyResponse(request.Id) { ReadyState = (int)ReadyState.ResponseIsReady, Status = (int)System.Net.HttpStatusCode.OK, StatusText = "OK", Data = DateTime.Now.ToLongDateString() }; try { var scriptInfo = new ScriptInfo(request.PostData); var frame = FrameHandler.GetFrame(scriptInfo.FrameName); if (frame == null) { response.Data = $"Frame {scriptInfo.FrameName} does not exist."; return(response); } frame.ExecuteJavaScript(scriptInfo.Script, null, 0); response.Data = "Executed script :" + scriptInfo.Script; return(response); } catch (Exception e) { response.Data = e.Message; response.ReadyState = (int)ReadyState.RequestReceived; response.Status = (int)System.Net.HttpStatusCode.BadRequest; response.StatusText = "Error"; } return(response); }
private async Task <IChromelyResponse> ExecuteRouteAsync(string requestId, string routeUrl, IDictionary <string, object>?parameters, object?postData, string?requestData) { var route = _routeProvider.GetRoute(routeUrl); if (route is null) { return(_chromelyErrorHandler.HandleRouteNotFound(requestId, routeUrl)); } IChromelyResponse response; var request = new ChromelyRequest(requestId, routeUrl, parameters, postData, requestData); if (route.IsAsync) { response = await route.InvokeAsync(request); } else { response = route.Invoke(request); } response.ReadyState = (int)ReadyState.ResponseIsReady; response.Status = (response.Status == 0) ? (int)HttpStatusCode.OK : response.Status; response.StatusText = (string.IsNullOrWhiteSpace(response.StatusText) && (response.Status == (int)HttpStatusCode.OK)) ? "OK" : response.StatusText; return(response); }
/// <summary> /// The execute. /// </summary> /// <param name="request"> /// The request. /// </param> /// <returns> /// The <see cref="ChromelyResponse"/>. /// </returns> private ChromelyResponse Execute(ChromelyRequest request) { var response = new ChromelyResponse(request.Id) { ReadyState = (int)ReadyState.ResponseIsReady, Status = (int)System.Net.HttpStatusCode.OK, StatusText = "OK", Data = DateTime.Now.ToLongDateString() }; try { var scriptInfo = new ScriptInfo(request.PostData); var scriptExecutor = _config?.JavaScriptExecutor; if (scriptExecutor == null) { response.Data = $"Frame {scriptInfo.FrameName} does not exist."; return(response); } scriptExecutor.ExecuteScript(scriptInfo.Script); response.Data = "Executed script :" + scriptInfo.Script; return(response); } catch (Exception e) { Logger.Instance.Log.Error(e); response.Data = e.Message; response.ReadyState = (int)ReadyState.RequestReceived; response.Status = (int)System.Net.HttpStatusCode.BadRequest; response.StatusText = "Error"; } return(response); }
/// <summary> /// The on web socket message. /// </summary> /// <param name="server"> /// The server. /// </param> /// <param name="connectionId"> /// The connection id. /// </param> /// <param name="data"> /// The data. /// </param> /// <param name="dataSize"> /// The data size. /// </param> protected override void OnWebSocketMessage(CefServer server, int connectionId, IntPtr data, long dataSize) { Task.Factory.StartNew(() => { IntPtr tempPtr = IntPtr.Zero; IntPtr outIntPtr = IntPtr.Zero; try { var managedArray = new byte[dataSize]; Marshal.Copy(data, managedArray, 0, (int)dataSize); tempPtr = Marshal.AllocHGlobal(managedArray.Length); Marshal.Copy(managedArray, 0, tempPtr, managedArray.Length); var requestString = Encoding.UTF8.GetString(managedArray); var jsonData = JsonMapper.ToObject <JsonData>(requestString); var request = new ChromelyRequest(jsonData); var response = RequestTaskRunner.Run(request); WebsocketMessageSender.Send(connectionId, response); } catch (Exception exception) { Log.Error(exception); } finally { // Free the unmanaged memory. Marshal.FreeHGlobal(tempPtr); Marshal.FreeHGlobal(outIntPtr); } }); }
public static ChromelyResponse Response <TData>(this ChromelyRequest self, TData body) { return(new ChromelyResponse(self.Id) { Data = body }); }
private ChromelyResponse GetDirectories(ChromelyRequest request) { try { IDictionary <string, object> requestParams = request.Parameters; string path = (string)requestParams["path"]; bool includeFiles = (bool)requestParams["includeFiles"]; FileSystemService fileSystemService = FileSystemService.getInstance(); List <FsDirectory> directories = fileSystemService.GetDirectories(path); List <FsFile> files = new List <FsFile>(); if (includeFiles) { files = fileSystemService.GetFiles(path); } FsView fsView = new FsView(); fsView.directories = directories; fsView.files = files; string fsJson = JsonConvert.SerializeObject(fsView); ChromelyResponse response = new ChromelyResponse(); response.Data = fsJson; return(response); } catch (Exception e) { Log.Error(e); return(null); } }
/// <summary> /// The get 1. /// </summary> /// <param name="request"> /// The request. /// </param> /// <returns> /// The <see cref="ChromelyResponse"/>. /// </returns> private ChromelyResponse Get1(ChromelyRequest request) { var response = new ChromelyResponse { Data = 1000 }; return(response); }
public ChromelyResponse GetScreenTimes(ChromelyRequest request) { return(new Response { status = 200, data = JsonConvert.SerializeObject(new Repository <ScreenTime>().Data) }.ChromelyWrapper(request.Id)); }
/// <summary> /// The get 2. /// </summary> /// <param name="request"> /// The request. /// </param> /// <returns> /// The <see cref="ChromelyResponse"/>. /// </returns> private ChromelyResponse Get2(ChromelyRequest request) { var response = new ChromelyResponse { Data = "Test Get 2" }; return(response); }
/// <summary> /// The save. /// </summary> /// <param name="request"> /// The request. /// </param> /// <returns> /// The <see cref="ChromelyResponse"/>. /// </returns> private ChromelyResponse Save(ChromelyRequest request) { var response = new ChromelyResponse { Data = request.PostData }; return(response); }
public ChromelyResponse GetProducts(ChromelyRequest req) { return(new Response { status = 200, data = JsonConvert.SerializeObject(new Repository <Kijkwijzer>().Data) }.ChromelyWrapper(req.Id)); }