/// <summary> /// overrides the default /// </summary> /// <param name="name"></param> /// <returns>the associated decoded value for the specified name</returns> public new string this[string name] { get { return(HttpUtility.UrlDecode(base[name])); } }
public System.ServiceModel.Channels.Message SerializeReply(MessageVersion messageVersion, object[] parameters, object result) { Message request = OperationContext.Current.RequestContext.RequestMessage; // This code is based on ContentTypeBasedDispatch example in WCF REST Starter Kit Samples // It calls either HttpRequestMessageProperty prop = (HttpRequestMessageProperty)request.Properties[HttpRequestMessageProperty.Name]; NameValueCollection queryString = HttpUtility.ParseQueryString(prop.QueryString); string accepts = prop.Headers[HttpRequestHeader.Accept]; if (queryString["$format"] != null) { if (queryString["$format"] == "xml") { return(XmlDispatchMessageFormatter.SerializeReply(messageVersion, parameters, result)); } if (queryString["$format"] == "json") { return(JsonDispatchMessageFormatter.SerializeReply(messageVersion, parameters, result)); } } else if (accepts != null) { if (accepts.Contains("text/xml") || accepts.Contains("application/xml") || queryString["$format"] == "xml") { return(XmlDispatchMessageFormatter.SerializeReply(messageVersion, parameters, result)); } if (accepts.Contains("application/json") || queryString["$format"] == "json") { return(JsonDispatchMessageFormatter.SerializeReply(messageVersion, parameters, result)); } } else { string contentType = prop.Headers[HttpRequestHeader.ContentType]; if (contentType != null) { if (contentType.Contains("text/xml") || contentType.Contains("application/xml") || queryString["$format"] == "xml") { return(XmlDispatchMessageFormatter.SerializeReply(messageVersion, parameters, result)); } if (contentType.Contains("application/json") || queryString["$format"] == "json") { return(JsonDispatchMessageFormatter.SerializeReply(messageVersion, parameters, result)); } } } //Use JSON by default... return(JsonDispatchMessageFormatter.SerializeReply(messageVersion, parameters, result)); }
/// <summary> /// outputs the querystring object to a string /// </summary> /// <returns>the encoded querystring as it would appear in a browser</returns> public override string ToString() { var builder = new StringBuilder(); for (var i = 0; i < base.Keys.Count; i++) { if (!string.IsNullOrEmpty(base.Keys[i])) { foreach (string val in base[base.Keys[i]].Split(',')) { builder.Append((builder.Length == 0) ? "?" : "&").Append(HttpUtility.UrlEncodeUnicode(base.Keys[i])).Append("=").Append(val); } } } return(builder.ToString()); }
public object ParseQueryString(object query) { if ((query is string) == false) { return(Null.Value); } var result = Engine.Object.Construct(); var dict = HttpUtility.ParseQueryString(query as string); foreach (var key in dict.AllKeys) { result.SetPropertyValue(key, dict[key], false); } return(result); }
/// <summary> /// adds a name value pair to the collection /// </summary> /// <param name="name">the name</param> /// <param name="value">the value associated to the name</param> /// <param name="isUnique">true if the name is unique within the querystring. This allows us to override existing values</param> /// <returns>the QueryString object </returns> public QueryString Add(string name, string value, bool isUnique) { string existingValue = base[name]; if (string.IsNullOrEmpty(existingValue)) { base.Add(name, HttpUtility.UrlEncodeUnicode(value)); } else if (isUnique) { base[name] = HttpUtility.UrlEncodeUnicode(value); } else { base[name] += "," + HttpUtility.UrlEncodeUnicode(value); } return(this); }
public Uri GetFullUri() { var parameters = new List <string>(); if (!FilterParameter.IsNullOrWhiteSpace()) { parameters.Add(BuildParameter(StringConstants.FilterParameter, HttpUtility.UrlEncode(FilterParameter))); } if (!SelectParameter.IsNullOrWhiteSpace()) { parameters.Add(BuildParameter(StringConstants.SelectParameter, SelectParameter)); } if (!SkipParameter.IsNullOrWhiteSpace()) { parameters.Add(BuildParameter(StringConstants.SkipParameter, SkipParameter)); } if (!TakeParameter.IsNullOrWhiteSpace()) { parameters.Add(BuildParameter(StringConstants.TopParameter, TakeParameter)); } if (OrderByParameter.Any()) { parameters.Add(BuildParameter(StringConstants.OrderByParameter, OrderByParameter.Join(","))); } if (!ExpandParameter.IsNullOrWhiteSpace()) { parameters.Add(BuildParameter(StringConstants.ExpandParameter, ExpandParameter)); } var builder = new UriBuilder(m_serviceBase); builder.Query = (string.IsNullOrEmpty(builder.Query) ? string.Empty : "&") + parameters.Join("&"); var resultUri = builder.Uri; return(resultUri); }