using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO; using System.Diagnostics; using System.Threading; namespace FreeNameLibrary { public class Tools { protected static Random random = null; /// /// String purification method, used for filename creation /// /// Input string /// purified output string public static string purify(string input) { return purify(input, ""); } public static string purify(string input, string replacement) { string output = input.Replace("'", replacement); output = output.Replace("\t", replacement); output = output.Replace("\n", replacement); output = output.Replace("\r", replacement); output = output.Replace("\v", replacement); output = output.Replace(".", replacement); output = output.Replace(",", replacement); output = output.Replace(";", replacement); output = output.Replace(":", replacement); output = output.Replace("\"", replacement); output = output.Replace("/", replacement); output = output.Replace(" ", replacement); output = output.Replace("&", replacement); output = output.Replace("@", replacement); output = output.Replace("%", replacement); output = output.Replace("$", replacement); output = output.Replace("#", replacement); output = output.Replace("!", replacement); output = output.Replace("~", replacement); output = output.Replace("’", replacement); output = output.Replace("`", replacement); output = output.Replace("<", replacement); output = output.Replace(">", replacement); output = output.Replace("|", replacement); output = output.Replace("}", replacement); output = output.Replace("{", replacement); output = output.Replace("]", replacement); output = output.Replace("[", replacement); output = output.Replace("(", replacement); output = output.Replace(")", replacement); output = output.Replace("?", replacement); output = output.Replace("+", replacement); output = output.Replace("-", replacement); output = output.Replace("=", replacement); output = output.Replace("*", replacement); output = output.Replace("_", replacement); output = output.Replace("Â", replacement); output = output.Replace(" ", replacement); // don't be fooled, this is a different space output = output.Replace(" ", replacement); // idem dito. output = output.Replace(" ", replacement); output = output.Replace("_quot_", replacement); output = output.Replace("é", "e"); output = output.Replace("ë", "e"); output = output.Replace("è", "e"); output = output.Replace("È", "E"); output = output.Replace("É", "E"); output = output.Replace("Ê", "E"); output = output.Replace("á", "a"); output = output.Replace("ä", "a"); output = output.Replace("à", "a"); output = output.Replace("À", "A"); output = output.Replace("Á", "A"); output = output.Replace("Ä", "A"); output = output.Replace("ú", "u"); output = output.Replace("ü", "u"); output = output.Replace("ù", "u"); output = output.Replace("Ù", "U"); output = output.Replace("Ú", "U"); output = output.Replace("Û", "U"); output = output.Replace("í", "i"); output = output.Replace("ï", "i"); output = output.Replace("ì", "i"); output = output.Replace("Ì", "I"); output = output.Replace("Í", "I"); output = output.Replace("Î", "I"); if (!String.IsNullOrEmpty(replacement)) { // Replace double replacements by a single replacement: (word1_____word2 >> word1_word2) output = output.Replace(replacement + replacement + replacement + replacement, replacement); output = output.Replace(replacement + replacement + replacement, replacement); output = output.Replace(replacement + replacement, replacement); if (output.StartsWith(replacement)) { output = output.Substring(replacement.Length, output.Length - replacement.Length); } if (output.EndsWith(replacement)) { output = output.Substring(0, output.Length - replacement.Length); } } return output; } public static void doRandomSleep(int minimalSleep, int maximalSleep) { if (random == null) { // recycle the random generator for 'more random' values random = new Random(0); } int randomInterval = random.Next(maximalSleep - minimalSleep); randomInterval = randomInterval + minimalSleep; // Trace.WriteLine("WmRabobankInterfaceLibrary: Doing a random sleep of " + randomInterval+"ms"); Thread.Sleep(randomInterval); } public static string getInternetResponseAfterPost(string url, string referer, string userAgent, string postData) { // Create a request using a URL that can receive a post. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.UserAgent = userAgent; request.Referer = referer; // Set the Method property of the request to POST. request.Method = "POST"; // Create POST data and convert it to a byte array. byte[] byteArray = Encoding.UTF8.GetBytes(postData); // Set the ContentType property of the WebRequest. request.ContentType = "application/x-www-form-urlencoded"; // Set the ContentLength property of the WebRequest. request.ContentLength = byteArray.Length; // Get the request stream. Stream dataStream = request.GetRequestStream(); // Write the data to the request stream. dataStream.Write(byteArray, 0, byteArray.Length); // Close the Stream object. dataStream.Close(); // Get the response. WebResponse response = request.GetResponse(); // Display the status. Console.WriteLine(((HttpWebResponse)response).StatusDescription); // Get the stream containing content returned by the server. dataStream = response.GetResponseStream(); // Open the stream using a StreamReader for easy access. StreamReader reader = new StreamReader(dataStream); // Read the content. string responseFromServer = reader.ReadToEnd(); // Display the content. // Console.WriteLine(responseFromServer); // Clean up the streams. reader.Close(); dataStream.Close(); response.Close(); return responseFromServer; } /// /// Makes a request and returns the response in a string. /// /// URL to fetch. /// public static string getInternetResponse(string url, string referer, string userAgent) { try { // used to build entire input System.Text.StringBuilder sb = new System.Text.StringBuilder(); // used on each read operation byte[] buf = new byte[8192]; // prepare the web page we will be asking for HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Referer = referer; request.UserAgent = userAgent; // execute the request HttpWebResponse response = (HttpWebResponse) request.GetResponse(); // we will read data via the response stream Stream resStream = response.GetResponseStream(); string tempString = null; int count = 0; do { // fill the buffer with data count = resStream.Read(buf, 0, buf.Length); // make sure we read some data if (count != 0) { // translate from bytes to ASCII text tempString = System.Text.Encoding.ASCII.GetString(buf, 0, count); // continue building the string sb.Append(tempString); } } while (count > 0); // any more data to read? return sb.ToString(); } catch (Exception error) { return error.Message; } } public static int getInternetHttpResponseCode(string url, string referer, string userAgent) { int returnResponseCode = -1; try { // prepare the web page we will be asking for HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Referer = referer; request.UserAgent = userAgent; // execute the request HttpWebResponse response = (HttpWebResponse) request.GetResponse(); returnResponseCode = (int)response.StatusCode; } catch (WebException webException) { string statusValue = webException.Response.Headers["Status"]; if(!String.IsNullOrEmpty(statusValue)){ string[] statusValueSegments = statusValue.Split(' '); try{ returnResponseCode = int.Parse(statusValueSegments[0]); }catch{} } } catch {} return returnResponseCode; } public static string getStringInBetween(string startStr, string endStr, string source, ref int iterator) { // first try to find the first string int startIndex = source.IndexOf(startStr, iterator, StringComparison.CurrentCultureIgnoreCase); if (startIndex != -1) { // whoopie! we've found something int startPosition = startIndex + startStr.Length; int endIndex = source.IndexOf(endStr, startPosition, StringComparison.CurrentCultureIgnoreCase); if (endIndex != -1) { int length = endIndex - startPosition; if (length <= 0) { return null; } iterator = endIndex; string returnString = source.Substring(startPosition, length); return returnString; } else { return null; } } else { // nothing found, return null to give that signal return null; } } } }