| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | 
							- //------------------------------------------------------------------------------
 
- // based on https://github.com/Microsoft/referencesource/blob/master/System.Web/Util/HttpEncoder.cs
 
- //   and https://github.com/Microsoft/referencesource/blob/master/System.Web/Util/HttpEncoderUtility.cs
 
- //
 
- // <copyright file="HttpEncoder.cs" company="Microsoft">
 
- //     Copyright (c) Microsoft Corporation.  All rights reserved.
 
- // </copyright>
 
- // <copyright file="HttpEncoderUtility.cs" company="Microsoft">
 
- //     Copyright (c) Microsoft Corporation.  All rights reserved.
 
- // </copyright>
 
- //------------------------------------------------------------------------------
 
- /*
 
-  * Copyright (c) 2009 Microsoft Corporation
 
-  */
 
- namespace PTMedicalInsurance.APIGATEWAY_SDK
 
- {
 
-     using System;
 
-     using System.Text;
 
-     public partial class Signer
 
-     {
 
-         private static char IntToHex(int n)
 
-         {
 
-             if (n <= 9)
 
-                 return (char)(n + (int)'0');
 
-             else
 
-                 return (char)(n - 10 + (int)'A');
 
-         }
 
-         private static bool IsUrlSafeChar(char ch)
 
-         {
 
-             if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z' || ch >= '0' && ch <= '9')
 
-                 return true;
 
-             switch (ch)
 
-             {
 
-                 case '-':
 
-                 case '_':
 
-                 case '.':
 
-                 case '~':
 
-                     return true;
 
-             }
 
-             return false;
 
-         }
 
-         private static byte[] UrlEncode(byte[] bytes, int offset, int count)
 
-         {
 
-             int cUnsafe = 0;
 
-             // count them first
 
-             for (int i = 0; i < count; i++)
 
-             {
 
-                 char ch = (char)bytes[offset + i];
 
-                 if (!IsUrlSafeChar(ch))
 
-                     cUnsafe++;
 
-             }
 
-             // nothing to expand?
 
-             if (cUnsafe == 0)
 
-             {
 
-                 // DevDiv 912606: respect "offset" and "count"
 
-                 if (0 == offset && bytes.Length == count)
 
-                 {
 
-                     return bytes;
 
-                 }
 
-                 else
 
-                 {
 
-                     var subarray = new byte[count];
 
-                     Buffer.BlockCopy(bytes, offset, subarray, 0, count);
 
-                     return subarray;
 
-                 }
 
-             }
 
-             // expand not 'safe' characters into %XX, spaces to +s
 
-             byte[] expandedBytes = new byte[count + cUnsafe * 2];
 
-             int pos = 0;
 
-             for (int i = 0; i < count; i++)
 
-             {
 
-                 byte b = bytes[offset + i];
 
-                 char ch = (char)b;
 
-                 if (IsUrlSafeChar(ch))
 
-                 {
 
-                     expandedBytes[pos++] = b;
 
-                 }
 
-                 else
 
-                 {
 
-                     expandedBytes[pos++] = (byte)'%';
 
-                     expandedBytes[pos++] = (byte)IntToHex((b >> 4) & 0xf);
 
-                     expandedBytes[pos++] = (byte)IntToHex(b & 0x0f);
 
-                 }
 
-             }
 
-             return expandedBytes;
 
-         }
 
-         private static string UrlEncode(string value)
 
-         {
 
-             if (value == null)
 
-                 return null;
 
-             byte[] bytes = Encoding.UTF8.GetBytes(value);
 
-             return Encoding.UTF8.GetString(UrlEncode(bytes, 0, bytes.Length));
 
-         }
 
-     }
 
- }
 
 
  |