internal MappedParameters Map(Request?request, IList <RawPathParameter> parameters) { var mapped = new List <MappedParameter>(parameters.Count); foreach (var typed in _to.Parameters) { if (typed.IsBody) { var body = MapBodyFrom(request); mapped.Add(new MappedParameter(typed.Type, body)); } else { var raw = RawPathParameter.Named(typed.Name, parameters); if (raw == null) { break; } var other = MapOtherFrom(raw); mapped.Add(new MappedParameter(typed.Type, other)); } } mapped.AddRange(_additionalParameters); return(new MappedParameters(Id, _method, _to.MethodName, mapped)); }
private object MapOtherFrom(RawPathParameter parameter) { var type = _to.ParameterOf(parameter.Name).Type; switch (type) { case "String": case "string": return(parameter.Value); case "int": case "Integer": return(int.Parse(parameter.Value)); case "long": case "Long": return(long.Parse(parameter.Value)); case "bool": case "Boolean": return(bool.Parse(parameter.Value)); case "double": case "Double": return(double.Parse(parameter.Value)); case "short": case "Short": return(short.Parse(parameter.Value)); case "float": case "Float": return(float.Parse(parameter.Value)); case "char": case "Character": return(parameter.Value[0]); case "byte": case "Byte": return(byte.Parse(parameter.Value)); default: return(null); } }