private void btnRef_Click(object sender, EventArgs e) { if (cmbBrowser.SelectedItem is ICookieGetter) { ICookieGetter cookieGetter = (ICookieGetter)cmbBrowser.SelectedItem; string path = txtPath.Text; if (cookieGetter.Status.PathType == PathType.Directory) { if (System.IO.Directory.Exists(path)) { folderBrowserDialog1.SelectedPath = cookieGetter.Status.CookiePath; } if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { txtPath.Text = folderBrowserDialog1.SelectedPath; cookieGetter.Status.CookiePath = folderBrowserDialog1.SelectedPath; } } else { if (System.IO.File.Exists(path)) { openFileDialog1.InitialDirectory = System.IO.Path.GetDirectoryName(path); openFileDialog1.FileName = path; } if (openFileDialog1.ShowDialog() == DialogResult.OK) { txtPath.Text = openFileDialog1.FileName; cookieGetter.Status.CookiePath = openFileDialog1.FileName; } } } }
/// <summary> /// GetBrowserName()とGetCookiePath()で取得した値を渡すことで状態を復元する /// </summary> /// <param name="browserName">ICookieGetter.Status.Name</param> /// <param name="cookiePath">ICookieGetter.Status.CookiePath</param> /// <returns></returns> public bool SetBrowser(string browserName, string cookiePath) { for (int i = 0; i < cookieGetterList.Count; i++) { if (cookieGetterList[i].Status.Name == browserName) { if (!string.IsNullOrEmpty(cookiePath)) { if (cookieGetterList[i].Status.CookiePath != cookiePath) { ICookieGetter newCookieGetter = CookieGetter.CreateInstance(cookieGetterList[i].Status); if (newCookieGetter != null) { newCookieGetter.Status.CookiePath = cookiePath; cookieGetterList.Add(newCookieGetter); this.bindingSource.Position = cookieGetterList.Count - 1; return(true); } else { return(false); } } } bindingSource.Position = i; return(true); } } return(false); }
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { for (_ayncUpdateIndex = 0; _ayncUpdateIndex < cmbBrowser.Items.Count; _ayncUpdateIndex++) { lock (_asyncObj) { if (e.Cancel) { break; } if (_ayncUpdateIndex < cmbBrowser.Items.Count) { ICookieGetter cookieGetter = cmbBrowser.Items[_ayncUpdateIndex] as ICookieGetter; if (cookieGetter != null && cookieGetter.Status.IsAvailable) { if (e.Cancel) { break; } string name = Utility.GetUserName(cookieGetter); if (e.Cancel) { break; } if (name != null) { cookieGetter.Status.DisplayName = string.Format("{0} ({1})", cookieGetter.Status.Name, name); backgroundWorker1.ReportProgress(0); } } } } } }
private string GetUserName(ICookieGetter cookieGetter) { try { System.Net.CookieContainer container = new CookieContainer(); Cookie cookie = cookieGetter.GetCookie(new Uri(VerifyUrl), CookieKey); string res = null; if (cookie != null) { container.Add(cookie); using (var client = new System.Net.Http.HttpClient( new System.Net.Http.HttpClientHandler() { CookieContainer = container }) { Timeout = TimeSpan.FromMilliseconds(VerifyTimeout) }) res = client.GetStringAsync(VerifyUrl).Result; } if (!string.IsNullOrEmpty(res)) { System.Text.RegularExpressions.Match namem = System.Text.RegularExpressions.Regex.Match(res, VerifyRegex, System.Text.RegularExpressions.RegexOptions.Singleline); if (namem.Success) { return(namem.Groups[1].Value); } } } catch { } return(null); }
/// <summary> /// ComboBoxNicoBrowserクラスの新しいインスタンスを既定のプロパティ値で初期化します。 /// </summary> public ComboBoxNicoBrowser() : base() { CookieUrl = "http://www.nicovideo.jp/"; CookieKey = "user_session"; VerifyUrl = "http://www.nicovideo.jp/my/"; VerifyRegex = "nickname = \"([^<>]+)\";"; VerifyTimeout = 5000; DropDownStyle = ComboBoxStyle.DropDownList; Width = 240; browserThread = new Thread(() => { do { browserSignal.Reset(); browserSignal.WaitOne(); if (this.Disposing || this.IsDisposed) { break; } browserCancel = false; for (_ayncUpdateIndex = 0; _ayncUpdateIndex < this.Items.Count; _ayncUpdateIndex++) { lock (browserLock) { if (browserCancel) { break; } if (_ayncUpdateIndex < this.Items.Count) { ICookieGetter cookieGetter = this.Items[_ayncUpdateIndex] as ICookieGetter; if (cookieGetter != null && cookieGetter.Status.IsAvailable) { if (browserCancel) { break; } string name = GetUserName(cookieGetter); if (browserCancel) { break; } if (name != null) { cookieGetter.Status.DisplayName = string.Format("{0} ({1})", cookieGetter.Status.Name, name); BrowserChanged(); } } } } } } while (!this.Disposing && !this.IsDisposed); }); browserThread.SetApartmentState(ApartmentState.STA); browserThread.Name = "取得"; }
public static ICookieGetter CreateInstance(CookieStatus status) { ICookieGetter cookieGetter = CreateInstance(status.BrowserType); cookieGetter.Status.Name = status.Name; cookieGetter.Status.CookiePath = status.CookiePath; cookieGetter.Status.DisplayName = status.DisplayName; return(cookieGetter); }
private void getUserSession(ICookieGetter cookieGetter) { System.Net.Cookie cookie = cookieGetter.GetCookie(new Uri("http://nicovideo.jp/"), "user_session"); if (cookie != null) { txtUserSession.Text = cookie.Value; } else { txtUserSession.Clear(); } }
public ICookieGetter[] CreateCookieGetters() { FirefoxProfile[] profs = FirefoxProfile.GetProfiles(Utility.ReplacePathSymbols(DATAFOLDER), INIFILE_NAME); if (profs.Length == 0) { return new ICookieGetter[] { CreateCookieGetter(null) }; } ICookieGetter[] cgs = new ICookieGetter[profs.Length]; for (int i = 0; i < profs.Length; i++) { cgs[i] = CreateCookieGetter(profs[i]); } return cgs; }
private string GetUserSession(ICookieGetter cookieGetter) { Cookie cookie = cookieGetter.GetCookie(new Uri(CookieUrl), CookieKey); if (cookie != null) { _cookieValue = cookie.Value; } else { _cookieValue = ""; } return(_cookieValue); }
private void BrowserChanged() { if (this.InvokeRequired) { BeginInvoke(new BrowserChangedCallback(BrowserChanged)); return; } int selectedIndex = bindingSource.Position; ICookieGetter[] x = new ICookieGetter[cookieGetterList.Count]; cookieGetterList.CopyTo(x, 0); cookieGetterList.Clear(); cookieGetterList.AddRange(x); bindingSource.ResetBindings(false); this.bindingSource.Position = selectedIndex; }
private void cmbBrowser_SelectedIndexChanged(object sender, EventArgs e) { if (cmbBrowser.SelectedItem is ICookieGetter) { ICookieGetter cookieGetter = (ICookieGetter)cmbBrowser.SelectedItem; txtPath.Text = cookieGetter.Status.CookiePath; txtPath.Enabled = true; btnRef.Enabled = true; getUserSession(cookieGetter); } else { txtPath.Text = ""; txtPath.Enabled = false; btnRef.Enabled = false; } }
public ICookieGetter[] CreateCookieGetters() { FirefoxProfile[] profs = FirefoxProfile.GetProfiles( CookieUtil.ReplacePathSymbols(DATAFOLDER), INIFILE_NAME); if (profs.Length == 0) { return(new ICookieGetter[] { CreateCookieGetter(null) }); } ICookieGetter[] cgs = new ICookieGetter[profs.Length]; for (int i = 0; i < profs.Length; i++) { cgs[i] = CreateCookieGetter(profs[i]); } return(cgs); }
/// <summary> /// ログインする /// </summary> /// <param name="cookieGetter"></param> /// <returns></returns> public static AccountInfomation Login(ICookieGetter cookieGetter) { System.Net.Cookie cookie = cookieGetter.GetCookie(new Uri("http://www.nicovideo.jp/"), "user_session"); if (cookie == null) { Logger.Default.LogMessage(string.Format("Login failed, cookie dosen't found")); return null; } System.Net.CookieContainer container = new System.Net.CookieContainer(); container.Add(cookie); AccountInfomation accountInfomation = NicoApiSharp.AccountInfomation.GetMyAccountInfomation(container); if (accountInfomation != null) { DefaultCookies = container; return accountInfomation; } return null; }
private void SetBrowser() { if (browserThread.ThreadState == ThreadState.Running) { browserCancel = true; } lock (browserLock) { ICookieGetter cookieGetter = null; if (this.SelectedItem is ICookieGetter) { cookieGetter = (ICookieGetter)this.SelectedItem; } cookieGetterList.Clear(); cookieGetterList.AddRange(CookieGetter.CreateInstances(!_allBrowser)); if (cookieGetter != null) { CookieStatus = cookieGetter.Status; } bindingSource.ResetBindings(false); } browserSignal.Set(); }
private string GetUserName(ICookieGetter cookieGetter) { try { System.Net.CookieContainer container = new CookieContainer(); Cookie cookie = cookieGetter.GetCookie(new Uri(VerifyUrl), CookieKey); string res = null; if (cookie != null) { container.Add(cookie); using (var client = new System.Net.Http.HttpClient( new System.Net.Http.HttpClientHandler() { CookieContainer = container }) { Timeout = TimeSpan.FromMilliseconds(VerifyTimeout) }) res = client.GetStringAsync(VerifyUrl).Result; } if (!string.IsNullOrEmpty(res)) { System.Text.RegularExpressions.Match namem = System.Text.RegularExpressions.Regex.Match(res, VerifyRegex, System.Text.RegularExpressions.RegexOptions.Singleline); if (namem.Success) { return namem.Groups[1].Value; } } } catch { } return null; }
private void BrowserChanged() { if (this.InvokeRequired) { BeginInvoke(new BrowserChangedCallback(BrowserChanged)); return; } int selectedIndex = bindingSource.Position; ICookieGetter[] x = new ICookieGetter[cookieGetterList.Count]; cookieGetterList.CopyTo(x, 0); cookieGetterList.Clear(); cookieGetterList.AddRange(x); bindingSource.ResetBindings(false); this.bindingSource.Position = selectedIndex; }
private string GetUserSession(ICookieGetter cookieGetter) { Cookie cookie = cookieGetter.GetCookie(new Uri(CookieUrl), CookieKey); if (cookie != null) { _cookieValue = cookie.Value; } else { _cookieValue = ""; } return _cookieValue; }
private void getUserSession(ICookieGetter cookieGetter) { System.Net.Cookie cookie = cookieGetter.GetCookieCollection(new Uri("http://live.nicovideo.jp/"))["user_session"]; if(cookie != null) { txtUserSession.Text = cookie.Value; } else { txtUserSession.Clear(); } }
/// <summary> /// コンボボックスで選択されているブラウザのクッキーパスを返します /// ない場合nullを返す /// </summary> /// <returns></returns> public string GetBrowserName() { ICookieGetter cookieGetter = SelectedCookieGetter; return(cookieGetter != null ? cookieGetter.Status.Name : null); }
/// <summary> /// コンボボックスで選択されているブラウザのクッキーパスを返します /// ない場合nullを返す /// </summary> /// <returns></returns> public string GetCookiePath() { ICookieGetter cookieGetter = SelectedCookieGetter; return(cookieGetter != null ? cookieGetter.Status.CookiePath : null); }
private string GetUserName(ICookieGetter cookieGetter) { try { System.Net.CookieContainer container = new CookieContainer(); Cookie cookie = cookieGetter.GetCookie(new Uri(VerifyUrl), CookieKey); string res = null; if(cookie != null) { container.Add(cookie); res = Utility.GetResponseText(VerifyUrl, container, VerifyTimeout); } if(!string.IsNullOrEmpty(res)) { System.Text.RegularExpressions.Match namem = System.Text.RegularExpressions.Regex.Match(res, VerifyRegex, System.Text.RegularExpressions.RegexOptions.Singleline); if(namem.Success) { return namem.Groups[1].Value; } } } catch { } return null; }
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox1.SelectedIndex == 0) { cookie = CookieGetter.CreateInstance(BrowserType.IEComponent); } if (comboBox1.SelectedIndex == 1) { cookie = CookieGetter.CreateInstance(BrowserType.IESafemode); } if (comboBox1.SelectedIndex == 2) { cookie = CookieGetter.CreateInstance(BrowserType.Firefox); } if (comboBox1.SelectedIndex == 3) { cookie = CookieGetter.CreateInstance(BrowserType.GoogleChrome); } if (comboBox1.SelectedIndex == 4) { cookie = CookieGetter.CreateInstance(BrowserType.Safari); } try { cc = cookie.GetCookieCollection(new Uri("http://nicovideo.jp")); us = cc["user_session"]; if (us != null) { label1.Text = "クッキー取得成功" + us; } else { label1.Text = "クッキー取得失敗"; } } catch(Exception ex) { label1.Text = "クッキー取得失敗"; } }