Пример #1
0
        private List <RestRequest> DeserializedMultiRequest(MultirequestController multirequestController, JObject jObject)
        {
            List <RestRequest> requests = new List <RestRequest>();

            int index = 1;

            while (jObject[index.ToString()] != null)
            {
                JObject     jRequest = (JObject)jObject[index.ToString()];
                RestRequest request  = new RestRequest();
                request.Service   = jRequest["service"].ToString();
                request.Action    = jRequest["action"].ToString();
                request.Arguments = new Dictionary <string, object>();

                MethodInfo methodInfo = multirequestController.GetMethodInfo(request.Service, request.Action);
                foreach (ParameterInfo parameterInfo in methodInfo.GetParameters())
                {
                    string name = parameterInfo.Name;

                    JToken jToken = jRequest[name];
                    if (jToken == null || jToken.Type == JTokenType.Null)
                    {
                        if (!parameterInfo.IsOptional)
                        {
                            throw new RestRequestException(RestRequestException.MISSING_PARAMETER, name);
                        }
                    }
                    else if (jToken.Type == JTokenType.String && MultirequestController.MultirequestRegex.IsMatch((string)jToken))
                    {
                        request.Arguments.Add(name, (string)jToken);
                    }
                    else
                    {
                        request.Arguments.Add(name, RestObject.FromJson(parameterInfo.ParameterType, jToken));
                    }
                }

                requests.Add(request);
                index++;
            }

            return(requests);
        }
Пример #2
0
        private Dictionary <string, object> DeserializeActionParameters(JObject jObject, List <HttpParameterDescriptor> propertiesDescriptors)
        {
            Dictionary <string, object> outputArguments = new Dictionary <string, object>();

            foreach (HttpParameterDescriptor propertyDescriptor in propertiesDescriptors)
            {
                string name = propertyDescriptor.ParameterName;

                JToken jToken = jObject[name];
                if (jToken == null || jToken.Type == JTokenType.Null)
                {
                    if (!propertyDescriptor.IsOptional)
                    {
                        throw new RestRequestException(RestRequestException.MISSING_PARAMETER, name);
                    }
                }
                else
                {
                    outputArguments.Add(name, RestObject.FromJson(propertyDescriptor.ParameterType, jToken));
                }
            }

            return(outputArguments);
        }