public void Initialize()
{
//Modelsを初期化
Task.Run(async () => {
if(File.Exists(NicoNicoUtil.CurrentDirectory + @"\session")) {
StatusBar.Status = "自動ログイン中";
//セッション情報を取得する
var reader = new StreamReader(NicoNicoUtil.CurrentDirectory + @"\session");
var key = reader.ReadLine().Split(':')[1];
var expire = DateTimeOffset.Parse(reader.ReadLine().Replace("Expire:", ""));
reader.Close();
//セッションが有効か比較する
if(DateTimeOffset.Compare(expire, DateTimeOffset.Now) < 0) {
//セッションが有効期限切れ
SignIn.StateText = "有効期限が切れています。\n再度ログインしてください。";
SignIn.AutoLogin = true;
NicoNicoWrapperMain.Instance = new NicoNicoWrapperMain(new NicoNicoSession());
//ログインダイアログ表示
Messenger.Raise(new TransitionMessage(typeof(SignInDialog), SignIn, TransitionMode.Modal));
return;
}
//セッションが有効だった場合
NicoNicoWrapperMain.Instance = new NicoNicoWrapperMain(new NicoNicoSession(key, expire));
if(await NicoNicoWrapperMain.Session.SignInInternalAsync() != SigninStatus.Success) {
//ログイン失敗
SignIn.StateText = "ログインに失敗しました。";
SignIn.AutoLogin = true;
//ログインダイアログ表示
Messenger.Raise(new TransitionMessage(typeof(SignInDialog), SignIn, TransitionMode.Modal));
return;
}
//セッション情報を更新
var writer = new StreamWriter(NicoNicoUtil.CurrentDirectory + @"\session");
writer.WriteLine("Key:" + NicoNicoWrapperMain.Session.Key);
writer.WriteLine("Expire:" + NicoNicoWrapperMain.Session.Expire);
writer.Flush();
writer.Close();
//ログイン成功
StatusBar.Status = "ログイン完了";
//手動ログイン
} else {
//セッションを確立
NicoNicoWrapperMain.Instance = new NicoNicoWrapperMain(new NicoNicoSession());
Messenger.Raise(new TransitionMessage(typeof(SignInDialog), SignIn, TransitionMode.Modal));
return;
}
});
}