Exemplo n.º 1
0
        internal static string EncodeString(string data, UrlConstants.EncodingContext encodingContext)
        {
            if (data.Length == 0)
            {
                return(UrlConstants.kEmptyStrRep);
            }
            else
            {
                string reservedCharsRegex;
                switch (encodingContext)
                {
                case UrlConstants.EncodingContext.Path:
                    reservedCharsRegex = UrlConstants.kPathReservedCharsRegex;
                    break;

                case UrlConstants.EncodingContext.Query:
                    reservedCharsRegex = UrlConstants.kQueryReservedCharsRegex;
                    break;

                default:
                    reservedCharsRegex = "";
                    break;
                }
                return(Regex.Replace(Uri.EscapeUriString(data), reservedCharsRegex, _ => Uri.HexEscape(Convert.ToChar(_.Value.ToString()))));
            }
        }
Exemplo n.º 2
0
 internal static string EncodeDataObject(object data, UrlConstants.EncodingContext encodingContext)
 {
     if (data is Dictionary <string, object> )
     {
         return(EncodeDataMap((Dictionary <string, object>)data, encodingContext));
     }
     else if (data is List <object> )
     {
         return(EncodeDataList((List <object>)data, encodingContext));
     }
     else if (data is RecordTemplate)
     {
         return(EncodeDataObject((data as RecordTemplate).Data(), encodingContext));
     }
     else if (data is EnumTemplate)
     {
         return(EncodeDataObject((data as EnumTemplate).Data(), encodingContext));
     }
     else if (data is UnionTemplate)
     {
         return(EncodeDataObject((data as UnionTemplate).Data(), encodingContext));
     }
     else if (data is Bytes)
     {
         return(EncodeDataObject((data as Bytes).Data(), encodingContext));
     }
     else if (data is bool)
     {
         return(((bool)data) ? "true" : "false");
     }
     else
     {
         return(EncodeString(data.ToString(), encodingContext));
     }
 }
Exemplo n.º 3
0
        internal static string EncodeDataList(List <object> dataList, UrlConstants.EncodingContext encodingContext)
        {
            List <string> encodedElements = new List <string>();

            foreach (object element in dataList)
            {
                encodedElements.Add(EncodeDataObject(element, encodingContext));
            }
            return(String.Format("{0}{1}{2}{3}", UrlConstants.kListPrefix, UrlConstants.kObjectStart, String.Join(UrlConstants.kItemSep, encodedElements), UrlConstants.kObjectEnd));
        }
Exemplo n.º 4
0
        internal static string EncodeDataMap(Dictionary <string, object> dataMap, UrlConstants.EncodingContext encodingContext)
        {
            List <string> encodedElements = new List <string>();

            foreach (KeyValuePair <string, object> pair in dataMap)
            {
                encodedElements.Add(EncodeMapPair(pair.Key, pair.Value, encodingContext));
            }
            // Sort and join with the Rest.li encoded map delimiter
            encodedElements.Sort();
            return(String.Format("{0}{1}{2}", UrlConstants.kObjectStart, String.Join(UrlConstants.kItemSep, encodedElements), UrlConstants.kObjectEnd));
        }
Exemplo n.º 5
0
 private static string EncodeMapPair(string key, object value, UrlConstants.EncodingContext encodingContext)
 {
     return(String.Format("{0}{1}{2}", EncodeString(key, encodingContext), UrlConstants.kKeyValueSep, EncodeDataObject(value, encodingContext)));
 }