private static string BuildUri(object model, string uriTemplate) { int queryStart = uriTemplate.IndexOf("?", StringComparison.Ordinal); var uri = new StringBuilder(uriTemplate); var variables = new HashSet <string>(UriTemplateHelper.ExtractVariableNames(uriTemplate), StringComparer.OrdinalIgnoreCase); if (variables.Count > 0) { foreach (var variable in variables) { var prop = model.GetType().GetProperty(variable); if (prop == null) { return(null); } var sub = "{" + variable + "}"; var v = prop.GetValue(model, null); if (v == null) { return(null); } var value = v.ToString(); if (queryStart >= 0) { if (uriTemplate.IndexOf(sub, StringComparison.OrdinalIgnoreCase) > queryStart) { value = Uri.EscapeDataString(value); } } uri.Replace(sub, value); } } return(uri.ToString()); }
public void ShouldExtractPathAndQueryAsExpected(string uriTemplate, string expectedPath, string expectedQueryParameters) { UriTemplateHelper.ExtractPathAndQuery(uriTemplate, out string path, out IList <string> set); path.ShouldBeEquivalentTo(expectedPath); set.Should() .BeEquivalentTo(expectedQueryParameters.Split(new[] { "," }, System.StringSplitOptions.RemoveEmptyEntries)); }
public IRestRequest WithUriTemplate(string uriTemplate) { uriTemplate = UriTemplateHelper.AppendUriTemplateSuffix(this.uriTemplatePrefix + uriTemplate, this.uriTemplateSuffix); this.uriTemplate = UriTemplate.For(uriTemplate, false) .WithValueFormatter(this.valueFormatter); return(this); }
private static string BuildUri(object model, string uriTemplate) { var uri = new StringBuilder(uriTemplate); var variables = new HashSet <string>(UriTemplateHelper.ExtractVariableNames(uriTemplate), StringComparer.OrdinalIgnoreCase); if (variables.Count > 0) { foreach (var variable in variables) { var prop = model.GetType().GetProperty(variable); if (prop == null) { continue; } var value = prop.GetValue(model, null) ?? "NULL"; uri.Replace("{" + variable + "}", value.ToString()); } } return(uri.ToString()); }
public void ShouldBeMergedAsExpected(string uriTemplate, string uriTemplateSuffix, string expectedUriTemplate) { string actualUriTemplate = UriTemplateHelper.AppendUriTemplateSuffix(uriTemplate, uriTemplateSuffix); actualUriTemplate.ShouldBeEquivalentTo(expectedUriTemplate); }