/// <summary> /// コマンドライン引数からWebAPI用ユーザ情報を取得する /// </summary> /// <param name="args"></param> /// <returns></returns> private MyNumberAPIConfig GetCommandParameters(IEnumerable <string> args) { Dictionary <string, string> plist = new Dictionary <string, string>() { { "TKEY", string.Empty }, { "AKEY", string.Empty }, { "USER", string.Empty }, { "PASS", string.Empty }, { "EMPLOYEEFILE", string.Empty }, { "FAMILYFILE", string.Empty }, { "MYNUMBERFILE", string.Empty }, }; //var p_t = args.Where(x => Regex.IsMatch(x, "/t=", RegexOptions.IgnoreCase)).FirstOrDefault(); //if (p_t != null) //{ // plist["TKEY"] = p_t.Remove(0, 3); //} //var p_a = args.Where(x => Regex.IsMatch(x, "/a=", RegexOptions.IgnoreCase)).FirstOrDefault(); //if (p_a != null) //{ // plist["AKEY"] = p_a.Remove(0, 3); //} //var p_u = args.Where(x => Regex.IsMatch(x, "/u=", RegexOptions.IgnoreCase)).FirstOrDefault(); //if (p_u != null) //{ // plist["USER"] = p_u.Remove(0, 3); //} //var p_p = args.Where(x => Regex.IsMatch(x, "/p=", RegexOptions.IgnoreCase)).FirstOrDefault(); //if (p_p != null) //{ // plist["PASS"] = p_p.Remove(0, 3); //} var p_emp = args.Where(x => Regex.IsMatch(x, "/e=", RegexOptions.IgnoreCase)).FirstOrDefault(); if (p_emp != null) { plist["EMPLOYEEFILE"] = p_emp.Remove(0, 3); } var p_fmly = args.Where(x => Regex.IsMatch(x, "/f=", RegexOptions.IgnoreCase)).FirstOrDefault(); if (p_fmly != null) { plist["FAMILYFILE"] = p_fmly.Remove(0, 3); } var p_mynum = args.Where(x => Regex.IsMatch(x, "/m=", RegexOptions.IgnoreCase)).FirstOrDefault(); if (p_mynum != null) { plist["MYNUMBERFILE"] = p_mynum.Remove(0, 3); } if (string.IsNullOrWhiteSpace(plist["EMPLOYEEFILE"]) || string.IsNullOrWhiteSpace(plist["FAMILYFILE"]) || string.IsNullOrWhiteSpace(plist["MYNUMBERFILE"]) ) { throw new Exception("コマンドライン引数が不正です。"); } MyNumberAPIConfig cfg = new MyNumberAPIConfig(); cfg.TenantKey = plist["TKEY"]; cfg.AccessKey = plist["AKEY"]; cfg.AccountID = plist["USER"]; cfg.AccountPassword = plist["PASS"]; FilePathEmployee = plist["EMPLOYEEFILE"]; FilePathFamily = plist["FAMILYFILE"]; FilePathIndividual = plist["MYNUMBERFILE"]; return(cfg); }
private void Window_Loaded(object sender, RoutedEventArgs e) { cntxt.Message = "処理準備中"; SetFocusToTopControl(this); MyNumberAPIConfig cmdcfg = new MyNumberAPIConfig(); try { cmdcfg = GetCommandParameters(System.Environment.GetCommandLineArgs().Skip(1)); } catch (Exception ex) { // 基本情報が指定されていなければ処理続行不可能 MessageBox.Show(ex.Message); this.ExitCode = 1; this.Close(); return; } finally { } var dsp = this.Dispatcher; try { mapi = new MyNumberAPI(null); // ローカルConfigからパラメータをロードする mapi.LoadConfig(); mapicfg = mapi.ApiConfig; // コマンドライン引数で指定されたパラメータを優先する if (string.IsNullOrWhiteSpace(cmdcfg.TenantKey) != true) { mapicfg.TenantKey = cmdcfg.TenantKey; } if (string.IsNullOrWhiteSpace(cmdcfg.AccessKey) != true) { mapicfg.AccessKey = cmdcfg.AccessKey; } if (string.IsNullOrWhiteSpace(cmdcfg.AccountID) != true) { mapicfg.AccountID = cmdcfg.AccountID; } if (string.IsNullOrWhiteSpace(cmdcfg.AccountPassword) != true) { mapicfg.AccountPassword = cmdcfg.AccountPassword; } cntxt.TenantKey = mapicfg.TenantKey; cntxt.AccessKey = mapicfg.AccessKey; cntxt.AccountID = mapicfg.AccountID; cntxt.AccountPassword = mapicfg.AccountPassword; passboxCert.Password = cntxt.AccountPassword; if (string.IsNullOrWhiteSpace(cntxt.TenantKey) || string.IsNullOrWhiteSpace(cntxt.AccessKey) || string.IsNullOrWhiteSpace(cntxt.AccountID) || string.IsNullOrWhiteSpace(cntxt.AccountPassword) ) { throw new MyNumberAPIException("接続情報を全て設定してください。"); } var certlist = KyoeiSystem.Framework.Net.Cert.GetCertCollection(); cntxt.SelectedCertInfo = null; if (string.IsNullOrWhiteSpace(mapicfg.ClientCertSerialNo)) { throw new MyNumberAPICertException(); } foreach (var cert in certlist) { if (mapicfg.ClientCertSerialNo == cert.SerialNumber) { cntxt.SelectedCertInfo = new CertInfo() { SerialNo = cert.SerialNumber, SubjectName = cert.SubjectName.Name, IssuerName = cert.IssuerName.Name, FormatedIssuerName = cert.IssuerName.Format(true).TrimEnd(new char[] { '\r', '\n', }), FromatedSubjectName = cert.SubjectName.Format(true).TrimEnd(new char[] { '\r', '\n', }), FromDate = cert.NotBefore, ToDate = cert.NotAfter, Selectable = (cert.NotAfter >= DateTime.Now), }; cntxt.CertSubject = string.Empty; cntxt.CertSubject += string.Format("[有効期限]\r\n{0:yyyy/MM/dd}\r\n", cntxt.SelectedCertInfo.ToDate); cntxt.CertSubject += string.Format("[発行元]\r\n{0}\r\n", cntxt.SelectedCertInfo.FormatedIssuerName); cntxt.CertSubject += string.Format("[サブジェクト]\r\n{0}\r\n", cntxt.SelectedCertInfo.FromatedSubjectName); cntxt.CertSubject += string.Format("[シリアル番号]\r\n{0}", cntxt.SelectedCertInfo.SerialNo); mapicfg.ClientCertSerialNo = cntxt.SelectedCertInfo.SerialNo; break; } } checkConfigs(); } catch (MyNumberAPIConfigException ex) { //dsp.Invoke(new ConfigErrorDelegate(ConfigError), string.Format("アプリケーションが正しくセットアップできていません。\r\n<詳細>\r\n{0}", ex.Message)); dsp.Invoke(new ExecuteResultDelegate(ExecuteResult), false, string.Format("アプリケーションが正しくセットアップできていません。\r\n<詳細>\r\n{0}", ex.Message)); } catch (MyNumberAPICertException) { dsp.Invoke(new ConfigErrorDelegate(ConfigCertError), "クライアント証明書を選択してください。"); } //catch (MyNumberAPIException ex) //{ // dsp.Invoke(new ExecuteResultDelegate(ExecuteResult), false, string.Format("アプリケーションが正しくセットアップできていません。\r\n<詳細>\r\n{0}", ex.Message)); //} catch (Exception ex) { dsp.Invoke(new ConfigErrorDelegate(ConfigError), ex.Message); } finally { } }