Exemple #1
0
        public override bool OnQuery(CefBrowser browser, CefFrame frame, long queryId, string request, bool persistent, CefMessageRouterBrowserSide.Callback callback)
        {
            var options = new JsonSerializerOptions();

            options.ReadCommentHandling = JsonCommentHandling.Skip;
            options.AllowTrailingCommas = true;
            var requestData = JsonSerializer.Deserialize <request>(request, options);

            var method = requestData.method ?? string.Empty;

            if (RoutePath.ValidMethod(method))
            {
                new Task(() =>
                {
                    var id         = requestData.id ?? string.Empty;
                    var path       = requestData.url ?? string.Empty;
                    var parameters = requestData.parameters;
                    var postData   = requestData.postData;

                    var routePath    = new RoutePath(method, path);
                    var response     = _requestTaskRunner.Run(id, routePath, parameters, postData, request);
                    var jsonResponse = response.ToJson();

                    callback.Success(jsonResponse);
                }).Start();

                return(true);
            }

            callback.Failure(100, "Request is not valid.");
            return(false);
        }
        /// <summary>
        /// The on query.
        /// </summary>
        /// <param name="browser">
        /// The browser.
        /// </param>
        /// <param name="frame">
        /// The frame.
        /// </param>
        /// <param name="queryId">
        /// The query id.
        /// </param>
        /// <param name="request">
        /// The request.
        /// </param>
        /// <param name="persistent">
        /// The persistent.
        /// </param>
        /// <param name="callback">
        /// The callback.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public override bool OnQuery(CefBrowser browser, CefFrame frame, long queryId, string request, bool persistent, CefMessageRouterBrowserSide.Callback callback)
        {
            var requestData = JsonMapper.ToObject(request);
            var method      = requestData.Keys.Contains("method") ? requestData["method"].ToString() : string.Empty;

            method = string.IsNullOrWhiteSpace(method) ? string.Empty : method;

            if (RoutePath.ValidMethod(method))
            {
                new Task(() =>
                {
                    var id         = requestData.Keys.Contains("id") ? requestData["id"].ToString() : string.Empty;
                    var path       = requestData.Keys.Contains("url") ? requestData["url"].ToString() : string.Empty;
                    var parameters = requestData.Keys.Contains("parameters") ? requestData["parameters"] : null;
                    var postData   = requestData.Keys.Contains("postData") ? requestData["postData"] : null;

                    var routePath       = new RoutePath(method, path);
                    var response        = RequestTaskRunner.Run(id, routePath, parameters, postData, request);
                    string jsonResponse = response.EnsureJson();

                    callback.Success(jsonResponse);
                }).Start();

                return(true);
            }

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