Example #1
0
        private void CustomResultHandler(MulticastDelegate resultHander, KApiResponse response)
        {
            var func   = resultHander.Target as ScriptFunctionInstance;
            var result = func.Call(func, new[] { JsValue.FromObject(func.Engine, response.Code), JsValue.FromObject(func.Engine, response.Data) }).ToObject();

            if (result != null)
            {
                _renderContext.Response.AppendString(Helpers.ToJson(result));
            }
        }
Example #2
0
 void DefaultResultHandler(KApiResponse response)
 {
     _renderContext.Response.StatusCode = response.Code;
     _renderContext.SetItem(new CustomStatusCode()
     {
         IsCustomSet = true, Code = response.Code
     });
     if (response.Code > 300 && response.Code <= 302)
     {
         _renderContext.Response.Redirect(302, response.Data);
     }
     else if (response.Data != null)
     {
         _renderContext.Response.AppendString(response.Data);
     }
 }
Example #3
0
        private void CallAction(MulticastDelegate action, string method, IDictionary <string, object>[] metas, MulticastDelegate resultHander)
        {
            if (_renderContext.Request.Method != method)
            {
                return;
            }
            KApiResponse response;

            try
            {
                metas = Helpers.NamedMetas(metas);
                var func       = action.Target as ScriptFunctionInstance;
                var parameters = GetParameters(func, metas);
                var result     = func.Call(func, parameters).ToObject();

                if (result is KApiResponse)
                {
                    response = result as KApiResponse;
                }
                else
                {
                    var data = result == null ? null : Helpers.ToJson(result);
                    response = new KApiResponse(200, data);
                }
            }
            catch (KApiException e)
            {
                response = new KApiResponse(400, e.Message);
            }
            catch (Exception e)
            {
                response = new KApiResponse(500, e.ToString());
            }

            if (resultHander == null)
            {
                DefaultResultHandler(response);
            }
            else
            {
                CustomResultHandler(resultHander, response);
            }
        }