예제 #1
0
        /// <inheritdoc cref="IFeaturePage.PostBackProc"/>
        public virtual string PostBackProc(string data, string user, int userRights)
        {
            //TODO user
            //TODO userRights
            if (string.IsNullOrWhiteSpace(data))
            {
                return(JsonError.CreateJson($"{Title} - POST error : data is null"));
            }

            JsonRequest request;

            try {
                var featureJsonData = GenericJsonData.FromJson(data);
                request = new JsonRequest(featureJsonData);
            }
            catch (Exception exception) {
                //TODO better error catching
                Console.WriteLine(exception);
                return(JsonError.CreateJson($"{Title} - POST error : {exception.Message}"));
            }

            if (RequestMap == null)
            {
                RequestMap = new Dictionary <string, Func <JsonRequest, JsonResponse> >();
            }

            if (!RequestMap.ContainsKey(request.Request))
            {
                return(JsonError.CreateJson($"{Title} - POST error : no request callback registered for the key {request.Request}"));
            }

            try {
                var requestCallback = RequestMap[request.Request];
                var response        = requestCallback.Invoke(request);
                return(response.ToJson());
            }
            catch (Exception exception) {
                //TODO better error catching
                Console.WriteLine(exception);
                return(JsonError.CreateJson($"{Title} - POST error : {exception.Message}"));
            }
        }