Beispiel #1
0
            public override bool OnQuery(CefBrowser browser, CefFrame frame, long queryId, string request, bool persistent, CefMessageRouterBrowserSide.Callback callback)
            {
                if (request == "wait5")
                {
                    new Thread(() =>
                    {
                        Thread.Sleep(5000);
                        callback.Success("success! responded after 5 sec timeout."); // TODO: at this place crash can occurs, if application closed
                    }).Start();
                    return(true);
                }

                if (request == "wait5f")
                {
                    new Thread(() =>
                    {
                        Thread.Sleep(5000);
                        callback.Failure(12345, "success! responded after 5 sec timeout. responded as failure.");
                    }).Start();
                    return(true);
                }

                if (request == "wait30")
                {
                    new Thread(() =>
                    {
                        Thread.Sleep(30000);
                        callback.Success("success! responded after 30 sec timeout.");
                    }).Start();
                    return(true);
                }

                if (request == "noanswer")
                {
                    return(true);
                }

                var chars = request.ToCharArray();

                Array.Reverse(chars);
                var response = new string(chars);

                callback.Success(response);
                return(true);
            }
Beispiel #2
0
    public override bool OnQuery(CefBrowser browser, CefFrame frame, long queryId, string request, bool persistent, CefMessageRouterBrowserSide.Callback callback)
    {
        request?requestData = null;

        try
        {
            requestData = JsonSerializer.Deserialize <request>(request, _dataTransferOptions.SerializerOptions as JsonSerializerOptions);

            if (requestData is not null)
            {
                var id   = requestData.id ?? string.Empty;
                var path = requestData.url ?? string.Empty;

                bool isRequestAsync = _routeProvider.IsRouteAsync(path);

                if (isRequestAsync)
                {
                    Task.Run(async() =>
                    {
                        var parameters = requestData.parameters;
                        var postData   = requestData.postData;

                        var response     = await _requestHandler.ExecuteAsync(id, path, parameters, postData, request);
                        var jsonResponse = _dataTransferOptions.ConvertObjectToJson(response);

                        callback.Success(jsonResponse);
                    });
                }
                else
                {
                    Task.Run(() =>
                    {
                        var parameters = requestData.parameters;
                        var postData   = requestData.postData;

                        var response     = _requestHandler.Execute(id, path, parameters, postData, request);
                        var jsonResponse = _dataTransferOptions.ConvertObjectToJson(response);

                        callback.Success(jsonResponse);
                    });
                }

                return(true);
            }
        }
        catch (Exception exception)
        {
            var chromelyRequest = requestData?.ToRequest();
            if (chromelyRequest is null)
            {
                chromelyRequest = new ChromelyRequest();
            }

            var response     = _chromelyErrorHandler.HandleError(chromelyRequest, exception);
            var jsonResponse = _dataTransferOptions.ConvertObjectToJson(response);
            callback.Failure(100, jsonResponse);
            return(false);
        }

        callback.Failure(100, "Request is not valid.");
        return(false);
    }