Filed Under (c#) by The Chef on 08-06-2009
First of all this class is based on the http helper class. The rest is trivial. Here is a piece of code
public static class ImageShack
{
private static http http = new http();
public static String UploadImage(String filename)
{
http.PostMode = PostMode.Multipart;
http.AddPostKey("xml", "yes");
http.AddPostFile("fileupload", filename);
return http.GetUrl("http://www.imageshack.us/index.php");
}
}
The result is an xml. You can deserialize it using the XML serializer/deserializer from the previous post.
[Serializable]
public class links
{
public String image_link;
public String thumb_link;
public String ad_link;
public String thumb_exists;
public int total_raters;
public float ave_rating;
public String server;
public String image_name;
public String done_page;
public String resolution;
public int filesize;
public String image_class;
}
.
.
.
imageshark isr=new imageshark();
links lnk = new links();
lnk = XMLData.ObjectXMLSerializer<links>.LoadString(ImageShack.UploadImage("picture.png"));
Console.WriteLine(lnk.image_link);
Hope it helps. Enjoy
Filed Under (c#) by The Chef on 06-06-2009
Here it is a short class very useful for serializing and deserializing. This is a good for settings file or configuration files.
using System.Xml.Serialization;
using System.IO;
using System.Text;
namespace XMLData
{
public static class ObjectXMLSerializer<T> where T : class
{
public static T Load(string path)
{
T mRet = null;
using (TextReader textReader = new StreamReader(path))
{
XmlSerializer mXmlSerializer = new XmlSerializer(typeof(T));
mRet = mXmlSerializer.Deserialize(textReader) as T;
}
return mRet;
}
public static void Save(T serializableObject, string path)
{
using (TextWriter mTextWriter = new StreamWriter(path))
{
XmlSerializer mXmlSerializer = new XmlSerializer(typeof(T));
mXmlSerializer.Serialize(mTextWriter, serializableObject);
}
}
public static T LoadString(string mString)
{
T mRet = null;
using (MemoryStream textReader = new MemoryStream(Encoding.ASCII.GetBytes(mString)))
{
XmlSerializer mXmlSerializer = new XmlSerializer(typeof(T));
mRet = mXmlSerializer.Deserialize(textReader) as T;
}
return mRet;
}
}
}
Here it is a short usage example:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test
{
class Program
{
static void Main(string[] args)
{
links lnk = new links();
lnk.str = "something";
lnk.integer = 23;
lnk.floatnumber = 0.23f;
lnk.stringlist.Add("element 1");
lnk.stringlist.Add("element 2");
lnk.stringlist.Add("element 3");
//save class to xml
XMLData.ObjectXMLSerializer<links>.Save(lnk, @"c:\test.xml");
//load class from xml
lnk = XMLData.ObjectXMLSerializer<links>.Load(@"c:\test.xml");
}
}
[Serializable]
public class links
{
public String str;
public int integer;
public float floatnumber;
public List<string> stringlist = new List<string>();
}
}
and this is the xml it produces:
<?xml version="1.0" encoding="utf-8"?>
<links xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<str>something</str>
<integer>23</integer>
<floatnumber>0.23</floatnumber>
<stringlist>
<string>element 1</string>
<string>element 2</string>
<string>element 3</string>
</stringlist>
</links>
Filed Under (c#, net) by The Chef on 06-06-2009
Every computer connected to the internet must interrogate a DNS server in order to resolve domain names to ip addresses. To find the DNS server addresses your computer uses to resolve names, either it has a dhcp or static ip address, you can use the following piece of code. I wrapped all around a nice static class for ease of use.
public static class DNSFinder
{
private static List<String> mServers = new List<string>();
public static List<String> Servers
{
get
{
RegistryKey start = Registry.LocalMachine;
string DNSservers = @"SYSTEM\CurrentControlSet\Services\Tcpip\Parameters";
RegistryKey DNSserverKey = start.OpenSubKey(DNSservers);
if (DNSserverKey != null)
{
// Static ip address
string serverlist = (string)DNSserverKey.GetValue("NameServer");
string[] servers = serverlist.Split(' ');
foreach (string server in servers)
{
mServers.Add(server);
}
//dhcp assigned address
serverlist = (string)DNSserverKey.GetValue("DhcpNameServer");
servers = serverlist.Split(' ');
foreach (string server in servers)
{
mServers.Add(server);
}
start.Close();
}
DNSserverKey.Close();
return mServers;
}
}