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); }
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); }