Exemple #1
0
        public Response GetResponse(RESTMethods Method, string URL)
        {
            Route         route;
            List <object> parameters;
            object        result;

            if (string.IsNullOrEmpty(URL))
            {
                throw new ArgumentNullException(nameof(URL));
            }

            route      = GetRoute(Method, URL);
            parameters = new List <object>();


            foreach (ParameterInfo pi in route.Binding.MethodInfo.GetParameters())
            {
                try
                {
                    parameters.Add(Convert.ChangeType(route.Get(pi.Name), pi.ParameterType));
                }
                catch
                {
                    throw new InvalidParameterException(URL);
                }
            }

            try
            {
                result = route.Binding.MethodInfo.Invoke(route.Binding.RouteHandler, parameters.ToArray());
                if (result is Response response)
                {
                    return(response);
                }

                return(serializer.Serialize(result));
            }
            catch
            {
                return(Response.InternalError);
            }
        }