Ejemplo n.º 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());
        }
Ejemplo n.º 2
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());
        }