public static string Transform(string newUriText, ParameterDescriptionEx d) { if (d.ParameterDescriptor.ParameterBinder == ParameterBinder.FromQuery) { bool queryExists = newUriText.Contains("?"); newUriText += queryExists ? "&" : "?"; if (d.ParameterDescriptor.ParameterType == typeofString && d.ParameterTypeReference.ArrayRank == 0) { if (d.ParameterTypeReference.BaseType == "System.String") { return(newUriText += $"{d.QName}=\" + ({d.Name}==null? \"\" : Uri.EscapeDataString({d.Name}))+\""); } else { return(newUriText += $"{d.QName}=\" + {d.Name}+\""); } } else if (d.ParameterDescriptor.ParameterType == typeofDateTime || d.ParameterDescriptor.ParameterType == typeofDateTimeOffset) { return(newUriText += $"{d.QName}=\" + {d.Name}.ToUniversalTime().ToString(\"yyyy-MM-ddTHH:mm:ss.fffffffZ\")+\""); } else if (d.ParameterDescriptor.ParameterType == typeofDateTimeNullable || d.ParameterDescriptor.ParameterType == typeofDateTimeOffsetNullable) { string replaced = newUriText.Replace($"\"&{d.QName}={{{d.Name}}}", $"({d.Name}.HasValue?\"&{d.QName}=\"+{d.Name}.Value.ToUniversalTime().ToString(\"yyyy-MM-ddTHH:mm:ss.fffffffZ\"):String.Empty)+\""); if (replaced == newUriText) { replaced = newUriText.Replace($"{d.Name}={{{d.Name}}}", $"\"+({d.Name}.HasValue?\"{d.QName}=\"+{d.Name}.Value.ToUniversalTime().ToString(\"yyyy-MM-ddTHH:mm:ss.fffffffZ\"):String.Empty)+\""); } return(replaced); } else if (IsNullablePrimitive(d.ParameterDescriptor.ParameterType)) { string replaced = newUriText.Replace($"\"&{d.QName}={{{d.Name}}}", $"({d.Name}.HasValue?\"&{d.QName}=\"+{d.Name}.Value.ToString():String.Empty)+\""); if (replaced == newUriText) { replaced = newUriText.Replace($"{d.Name}={{{d.Name}}}", $"\"+({d.Name}.HasValue?\"{d.QName}=\"+{d.Name}.Value.ToString():String.Empty)+\""); } return(replaced); } else if (d.ParameterTypeReference.ArrayRank > 0) { if (d.ParameterTypeReference.BaseType == "System.String") { string arrayQuery = $"String.Join(\"&\", {d.ParameterDescriptor.ParameterName}.Select(z => $\"{d.ParameterDescriptor.ParameterName}={{Uri.EscapeDataString(z.ToString())}}\"))+\""; return(newUriText + "\"+" + arrayQuery); } else { string arrayQuery = $"String.Join(\"&\", {d.ParameterDescriptor.ParameterName}.Select(z => $\"{d.ParameterDescriptor.ParameterName}={{z}}\"))+\""; return(newUriText + "\"+" + arrayQuery); } } else { return(newUriText += $"{d.QName}=\"+{d.Name}+\""); } } else { if (d.ParameterDescriptor.ParameterType == typeofString && d.ParameterTypeReference != null && d.ParameterTypeReference.ArrayRank == 0) { if (d.ParameterTypeReference.BaseType == "System.String") { return(newUriText.Replace($"{{{d.Name}}}", $"\"+ ({d.Name}==null? \"\" : Uri.EscapeDataString({d.Name}))+\"")); } else { return(newUriText.Replace($"{{{d.Name}}}", $"\"+{d.Name}+\"")); } } else if (d.ParameterDescriptor.ParameterType == typeofDateTime || d.ParameterDescriptor.ParameterType == typeofDateTimeOffset) { return(newUriText.Replace($"{{{d.Name}}}", $"\"+{d.Name}.ToUniversalTime().ToString(\"yyyy-MM-ddTHH:mm:ss.fffffffZ\")+\"")); } else if (d.ParameterDescriptor.ParameterType == typeofDateTimeNullable || d.ParameterDescriptor.ParameterType == typeofDateTimeOffsetNullable) { string replaced = newUriText.Replace($"\"&{d.QName}={{{d.Name}}}", $"({d.Name}.HasValue?\"&{d.QName}=\"+{d.Name}.Value.ToUniversalTime().ToString(\"yyyy-MM-ddTHH:mm:ss.fffffffZ\"):String.Empty)+\""); if (replaced == newUriText) { replaced = newUriText.Replace($"{d.Name}={{{d.Name}}}", $"\"+({d.Name}.HasValue?\"{d.QName}=\"+{d.Name}.Value.ToUniversalTime().ToString(\"yyyy-MM-ddTHH:mm:ss.fffffffZ\"):String.Empty)+\""); } return(replaced); } else if (IsNullablePrimitive(d.ParameterDescriptor.ParameterType)) { string replaced = newUriText.Replace($"\"&{d.QName}={{{d.Name}}}", $"({d.Name}.HasValue?\"&{d.QName}=\"+{d.Name}.Value.ToString():String.Empty)+\""); if (replaced == newUriText) { replaced = newUriText.Replace($"{d.Name}={{{d.Name}}}", $"\"+({d.Name}.HasValue?\"{d.QName}=\"+{d.Name}.Value.ToString():String.Empty)+\""); } return(replaced); } else if (d.ParameterTypeReference != null && d.ParameterTypeReference.ArrayRank > 0) { if (d.ParameterTypeReference.BaseType == "System.String") { string arrayQuery = $"String.Join(\"&\", {d.ParameterDescriptor.ParameterName}.Select(z => $\"{d.ParameterDescriptor.ParameterName}={{Uri.EscapeDataString(z.ToString())}}\"))+\""; return(newUriText + "\"+" + arrayQuery); } else { string arrayQuery = $"String.Join(\"&\", {d.ParameterDescriptor.ParameterName}.Select(z => $\"{d.ParameterDescriptor.ParameterName}={{z}}\"))+\""; return(newUriText + "\"+" + arrayQuery); } } else { return(newUriText.Replace($"{{{d.Name}}}", $"\"+{d.Name}+\"")); } } }
public static string TransformForTs(string newUriText, ParameterDescriptionEx d) { if (d.ParameterDescriptor.ParameterBinder == ParameterBinder.FromQuery) { bool queryExists = newUriText.Contains("?"); newUriText += queryExists ? "&" : "?"; if (d.ParameterDescriptor.ParameterType == typeofString && d.ParameterTypeReference.ArrayRank == 0) { if (d.ParameterTypeReference.BaseType == "System.String") { return(newUriText += $"{d.Name}=' + ({d.Name} == null ? '' : encodeURIComponent({d.Name})) + '"); } else { return(newUriText += $"{d.Name}=' + {d.Name} + '"); } } else if (d.ParameterDescriptor.ParameterType == typeofDateTime || d.ParameterDescriptor.ParameterType == typeofDateTimeOffset) { return(newUriText += $"{d.Name}=' + {d.Name}.toISOString() + '"); } else if (d.ParameterTypeReference.ArrayRank > 0) { if (d.ParameterTypeReference.BaseType == "System.String") { string arrayQuery = $"{d.ParameterDescriptor.ParameterName}.map(z => `{d.ParameterDescriptor.ParameterName}=${{encodeURIComponent(z)}}`).join('&')"; return(newUriText + "' + " + arrayQuery + " + '"); } else { string arrayQuery = $"{d.ParameterDescriptor.ParameterName}.map(z => `{d.ParameterDescriptor.ParameterName}=${{z}}`).join('&')"; return(newUriText + "' + " + arrayQuery + " + '"); } } else { return(newUriText += $"{d.Name}=' + {d.Name} + '"); } } else { if (d.ParameterDescriptor.ParameterType == typeofString && d.ParameterTypeReference.ArrayRank == 0) { if (d.ParameterTypeReference.BaseType == "System.String") { return(newUriText.Replace($"{{{d.Name}}}", $"' + ({d.Name} == null ? '' : encodeURIComponent({d.Name})) + '")); } else { return(newUriText.Replace($"{{{d.Name}}}", $"' + {d.Name} + '")); } } else if (d.ParameterDescriptor.ParameterType == typeofDateTime || d.ParameterDescriptor.ParameterType == typeofDateTimeOffset) { return(newUriText.Replace($"{{{d.Name}}}", $"' + {d.Name}.toISOString() + '")); } else if (d.ParameterDescriptor.ParameterType == typeofDateTimeNullable || d.ParameterDescriptor.ParameterType == typeofDateTimeOffsetNullable) { string replaced = newUriText.Replace($"'&{d.QName}={{{d.Name}}}", $"({d.Name} ? '&{d.QName}=' + {d.Name}.toISOString() : '') + '"); if (replaced == newUriText) { replaced = newUriText.Replace($"{d.Name}={{{d.Name}}}", $"' + ({d.Name} ? '{d.Name}=' + {d.Name}.toISOString() : '') + '"); } return(replaced); } else if (IsNullablePrimitive(d.ParameterDescriptor.ParameterType)) { string replaced = newUriText.Replace($"'&{d.QName}={{{d.Name}}}", $"({d.Name} ? '&{d.QName}=' + {d.Name}.toString() : '') + '"); if (replaced == newUriText) { replaced = newUriText.Replace($"{d.Name}={{{d.Name}}}", $"' + ({d.Name} ? '{d.Name}=' + {d.Name}.toString() : '') + '"); } return(replaced); } else if (d.ParameterTypeReference.ArrayRank > 0) { if (d.ParameterTypeReference.BaseType == "System.String") { string arrayQuery = $"{d.ParameterDescriptor.ParameterName}.map(z => `{d.ParameterDescriptor.ParameterName}=${{encodeURIComponent(z)}}`).join('&')"; string placeHolder = $"{d.ParameterDescriptor.ParameterName}={{{d.ParameterDescriptor.ParameterName}}}"; return(newUriText.Replace(placeHolder, "' + " + arrayQuery)); } else { string arrayQuery = $"{d.ParameterDescriptor.ParameterName}.map(z => `{d.ParameterDescriptor.ParameterName}=${{z}}`).join('&')"; string placeHolder = $"{d.ParameterDescriptor.ParameterName}={{{d.ParameterDescriptor.ParameterName}}}"; return(newUriText.Replace(placeHolder, "' + " + arrayQuery)); } } else { return(newUriText.Replace($"{{{d.Name}}}", $"' + {d.Name} + '")); } } }