wasSharp – Blame information for rev 27

Subversion Repositories:
Rev:
Rev Author Line No. Line
18 office 1 ///////////////////////////////////////////////////////////////////////////
2 // Copyright (C) Wizardry and Steamworks 2013 - License: GNU GPLv3 //
3 // Please see: http://www.gnu.org/licenses/gpl.html for legal details, //
4 // rights of fair usage, the disclaimer and warranty conditions. //
5 ///////////////////////////////////////////////////////////////////////////
6  
7 using System;
8 using System.Linq;
9 using System.Linq.Expressions;
10 using System.Net;
11 using System.Text.RegularExpressions;
12  
13 namespace wasSharp.Web.Utilities
14 {
15 public static class WebExtensions
16 {
17 private static readonly Func<string, string> directURIEscapeDataString =
18 ((Expression<Func<string, string>>)
27 office 19 (data => string.Join("", Enumerable.Range(0, (data.Length + 32765) / 32766).AsParallel()
20 .Select(o => Uri.EscapeDataString(data.Substring(o * 32766, Math.Min(32766, data.Length - o * 32766))))
18 office 21 .ToArray()))).Compile();
22  
23 private static readonly Func<string, string> directURIUnescapeDataString =
24 ((Expression<Func<string, string>>)
27 office 25 (data => string.Join("", Enumerable.Range(0, (data.Length + 32765) / 32766).AsParallel()
18 office 26 .Select(
27 office 27 o => Uri.UnescapeDataString(data.Substring(o * 32766, Math.Min(32766, data.Length - o * 32766))))
18 office 28 .ToArray()))).Compile();
29  
30 ///////////////////////////////////////////////////////////////////////////
31 // Copyright (C) Wizardry and Steamworks 2014 - License: GNU GPLv3 //
32 ///////////////////////////////////////////////////////////////////////////
33 /// <summary>RFC3986 URI Escapes a string</summary>
34 /// <remarks>
35 /// data - a string to escape
36 /// </remarks>
37 /// <returns>an RFC3986 escaped string</returns>
38 public static string URIEscapeDataString(this string data)
39 {
40 return directURIEscapeDataString(data);
41 }
42  
43 ///////////////////////////////////////////////////////////////////////////
44 // Copyright (C) Wizardry and Steamworks 2014 - License: GNU GPLv3 //
45 ///////////////////////////////////////////////////////////////////////////
46 /// <summary>URI unescapes an RFC3986 URI escaped string</summary>
47 /// <remarks>
48 /// data - a string to unescape
49 /// </remarks>
50 /// <returns>the resulting string</returns>
51 public static string URIUnescapeDataString(this string data)
52 {
53 return directURIUnescapeDataString(data);
54 }
55  
56 ///////////////////////////////////////////////////////////////////////////
57 // Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 //
58 ///////////////////////////////////////////////////////////////////////////
59 /// <summary>RFC1738 URL Escapes a string</summary>
60 /// <param name="data">a string to escape</param>
61 /// <returns>an RFC1738 escaped string</returns>
62 public static string URLEscapeDataString(this string data)
63 {
64 return WebUtility.UrlEncode(data);
65 }
66  
67 ///////////////////////////////////////////////////////////////////////////
68 // Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 //
69 ///////////////////////////////////////////////////////////////////////////
70 /// <summary>RFC1738 URL Unescape a string</summary>
71 /// <param name="data">a string to unescape</param>
72 /// <returns>an RFC1738 unescaped string</returns>
73 public static string URLUnescapeDataString(this string data)
74 {
75 return WebUtility.UrlDecode(data);
76 }
77  
78 ///////////////////////////////////////////////////////////////////////////
79 // Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 //
80 ///////////////////////////////////////////////////////////////////////////
81 /// <param name="prefix">a HttpListener prefix</param>
82 /// <returns>the port of the HttpListener</returns>
83 public static long GetPortFromPrefix(this string prefix)
84 {
85 var split = Regex.Replace(
86 prefix,
87 @"^([a-zA-Z]+:\/\/)?([^\/]+)\/.*?$",
88 "$2"
89 ).Split(':');
90 long port;
91 return split.Length <= 1 || !long.TryParse(split[1], out port) ? 80 : port;
92 }
93 }
27 office 94 }