3
* GNOME Do is the legal property of its developers. Please refer to the
4
* COPYRIGHT file distributed with this
7
* This program is free software: you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation, either version 3 of the License, or
10
* (at your option) any later version.
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
17
* You should have received a copy of the GNU General Public License
18
* along with this program. If not, see <http://www.gnu.org/licenses/>.
26
using System.Collections.Specialized;
31
public static class Quote
33
public static string PostUsing (IQuoteProvider quote)
38
string postQueryString = CreateQueryString (quote.Parameters);
40
HttpWebRequest request = (HttpWebRequest) WebRequest.Create (quote.BaseUrl);
41
request.Timeout = 15000;
42
request.Method = "POST";
43
request.ContentType = "application/x-www-form-urlencoded";
44
request.AllowAutoRedirect = quote.ShouldAllowAutoRedirect;
46
UTF8Encoding encoding = new UTF8Encoding ();
47
byte[] data = encoding.GetBytes (postQueryString);
48
request.ContentLength = data.Length;
50
using (Stream newStream = request.GetRequestStream ())
52
newStream.Write (data, 0, data.Length);
55
using (HttpWebResponse response = (HttpWebResponse) request.GetResponse ())
57
url = quote.GetPasteUrlFromResponse (response);
61
url = "An error occured while posting quote.";
67
static string CreateQueryString (NameValueCollection query)
69
StringBuilder queryString = new StringBuilder ();
70
foreach (string key in query.Keys)
72
queryString.Append (HttpUtility.UrlEncode (key));
73
queryString.Append ("=");
74
queryString.Append (HttpUtility.UrlEncode (query [key]));
75
queryString.Append ("&");
78
return queryString.ToString ();