Beispiel #1
0
        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());
        }
Beispiel #2
0
 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));
 }
Beispiel #3
0
 public IRestRequest WithUriTemplate(string uriTemplate)
 {
     uriTemplate      = UriTemplateHelper.AppendUriTemplateSuffix(this.uriTemplatePrefix + uriTemplate, this.uriTemplateSuffix);
     this.uriTemplate = UriTemplate.For(uriTemplate, false)
                        .WithValueFormatter(this.valueFormatter);
     return(this);
 }
Beispiel #4
0
        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());
        }
Beispiel #5
0
        public void ShouldBeMergedAsExpected(string uriTemplate, string uriTemplateSuffix, string expectedUriTemplate)
        {
            string actualUriTemplate = UriTemplateHelper.AppendUriTemplateSuffix(uriTemplate, uriTemplateSuffix);

            actualUriTemplate.ShouldBeEquivalentTo(expectedUriTemplate);
        }