/// <summary> /// Parses Authorization header and stores user info in the config. /// </summary> public static void ParseAuthorization(XmlRpcHttpRequestConfig config, String line) { if (String.IsNullOrEmpty(line)) { return; } line = line.Trim(); IEnumerator it = line.Split(' ', '\t', '\n', '\r', '\f').GetEnumerator(); if (!it.MoveNext()) { return; } if (!String.Equals("basic", (String)it.Current, StringComparison.OrdinalIgnoreCase)) { return; } if (!it.MoveNext()) { return; } // TODO handle exception Byte[] bytes = Convert.FromBase64String((String)it.Current); Encoding enc = String.IsNullOrEmpty(config.BasicEncoding) ? Encoding.UTF8 : Encoding.GetEncoding(config.BasicEncoding); String s = enc.GetString(bytes); Int32 col = s.IndexOf(':'); if (col >= 0) { config.BasicUserName = s.Substring(0, col); config.BasicPassword = s.Substring(col + 1); } }
/// <summary> /// Parses Authorization header and stores user info in the config. /// </summary> public static void ParseAuthorization(XmlRpcHttpRequestConfig config, String line) { if (String.IsNullOrEmpty(line)) return; line = line.Trim(); IEnumerator it = line.Split(' ', '\t', '\n', '\r', '\f').GetEnumerator(); if (!it.MoveNext()) return; if (!String.Equals("basic", (String)it.Current, StringComparison.OrdinalIgnoreCase)) return; if (!it.MoveNext()) return; // TODO handle exception Byte[] bytes = Convert.FromBase64String((String)it.Current); Encoding enc = String.IsNullOrEmpty(config.BasicEncoding) ? Encoding.UTF8 : Encoding.GetEncoding(config.BasicEncoding); String s = enc.GetString(bytes); Int32 col = s.IndexOf(':'); if (col >= 0) { config.BasicUserName = s.Substring(0, col); config.BasicPassword = s.Substring(col + 1); } }