6 namespace OpenStreetMap
{
8 public class WebMessage
{
9 CookieContainer cookies
;
13 static void PrintStream (Stream s)
15 StreamReader tr = new StreamReader (s);
17 while ((line = tr.ReadLine ()) != null) {
18 Console.WriteLine (line);
23 public Exception Error
{
27 public void Login (string username
, string password
)
29 cookies
= new CookieContainer ();
30 /* perform the actual login */
31 HttpWebRequest req
= WebRequest
.Create ("http://www.openstreetmap.org/login") as HttpWebRequest
;
32 req
.CookieContainer
= cookies
;
33 req
.ServicePoint
.Expect100Continue
= false;
36 req
.ContentType
= "application/x-www-form-urlencoded";
37 req
.Referer
= "http://www.openstreetmap.org/login";
38 req
.AllowAutoRedirect
= false;
39 string data
= HttpUtility
.UrlEncode ("user[email]") + "=" + HttpUtility
.UrlEncode (username
) + "&"
40 + HttpUtility
.UrlEncode ("user[password]") + "=" + HttpUtility
.UrlEncode (password
) + "&"
41 + HttpUtility
.UrlEncode ("commit") + "=" + HttpUtility
.UrlEncode ("Login") + "&"
42 + HttpUtility
.UrlEncode ("referer") + "=" + HttpUtility
.UrlEncode ("/login");
43 StreamWriter logdata
= new StreamWriter (req
.GetRequestStream());
46 HttpWebResponse res
= req
.GetResponse () as HttpWebResponse
;
47 Stream s
= res
.GetResponseStream ();
52 int GetUserID (string user
)
55 HttpWebRequest req
= WebRequest
.Create (new Uri ("http://www.openstreetmap.org/user/" + user
)) as HttpWebRequest
;
56 req
.ServicePoint
.Expect100Continue
= false;
57 // cookies are not needed and this allows getting the id also for the current user
58 //req.CookieContainer = cookies;
60 HttpWebResponse res
= req
.GetResponse () as HttpWebResponse
;
61 Stream s
= res
.GetResponseStream ();
62 StreamReader tr
= new StreamReader (s
);
64 while ((line
= tr
.ReadLine ()) != null) {
65 if (line
.IndexOf ("Description") >= 0)
67 int pos
= line
.IndexOf ("message/new/");
69 int quotes
= line
.IndexOf ('"', pos
);
71 string sid
= line
.Substring (pos
, quotes
- pos
);
72 //Console.WriteLine ("User {0} has id: '{1}'", user, sid);
81 public bool Send (string user
, string subject
, string message
)
83 int id
= GetUserID (user
);
84 return Send (id
, subject
, message
);
87 public bool Send (int user
, string subject
, string message
)
89 HttpWebRequest req
= WebRequest
.Create ("http://www.openstreetmap.org/message/new/" + user
) as HttpWebRequest
;
90 req
.CookieContainer
= cookies
;
91 req
.ServicePoint
.Expect100Continue
= false;
94 req
.ContentType
= "application/x-www-form-urlencoded";
95 req
.Referer
= "http://www.openstreetmap.org/";
96 req
.AllowAutoRedirect
= false;
97 string data
= HttpUtility
.UrlEncode ("message[title]") + "=" + HttpUtility
.UrlEncode (subject
) + "&"
98 + HttpUtility
.UrlEncode ("message[body]") + "=" + HttpUtility
.UrlEncode (message
) + "&"
99 + HttpUtility
.UrlEncode ("commit") + "=" + HttpUtility
.UrlEncode ("Send");
100 StreamWriter logdata
= new StreamWriter (req
.GetRequestStream());
101 logdata
.Write (data
);
103 HttpWebResponse res
= req
.GetResponse () as HttpWebResponse
;
104 Stream s
= res
.GetResponseStream ();