Beispiel #1
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, _serializerUtil.SerializerOptions);

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

                    bool isRequestAsync = _routeProvider.IsActionRouteAsync(path);

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

                            var response     = await _requestTaskRunner.RunAsync(id, path, parameters, postData, request);
                            var jsonResponse = _serializerUtil.ObjectToJson(response);

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

                            var response     = _requestTaskRunner.Run(id, path, parameters, postData, request);
                            var jsonResponse = _serializerUtil.ObjectToJson(response);

                            callback.Success(jsonResponse);
                        });
                    }

                    return(true);
                }
            }
            catch (Exception exception)
            {
                var response     = _chromelyErrorHandler.HandleError(requestData?.ToRequest(), exception);
                var jsonResponse = _serializerUtil.ObjectToJson(response);
                callback.Failure(100, jsonResponse);
                return(false);
            }

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