public static IResponse Execute(ApiCall call, IApiProvider apiProvider) { ApiMethod apimethod = null; var apiobject = apiProvider.Get(call.Command.ObjectType); if (apiobject != null) { apimethod = Methods.ApiMethodManager.Get(apiobject, call.Command.Method); } if (apimethod == null && apiProvider.GetMethod != null) { apimethod = apiProvider.GetMethod(call); } if (apimethod == null) { var result = new JsonResponse() { Success = false }; result.Messages.Add(Hardcoded.GetValue("Api method Not Found", call.Context)); return(result); } // check permission if (apiProvider.CheckAccess != null) { if (!apiProvider.CheckAccess(call.Context, apimethod)) { var result = new JsonResponse() { Success = false }; result.Messages.Add(Hardcoded.GetValue("Unauthorized access", call.Context)); return(result); } } if (call.IsFake) { var fakedata = Lib.Development.FakeData.GetFakeValue(apimethod.ReturnType); return(new JsonResponse(fakedata) { Success = true }); } if (apiobject != null) { if (!ValidateRequirement(call.Command, call.Context, apiProvider)) { var result = new JsonResponse() { Success = false }; result.Messages.Add(Hardcoded.GetValue("User or website not valid", call.Context)); return(result); } } List <string> errors = new List <string>(); if (!ValideAssignModel(apimethod, call, errors.Add)) { var result = new JsonResponse() { Success = false }; result.Messages.AddRange(errors); return(result); } if (!ValideParameters(apimethod, call, errors.Add)) { var result = new JsonResponse() { Success = false }; result.Messages.AddRange(errors); return(result); } try { return(ExecuteMethod(call, apimethod)); } catch (Exception ex) { var result = new JsonResponse() { Success = false }; result.Messages.Add(ex.Message); Kooboo.Data.Log.Instance.Exception.WriteException(ex); return(result); } }