2 using System.Collections.Generic;
\r
5 using NT2chView.NtFile;
\r
6 using System.Runtime.Serialization.Formatters.Binary;
\r
9 namespace NT2chView.NtNet
\r
11 public class NTCookie
\r
15 public CookieValue(string hostName)
\r
17 mHostName = hostName;
\r
19 public string mHostName;
\r
20 public List<KeyValuePair<string, string>> mKeyValueList = new List<KeyValuePair<string, string>>();
\r
23 CookieValue findCookieValue(string hostName)
\r
25 foreach (CookieValue cv in mCookieValue)
\r
27 if(hostName.Equals(cv.mHostName))
\r
33 void addCookieValue(CookieValue cv)
\r
35 mCookieValue.Add(cv);
\r
39 List<CookieValue> mCookieValue = new List<CookieValue>();
\r
41 private Uri mHostUri;
\r
42 private string mHostName;
\r
43 private bool mDomain2ch;
\r
46 private CookieContainer mContainer;
\r
48 public CookieContainer Container
\r
50 get { return mContainer; }
\r
58 mHostUri = new Uri("http://" + value);
\r
63 public NTCookie(string host) : this(host, true)
\r
67 mHostUri = new Uri("http://"+host);
\r
68 mContainer = new CookieContainer();
\r
74 public NTCookie(string host, bool domain2ch)
\r
76 mDomain2ch = domain2ch;
\r
78 mHostUri = new Uri("http://" + host);
\r
79 mContainer = new CookieContainer();
\r
85 public void saveCookie()
\r
87 //string cookie1 = mContainer.GetCookieHeader(mHostUri);
\r
88 //string cookie2 = mContainer.GetCookieHeader(new Uri("http://2ch.net"));
\r
89 CookieCollection ccol = mContainer.GetCookies(mHostUri);
\r
91 foreach (Cookie cookie in ccol)
\r
93 CookieValue cv = null;
\r
94 string domain = cookie.Domain;
\r
97 cv = findCookieValue(domain);
\r
100 cv = new CookieValue(domain);
\r
101 addCookieValue(cv);
\r
103 string key = cookie.Name;
\r
104 string value = cookie.Value;
\r
105 KeyValuePair<string, string> pair
\r
106 = new KeyValuePair<string, string>(key, value);
\r
107 cv.mKeyValueList.Add(pair);
\r
111 foreach (CookieValue cv in mCookieValue)
\r
113 NTFileAccess.saveCookie(cv.mKeyValueList, cv.mHostName);
\r
118 void retrieveCookie()
\r
121 List<KeyValuePair<string, string>> rootList = NTFileAccess.retrieveCookie(".2ch.net");
\r
122 List<KeyValuePair<string, string>> list = NTFileAccess.retrieveCookie(mHostName);
\r
125 list.AddRange(rootList);
\r
127 if (list.Count > 0)
\r
129 string cookieHeader = constructCookieHeader(list);
\r
130 mContainer.SetCookies(mHostUri, cookieHeader);
\r
136 string constructCookieHeader(List<KeyValuePair<string, string>> list)
\r
138 NTDebug.l(" *** Entering constructCookieHeader *** ");
\r
139 StringBuilder result = new StringBuilder();
\r
140 result.Append(" ");
\r
142 for(; i < list.Count; i++)
\r
146 //result.Append("; ");
\r
147 result.Append(",");
\r
149 KeyValuePair<string, string> pair = list[i];
\r
150 NTDebug.l("\t "+pair.Key+" : "+pair.Value);
\r
151 result.Append(pair.Key).Append("=").Append(pair.Value);
\r
153 return (i == 0) ? null : result.ToString();
\r