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;
}
}
}
}