string IPlugin.GetSaveToFileElement(Character input) { CharacterExtended ce; if (MyCharExtendedDic.ContainsKey(input.FileName)) { if (!MyCharExtendedDic.TryGetValue(input.FileName, out ce)) { throw new ArgumentException("Could not load char from Dic!", nameof(input)); } } else { ce = new CharacterExtended(input, null); } if ((SINnersOptions.UploadOnSave == true) && (IsSaving == false)) { IsSaving = true; //removing a handler that is not registered is legal - that way only one handler is registered EVER! try { input.OnSaveCompleted -= MyOnSaveUpload; } catch (Exception e) { System.Diagnostics.Trace.TraceInformation(e.ToString()); } input.OnSaveCompleted += MyOnSaveUpload; } return(JsonConvert.SerializeObject(ce.MySINnerFile.SiNnerMetaData)); }
private async void MyOnSaveUpload(object sender, Character input) { try { input.OnSaveCompleted -= MyOnSaveUpload; CharacterExtended ce = new CharacterExtended(input, null); var found = await StaticUtils.Client.GetByIdWithHttpMessagesAsync(ce.MySINnerFile.Id.Value); if (found.Response.StatusCode == System.Net.HttpStatusCode.OK) { var sinjson = await found.Response.Content.ReadAsStringAsync(); var foundobj = Newtonsoft.Json.JsonConvert.DeserializeObject <SINner>(sinjson); SINner foundsin = foundobj as SINner; if (foundsin.LastChange >= ce.MyCharacter.FileLastWriteTime) { //is already up to date! return; } } ce.MySINnerFile.SiNnerMetaData.Tags = ce.PopulateTags(); ce.PrepareModel(); await ChummerHub.Client.Backend.Utils.PostSINnerAsync(ce); await ChummerHub.Client.Backend.Utils.UploadChummerFileAsync(ce); } catch (Exception e) { System.Diagnostics.Trace.TraceError(e.ToString()); } finally { IsSaving = false; } }
public CharacterExtended SetCharacterFrom(CharacterShared mySINner) { InitializeComponent(); _mySINner = mySINner; MyCE = new CharacterExtended(mySINner.CharacterObject, null, PluginHandler.MySINnerLoading); MyCE.MySINnerFile.SiNnerMetaData.Tags = MyCE.PopulateTags(); MyCE.ZipFilePath = MyCE.PrepareModel(); TabSINnersBasic = new SINnersBasic(this) { Visible = true }; TabSINnersAdvanced = new SINnersAdvanced(this); #if DEBUG TabSINnersAdvanced.Visible = true; #else TabSINnersAdvanced.Visible = false; #endif this.tabPageBasic.Controls.Add(TabSINnersBasic); this.tabPageAdvanced.Controls.Add(TabSINnersAdvanced); this.AutoSize = true; return(MyCE); }
public frmSINnerGroupSearch(CharacterExtended ce, ucSINnersBasic parentBasic) { MyCE = ce; MyParentForm = parentBasic; InitializeComponent(); this.siNnerGroupSearch1.MyCE = ce; this.siNnerGroupSearch1.MyParentForm = this; }
private static CharacterExtended GetMyCe(Character input) { CharacterExtended ce = null; var found = (from a in MainForm.OpenCharacterForms where a.CharacterObject == input select a) .FirstOrDefault(); if (found == null) { return(ce); } TabPage sinnertab = null; TabControl.TabPageCollection myCollection = null; if (found is frmCreate foundcreate) { myCollection = foundcreate.TabCharacterTabs.TabPages; } if (found is frmCareer foundcareer) { myCollection = foundcareer.TabCharacterTabs.TabPages; } if (myCollection == null) { return(ce); } foreach (TabPage tab in myCollection) { if (tab.Name == "SINners") { sinnertab = tab; break; } } if (sinnertab == null) { return(ce); } ucSINnersUserControl myUcSIN = null; foreach (ucSINnersUserControl ucSIN in sinnertab.Controls) { myUcSIN = ucSIN; break; } if (myUcSIN == null) { return(ce); } ce = myUcSIN.MyCE; return(ce); }
void IPlugin.LoadFileElement(Character input, string fileElement) { CharacterExtended ce; if (MyCharExtendedDic.TryGetValue(input.FileName, out ce)) { ce.MyCharacter = input; } else { ce = new CharacterExtended(input, fileElement); } }
public static async Task <HttpOperationResponse> PostSINnerAsync(CharacterExtended ce) { HttpOperationResponse res = null; try { UploadInfoObject uploadInfoObject = new UploadInfoObject(); uploadInfoObject.Client = PluginHandler.MyUploadClient; uploadInfoObject.UploadDateTime = DateTime.Now; ce.MySINnerFile.UploadDateTime = DateTime.Now; uploadInfoObject.SiNners = new List <SINner>() { ce.MySINnerFile }; System.Diagnostics.Trace.TraceInformation("Posting " + ce.MySINnerFile.Id + "..."); var client = await StaticUtils.GetClient(); if (!StaticUtils.IsUnitTest) { res = await client.PostSINWithHttpMessagesAsync(uploadInfoObject); if ((res.Response.StatusCode != HttpStatusCode.OK) && (res.Response.StatusCode != HttpStatusCode.Accepted) && (res.Response.StatusCode != HttpStatusCode.Created)) { var msg = "Post of " + ce.MyCharacter.Alias + " completed with StatusCode: " + res?.Response?.StatusCode; msg += Environment.NewLine + "Reason: " + res?.Response?.ReasonPhrase; var content = await res.Response.Content.ReadAsStringAsync(); msg += Environment.NewLine + "Content: " + content; System.Diagnostics.Trace.TraceWarning(msg); PluginHandler.MainForm.DoThreadSafe(() => { MessageBox.Show(msg); }); throw new ArgumentException(msg); } } else { client.PostSINWithHttpMessagesAsync(uploadInfoObject).RunSynchronously(); } System.Diagnostics.Trace.TraceInformation("Post of " + ce.MySINnerFile.Id + " finished."); } catch (Exception ex) { System.Diagnostics.Trace.TraceError(ex.ToString()); throw; } return(res); }
private async void bMultiUpload_Click(object sender, EventArgs e) { OpenFileDialog thisDialog = new OpenFileDialog(); thisDialog.Filter = "Chummer files (*.chum5)|*.chum5|All files (*.*)|*.*"; thisDialog.FilterIndex = 1; thisDialog.RestoreDirectory = true; thisDialog.Multiselect = true; thisDialog.Title = "Please Select Chummer File(s) for Batch-Upload"; if (thisDialog.ShowDialog() != DialogResult.OK) { return; } foreach (var file in thisDialog.FileNames) { try { Log.Trace("Loading: " + file); var c = new Character { FileName = file }; using (frmLoading frmLoadingForm = new frmLoading { CharacterFile = file }) { frmLoadingForm.Reset(36); frmLoadingForm.TopMost = true; frmLoadingForm.Show(); if (!(await c.Load(frmLoadingForm, false))) { continue; } Log.Trace("Character loaded: " + c.Name); } frmCharacterRoster.CharacterCache myCharacterCache = new frmCharacterRoster.CharacterCache(file); CharacterExtended ce = new CharacterExtended(c, null, null, myCharacterCache); await ce.Upload(null); } catch (Exception ex) { string msg = "Exception while loading " + file + ":"; msg += Environment.NewLine + ex.ToString(); Log.Warn(msg); /* run your code here */ Program.MainForm.ShowMessageBox(msg); } } Program.MainForm.ShowMessageBox("Upload of " + thisDialog.FileNames.Length + " files finished (successful or not - its over)."); }
public async static void MyOnSaveUpload(object sender, Character input) { try { input.OnSaveCompleted -= MyOnSaveUpload; CharacterExtended ce = new CharacterExtended(input, null); await ce.Upload(); var found = (from a in MainForm.OpenCharacterForms where a.CharacterObject == input select a) .FirstOrDefault(); if (found == null) { return; } TabPage tabPage = null; if ((found is frmCreate frm) && (frm.TabCharacterTabs.TabPages.ContainsKey("SINners"))) { var index = frm.TabCharacterTabs.TabPages.IndexOfKey("SINners"); tabPage = frm.TabCharacterTabs.TabPages[index]; } if ((found is frmCareer frm2) && (frm2.TabCharacterTabs.TabPages.ContainsKey("SINners"))) { var index = frm2.TabCharacterTabs.TabPages.IndexOfKey("SINners"); tabPage = frm2.TabCharacterTabs.TabPages[index]; } if (tabPage == null) { return; } var ucseq = tabPage.Controls.Find("SINnersBasic", true); foreach (var uc in ucseq) { var sb = uc as SINnersBasic; if (sb != null) { await sb?.CheckSINnerStatus(); } } var ucseq2 = tabPage.Controls.Find("SINnersAdvanced", true); } catch (Exception e) { System.Diagnostics.Trace.TraceError(e.ToString()); } finally { IsSaving = false; } }
void IPlugin.LoadFileElement(Character input, string fileElement) { try { CharacterExtended ce; ce = new CharacterExtended(input, fileElement, PluginHandler.MySINnerLoading); } catch (Exception e) { Log.Error(e); #if DEBUG throw; #endif } }
public frmSINnerGroupSearch(CharacterExtended ce, ucSINnersBasic parentBasic) { MyCE = ce; MyParentForm = parentBasic; InitializeComponent(); siNnerGroupSearch1.MyCE = ce; siNnerGroupSearch1.MyParentForm = this; VisibleChanged += (sender, args) => { if (Visible) { ReallyCenterToScreen(); } }; }
void IPlugin.LoadFileElement(Character input, string fileElement) { try { CharacterExtended ce; ce = new CharacterExtended(input, fileElement, PluginHandler.MySINnerLoading); } catch (Exception e) { System.Diagnostics.Trace.TraceError(e.ToString()); Console.Write(e.ToString()); #if DEBUG throw; #endif } }
public CharacterExtended SetCharacterFrom(CharacterShared mySINner) { _mySINner = mySINner; TabSINnersBasic = new SINnersBasic(this); TabSINnersBasic.Visible = true; TabSINnersAdvanced = new SINnersAdvanced(this); TabSINnersAdvanced.Visible = true; MyCE = new CharacterExtended(mySINner.CharacterObject, null); MyCE.MySINnerFile.SiNnerMetaData.Tags = MyCE.PopulateTags(); MyCE.ZipFilePath = MyCE.PrepareModel(); InitializeComponent(); this.tabPageBasic.Controls.Add(TabSINnersBasic); this.tabPageAdvanced.Controls.Add(TabSINnersAdvanced); this.AutoSize = true; return(MyCE); }
string IPlugin.GetSaveToFileElement(Character input) { CharacterExtended ce; if (MyCharExtendedDic.ContainsKey(input.FileName)) { MyCharExtendedDic.Remove(input.FileName); } ce = new CharacterExtended(input, null); MyCharExtendedDic.Add(ce.MyCharacter.FileName, ce); if ((SINnersOptions.UploadOnSave == true) && (IsSaving == false)) { IsSaving = true; //removing a handler that is not registered is legal - that way only one handler is registered EVER! input.OnSaveCompleted -= MyOnSaveUpload; input.OnSaveCompleted += MyOnSaveUpload; } return(JsonConvert.SerializeObject(ce.MySINnerFile.SiNnerMetaData)); }
public CharacterExtended SetCharacterFrom(CharacterShared mySINner) { InitializeComponent(); _mySINner = mySINner; if (PluginHandler.MyCharExtendedDic.ContainsKey(mySINner.CharacterObject.FileName)) { CharacterExtended outce; if (!PluginHandler.MyCharExtendedDic.TryGetValue(mySINner.CharacterObject.FileName, out outce)) { throw new ArgumentException("Could not get character from MyCharExtendedDic", nameof(mySINner)); } MyCE = outce; } else { MyCE = new CharacterExtended(mySINner.CharacterObject, null, PluginHandler.MySINnerLoading); MyCE.ZipFilePath = MyCE.PrepareModel(); } MyCE.MySINnerFile.SiNnerMetaData.Tags = MyCE.PopulateTags(); TabSINnersBasic = new SINnersBasic(this) { Visible = true }; TabSINnersAdvanced = new SINnersAdvanced(this); #if DEBUG TabSINnersAdvanced.Visible = true; #else TabSINnersAdvanced.Visible = false; #endif this.tabPageBasic.Controls.Add(TabSINnersBasic); this.tabPageAdvanced.Controls.Add(TabSINnersAdvanced); this.AutoSize = true; return(MyCE); }
string IPlugin.GetSaveToFileElement(Character input) { CharacterExtended ce = GetMyCe(input); //ce = new CharacterExtended(input, null); if ((ucSINnersOptions.UploadOnSave == true) && (IsSaving == false)) { IsSaving = true; //removing a handler that is not registered is legal - that way only one handler is registered EVER! try { input.OnSaveCompleted -= MyOnSaveUpload; } catch (Exception e) { System.Diagnostics.Trace.TraceInformation(e.ToString()); } input.OnSaveCompleted += MyOnSaveUpload; } return(JsonConvert.SerializeObject(ce.MySINnerFile)); }
private void bMultiUpload_Click(object sender, EventArgs e) { OpenFileDialog thisDialog = new OpenFileDialog(); thisDialog.Filter = "Chummer files (*.chum5)|*.chum5|All files (*.*)|*.*"; thisDialog.FilterIndex = 1; thisDialog.RestoreDirectory = true; thisDialog.Multiselect = true; thisDialog.Title = "Please Select Chummer File(s) for Batch-Upload"; if (thisDialog.ShowDialog() != DialogResult.OK) { return; } foreach (var file in thisDialog.FileNames) { try { Debug.WriteLine("Loading: " + file); var c = new Character { FileName = file }; if (!c.Load()) { continue; } Debug.WriteLine("Character loaded: " + c.Name); CharacterExtended ce = new CharacterExtended(c, null); ce.UploadInBackground(); } catch (Exception ex) { string msg = "Exception while loading " + file + ":"; msg += Environment.NewLine + ex.ToString(); Debug.Write(msg); System.Diagnostics.Trace.TraceWarning(msg); throw; } } }
string IPlugin.GetSaveToFileElement(Character input) { CharacterExtended ce = GetMyCe(input); var jsonResolver = new PropertyRenameAndIgnoreSerializerContractResolver(); //jsonResolver.IgnoreProperty(typeof(String), "MugshotBase64"); //jsonResolver.IgnoreProperty(typeof(SINnerExtended), "jsonSummary"); //jsonResolver.RenameProperty(typeof(Person), "FirstName", "firstName"); JsonSerializerSettings settings = new JsonSerializerSettings { ContractResolver = jsonResolver, }; //remove the reflection tag - no need to save it Tag refTag = null; string returnme = null; if (ce?.MySINnerFile?.SiNnerMetaData?.Tags != null) { var reflectionseq = (from a in ce.MySINnerFile.SiNnerMetaData.Tags where a != null && a.TagName == "Reflection" select a); if (reflectionseq?.Any() == true) { refTag = reflectionseq.FirstOrDefault(); ce.MySINnerFile.SiNnerMetaData.Tags.Remove(refTag); } returnme = JsonConvert.SerializeObject(ce.MySINnerFile, Formatting.Indented, settings); ce.MySINnerFile.SiNnerMetaData.Tags.Add(refTag); return(returnme); } else { if (ce != null) { returnme = JsonConvert.SerializeObject(ce.MySINnerFile, Formatting.Indented, settings); } } return(returnme); }
public async Task <CharacterExtended> SetCharacterFrom(CharacterShared mySINner) { InitializeComponent(); _mySINner = mySINner; //if (PluginHandler.MyCharExtendedDic.ContainsKey(mySINner.CharacterObject.FileName)) //{ // CharacterExtended outce; // if (!PluginHandler.MyCharExtendedDic.TryGetValue(mySINner.CharacterObject.FileName, out outce)) // { // throw new ArgumentException("Could not get character from MyCharExtendedDic", nameof(mySINner)); // } // MyCE = outce; //} //else //{ MyCE = new CharacterExtended(mySINner.CharacterObject, null, PluginHandler.MySINnerLoading); MyCE.ZipFilePath = await MyCE.PrepareModel(); //} MyCE.MySINnerFile.SiNnerMetaData.Tags = MyCE.PopulateTags(); TabSINnersBasic = new ucSINnersBasic(this) { Visible = true }; TabSINnersAdvanced = new ucSINnersAdvanced(this) { Visible = true }; this.tabPageBasic.Controls.Add(TabSINnersBasic); this.tabPageAdvanced.Controls.Add(TabSINnersAdvanced); this.AutoSize = true; return(MyCE); }
public async Task <CharacterExtended> SetCharacterFrom(CharacterShared mySINner) { InitializeComponent(); _mySINner = mySINner; MyCE = new CharacterExtended(mySINner.CharacterObject, null, PluginHandler.MySINnerLoading); MyCE.ZipFilePath = await MyCE.PrepareModel(); MyCE.MySINnerFile.SiNnerMetaData.Tags = MyCE.PopulateTags(); TabSINnersBasic = new ucSINnersBasic(this) { Visible = true }; TabSINnersAdvanced = new ucSINnersAdvanced(this) { Visible = true }; this.tabPageBasic.Controls.Add(TabSINnersBasic); this.tabPageAdvanced.Controls.Add(TabSINnersAdvanced); this.AutoSize = true; if ((ucSINnersOptions.UploadOnSave == true)) { try { mySINner.CharacterObject.OnSaveCompleted = null; mySINner.CharacterObject.OnSaveCompleted += PluginHandler.MyOnSaveUpload; } catch (Exception e) { System.Diagnostics.Trace.TraceInformation(e.ToString()); } } return(MyCE); }
public async Task <CharacterExtended> SetCharacterFrom(CharacterShared mySINner) { InitializeComponent(); _mySINner = mySINner ?? throw new ArgumentNullException(nameof(mySINner)); MyCE = new CharacterExtended(mySINner.CharacterObject, PluginHandler.MySINnerLoading); MyCE.ZipFilePath = await MyCE.PrepareModelAsync(); TabSINnersBasic = new ucSINnersBasic(this) { Visible = true }; TabSINnersAdvanced = new ucSINnersAdvanced(this) { Visible = true }; tabPageBasic.Controls.Add(TabSINnersBasic); tabPageAdvanced.Controls.Add(TabSINnersAdvanced); AutoSize = true; if (ucSINnersOptions.UploadOnSave) { try { if (await mySINner.CharacterObject.DoOnSaveCompletedAsync.RemoveAsync(PluginHandler.MyOnSaveUpload)) { await mySINner.CharacterObject.DoOnSaveCompletedAsync.AddAsync(PluginHandler.MyOnSaveUpload); } } catch (Exception e) { Log.Warn(e); } } //MyCE.MySINnerFile.SiNnerMetaData.Tags = MyCE.PopulateTags(); return(MyCE); }
void IPlugin.LoadFileElement(Character input, string fileElement) { try { CharacterExtended ce; if (MyCharExtendedDic.TryGetValue(input.FileName, out ce)) { ce.MyCharacter = input; } else { ce = new CharacterExtended(input, fileElement, PluginHandler.MySINnerLoading); } } catch (Exception e) { System.Diagnostics.Trace.TraceError(e.ToString()); Console.Write(e.ToString()); #if DEBUG throw; #endif } }
private static CharacterExtended GetMyCe(Character input) { CharacterShared found = null; if (MainForm?.OpenCharacterForms != null) { foreach (CharacterShared a in (MainForm?.OpenCharacterForms)) { if (a?.CharacterObject != input) { continue; } found = a; break; } } if (found == null) { return(null); } TabPage sinnertab = null; TabControl.TabPageCollection myCollection = null; switch (found) { case frmCreate foundcreate: myCollection = foundcreate.TabCharacterTabs.TabPages; break; case frmCareer foundcareer: myCollection = foundcareer.TabCharacterTabs.TabPages; break; } if (myCollection == null) { return(null); } foreach (TabPage tab in myCollection) { if (tab.Name == "SINners") { sinnertab = tab; break; } } CharacterExtended ce; if (sinnertab == null) { ce = new CharacterExtended(input, null); } else { ucSINnersUserControl myUcSIN = null; foreach (ucSINnersUserControl ucSIN in sinnertab.Controls) { myUcSIN = ucSIN; break; } ce = myUcSIN == null ? new CharacterExtended(input, null) : myUcSIN.MyCE; } return(ce); }
public ucSINnersSearch() { MySearchCharacter = new CharacterExtended(new Character(), null, null, new frmCharacterRoster.CharacterCache()); InitializeComponent(); }
private async Task <SINSearchGroupResult> JoinGroupTask(SINnerSearchGroup searchgroup, CharacterExtended myCE) { bool exceptionlogged = false; SINSearchGroupResult ssgr = null; try { DialogResult result = DialogResult.Cancel; frmSINnerGroupEdit groupEdit = null; if (searchgroup.HasPassword == true) { SINnerGroup joinGroup = new SINnerGroup(searchgroup); PluginHandler.MainForm.DoThreadSafe(() => { groupEdit = new frmSINnerGroupEdit(joinGroup, true); result = groupEdit.ShowDialog(this); }); } if ((result == DialogResult.OK) || (searchgroup.HasPassword == false)) { try { using (new CursorWait(true, this)) { var client = StaticUtils.GetClient(); var response = await client.PutSINerInGroupWithHttpMessagesAsync(searchgroup.Id, myCE.MySINnerFile.Id, groupEdit?.MySINnerGroupCreate?.MyGroup?.PasswordHash); if ((response.Response.StatusCode != HttpStatusCode.OK)) { var rescontent = await response.Response.Content.ReadAsStringAsync(); if (response.Response.StatusCode == HttpStatusCode.BadRequest) { if (rescontent.Contains("PW is wrong!")) { throw new ArgumentException("Wrong Password provided!"); } string searchfor = "NoUserRightException\",\"Message\":\""; if (rescontent.Contains(searchfor)) { string msg = rescontent.Substring(rescontent.IndexOf(searchfor) + searchfor.Length); msg = msg.Substring(0, msg.IndexOf("\"")); throw new ArgumentException(msg); } throw new ArgumentException(rescontent); } else { string msg = "StatusCode: " + response.Response.StatusCode + Environment.NewLine; msg += rescontent; throw new ArgumentException(msg); } } else { var found = await client.GetGroupByIdWithHttpMessagesAsync(searchgroup.Id, null, CancellationToken.None); var res = Backend.Utils.HandleError(found); if (found?.Response?.IsSuccessStatusCode == true) { ssgr = new SINSearchGroupResult(found.Body.MyGroup); } } } } catch (Exception e) { Log.Error(e); exceptionlogged = true; throw; } finally { MyParentForm?.MyParentForm?.CheckSINnerStatus(); } } } catch (Exception e) { if (!exceptionlogged) { Log.Error(e); } throw; } return(ssgr); }
public static async Task <HttpOperationResponse> UploadChummerFileAsync(CharacterExtended ce) { HttpOperationResponse res = null; try { if (String.IsNullOrEmpty(ce.ZipFilePath)) { ce.ZipFilePath = await ce.PrepareModel(); } using (FileStream fs = new FileStream(ce.ZipFilePath, FileMode.Open, FileAccess.Read)) { try { var client = await StaticUtils.GetClient(); if (!StaticUtils.IsUnitTest) { HttpStatusCode myStatus = HttpStatusCode.Unused; res = await client.PutSINWithHttpMessagesAsync(ce.MySINnerFile.Id.Value, fs); //var task = res.ContinueWith((sender) => //{ string msg = "Upload ended with statuscode: "; msg += res?.Response?.StatusCode + Environment.NewLine; msg += res?.Response?.ReasonPhrase; msg += Environment.NewLine + res?.Response?.Content.ReadAsStringAsync().Result; System.Diagnostics.Trace.TraceInformation(msg); myStatus = res.Response.StatusCode; if (!StaticUtils.IsUnitTest) { PluginHandler.MainForm.DoThreadSafe(() => { if (myStatus != HttpStatusCode.OK) { MessageBox.Show(msg); } using (new CursorWait(true, PluginHandler.MainForm)) { Chummer.Plugins.PluginHandler.MainForm.CharacterRoster.LoadCharacters(false, false, false, true); } }); } else { System.Diagnostics.Trace.TraceInformation(msg); } //}); } else { client.PutSIN(ce.MySINnerFile.Id.Value, fs); } } catch (Exception e) { System.Diagnostics.Trace.TraceError(e.ToString()); PluginHandler.MainForm.DoThreadSafe(() => { MessageBox.Show(e.Message); }); } } } catch (Exception ex) { System.Diagnostics.Trace.TraceError(ex.ToString()); throw; } return(res); }
private async Task <MyUserState> ShareSingleChummer() { string hash = ""; try { using (var op_shareChummer = Timekeeper.StartSyncron("Share Chummer", null, CustomActivity.OperationType.DependencyOperation, MyCharacterCache?.FilePath)) { MyUserState myState = new MyUserState(this); CharacterExtended ce = null; var client = StaticUtils.GetClient(); string sinnerid = ""; Guid SINid = Guid.Empty; async Task <CharacterExtended> GetCharacterExtended(CustomActivity parentActivity) { using (var op_prepChummer = Timekeeper.StartSyncron("Loading Chummerfile", parentActivity, CustomActivity.OperationType.DependencyOperation, MyCharacterCache?.FilePath)) { Character c = new Character() { FileName = MyCharacterCache.FilePath }; var foundchar = (from a in PluginHandler.MainForm.OpenCharacters where a.FileName == MyCharacterCache.FilePath select a).ToList(); if (foundchar?.Any() == true) { c = foundchar?.FirstOrDefault(); } else { using (frmLoading frmLoadingForm = new frmLoading { CharacterFile = MyCharacterCache.FilePath }) { frmLoadingForm.Reset(36); frmLoadingForm.TopMost = true; frmLoadingForm.Show(); myState.StatusText = "Loading chummer file..."; myState.CurrentProgress += 10; ReportProgress(myState.CurrentProgress, myState); await c.Load(frmLoadingForm, false).ConfigureAwait(true); } } if (c == null) { throw new ArgumentNullException("Could not load Character file " + MyCharacterCache.FilePath + "."); } ce = new CharacterExtended(c, null, null, MyCharacterCache); if (ce?.MySINnerFile?.Id != null) { sinnerid = ce.MySINnerFile.Id.ToString(); } hash = ce?.MySINnerFile?.MyHash; return(ce); } } if (MyCharacterCache.MyPluginDataDic.TryGetValue("SINnerId", out Object sinneridobj)) { sinnerid = sinneridobj?.ToString(); } else { ce = await GetCharacterExtended(op_shareChummer).ConfigureAwait(true); sinnerid = ce.MySINnerFile.Id.ToString(); hash = ce?.MySINnerFile?.MyHash; } if (string.IsNullOrEmpty(sinnerid) || !Guid.TryParse(sinnerid, out SINid)) { myState.StatusText = "SINner Id is unknown or not issued!"; ReportProgress(30, myState); } else { myState.StatusText = "SINner Id is " + SINid + "."; myState.CurrentProgress = 30; ReportProgress(myState.CurrentProgress, myState); } HttpOperationResponse <ResultSinnerGetSINById> checkresult = null; //check if char is already online and updated using (var op_checkOnlineVersionChummer = Timekeeper.StartSyncron( "check if online", op_shareChummer, CustomActivity.OperationType.DependencyOperation, MyCharacterCache?.FilePath)) { checkresult = await client.GetSINByIdWithHttpMessagesAsync(SINid).ConfigureAwait(true); if (checkresult == null) { throw new ArgumentException("Could not parse result from SINners Webservice!"); } if (checkresult.Response.StatusCode != HttpStatusCode.NotFound) { if (checkresult.Body.CallSuccess != true) { if (checkresult.Body.MyException is Exception myException) { throw new ArgumentException( "Error from SINners Webservice: " + checkresult.Body.ErrorText, myException); } throw new ArgumentException("Error from SINners Webservice: " + checkresult.Body.ErrorText); } hash = checkresult.Body.MySINner.MyHash; } } var lastWriteTimeUtc = System.IO.File.GetLastWriteTimeUtc(MyCharacterCache.FilePath); if (checkresult.Response.StatusCode == HttpStatusCode.NotFound || checkresult.Body.MySINner.LastChange < lastWriteTimeUtc) { if (ce == null) { myState.StatusText = "The Chummer is newer and has to be uploaded again."; myState.CurrentProgress = 30; ReportProgress(myState.CurrentProgress, myState); ce = await GetCharacterExtended(op_shareChummer).ConfigureAwait(true); } using (var op_uploadChummer = Timekeeper.StartSyncron( "Uploading Chummer", op_shareChummer, CustomActivity.OperationType.DependencyOperation, MyCharacterCache?.FilePath)) { myState.StatusText = "Checking SINner availability (and if necessary upload it)."; myState.CurrentProgress = 35; ReportProgress(myState.CurrentProgress, myState); myState.ProgressSteps = 10; var uploadtask = await ce.Upload(myState, op_uploadChummer).ConfigureAwait(true); SINid = ce.MySINnerFile.Id.Value; var result = await client.GetSINByIdWithHttpMessagesAsync(SINid).ConfigureAwait(true); if (result == null) { throw new ArgumentException("Could not parse result from SINners Webservice!"); } if (result.Body?.CallSuccess != true) { if (result.Body?.MyException is Exception myException) { throw new ArgumentException( "Error from SINners Webservice: " + result.Body?.ErrorText, myException); } throw new ArgumentException( "Error from SINners Webservice: " + result.Body?.ErrorText); } hash = result.Body.MySINner.MyHash; } } myState.StatusText = "SINner is online available."; myState.CurrentProgress = 90; ReportProgress(myState.CurrentProgress, myState); string url = client.BaseUri + "O"; url += "/" + hash; if (Properties.Settings.Default.OpenChummerFromSharedLinks == true) { url += "?open=true"; } myState.LinkText = url; ReportProgress(100, myState); RunWorkerCompleted(myState); return(myState); } } catch (Exception exception) { Log.Warn(exception); throw; } }
public ucSINnersSearch() { MySearchCharacter = new CharacterExtended(new Character(), null); InitializeComponent(); }
public async static void MyOnSaveUpload(object sender, Character input) { try { input.OnSaveCompleted -= MyOnSaveUpload; using (new CursorWait(true, MainForm)) { CharacterExtended ce; if (MyCharExtendedDic.ContainsKey(input.FileName)) { MyCharExtendedDic.TryGetValue(input.FileName, out ce); } else { ce = new CharacterExtended(input, null); MyCharExtendedDic.Add(input.FileName, ce); } if (!ce.MySINnerFile.SiNnerMetaData.Tags.Any(a => a.TagName == "Reflection")) { ce.MySINnerFile.SiNnerMetaData.Tags = ce.PopulateTags(); } await ce.Upload(); var found = (from a in MainForm.OpenCharacterForms where a.CharacterObject == input select a) .FirstOrDefault(); if (found == null) { return; } TabPage tabPage = null; if ((found is frmCreate frm) && (frm.TabCharacterTabs.TabPages.ContainsKey("SINners"))) { var index = frm.TabCharacterTabs.TabPages.IndexOfKey("SINners"); tabPage = frm.TabCharacterTabs.TabPages[index]; } if ((found is frmCareer frm2) && (frm2.TabCharacterTabs.TabPages.ContainsKey("SINners"))) { var index = frm2.TabCharacterTabs.TabPages.IndexOfKey("SINners"); tabPage = frm2.TabCharacterTabs.TabPages[index]; } if (tabPage == null) { return; } var ucseq = tabPage.Controls.Find("SINnersBasic", true); foreach (var uc in ucseq) { var sb = uc as SINnersBasic; if (sb != null) { await sb?.CheckSINnerStatus(); } } var ucseq2 = tabPage.Controls.Find("SINnersAdvanced", true); } } catch (Exception e) { System.Diagnostics.Trace.TraceError(e.ToString()); } finally { IsSaving = false; } }
private async Task <MyUserState> ShareSingleChummer() { if (MyCharacterCache == null) { throw new ArgumentNullException(nameof(MyCharacterCache)); } string hash = string.Empty; try { using (CustomActivity op_shareChummer = Timekeeper.StartSyncron("Share Chummer", null, CustomActivity.OperationType.DependencyOperation, MyCharacterCache.FilePath)) { MyUserState myState = new MyUserState(this); CharacterExtended ce = null; SinnersClient client = StaticUtils.GetClient(); string sinnerid = string.Empty; Guid SINid = Guid.Empty; try { async Task <CharacterExtended> GetCharacterExtended(CustomActivity parentActivity) { using (_ = Timekeeper.StartSyncron("Loading Chummerfile", parentActivity, CustomActivity.OperationType.DependencyOperation, MyCharacterCache.FilePath)) { Character c = PluginHandler.MainForm.OpenCharacters.FirstOrDefault(a => a.FileName == MyCharacterCache.FilePath); bool blnSuccess = true; if (c == null) { c = new Character { FileName = MyCharacterCache.FilePath }; using (LoadingBar frmLoadingForm = new LoadingBar { CharacterFile = MyCharacterCache.FilePath }) { frmLoadingForm.Reset(36); frmLoadingForm.Show(); myState.StatusText = "Loading chummer file..."; myState.CurrentProgress += 10; ReportProgress(myState.CurrentProgress, myState); blnSuccess = await c.LoadAsync(frmLoadingForm, false); } } if (!blnSuccess) { throw new ArgumentNullException("Could not load Character file " + MyCharacterCache.FilePath + "."); } ce = new CharacterExtended(c, null, MyCharacterCache); if (ce?.MySINnerFile?.Id != null) { sinnerid = ce.MySINnerFile.Id.ToString(); } hash = ce?.MySINnerFile?.MyHash; return(ce); } } if (MyCharacterCache.MyPluginDataDic.TryGetValue("SINnerId", out object sinneridobj)) { sinnerid = sinneridobj?.ToString() ?? string.Empty; } else { ce = await GetCharacterExtended(op_shareChummer); sinnerid = ce.MySINnerFile.Id.ToString(); hash = ce?.MySINnerFile?.MyHash ?? string.Empty; } if (string.IsNullOrEmpty(sinnerid) || !Guid.TryParse(sinnerid, out SINid)) { myState.StatusText = "SINner Id is unknown or not issued!"; ReportProgress(30, myState); } else { myState.StatusText = "SINner Id is " + SINid + "."; myState.CurrentProgress = 30; ReportProgress(myState.CurrentProgress, myState); } try { //check if char is already online and updated ResultSinnerGetSINById checkresult; using (_ = Timekeeper.StartSyncron( "check if online", op_shareChummer, CustomActivity.OperationType.DependencyOperation, MyCharacterCache?.FilePath)) { checkresult = await client.GetSINByIdAsync(SINid); if (checkresult == null) { throw new ArgumentException("Could not parse result from SINners Webservice!"); } if (!checkresult.CallSuccess) { if (checkresult.MyException != null) { throw new ArgumentException( "Error from SINners Webservice: " + checkresult.ErrorText, checkresult.MyException.ToString()); } throw new ArgumentException("Error from SINners Webservice: " + checkresult.ErrorText); } hash = checkresult.MySINner.MyHash; } DateTime lastWriteTimeUtc = MyCharacterCache != null?File.GetLastWriteTimeUtc(MyCharacterCache.FilePath) : DateTime.MinValue; if (checkresult.MySINner.LastChange < lastWriteTimeUtc) { if (ce == null) { myState.StatusText = "The Chummer is newer and has to be uploaded again."; myState.CurrentProgress = 30; ReportProgress(myState.CurrentProgress, myState); ce = await GetCharacterExtended(op_shareChummer); } if (ce != null) { using (CustomActivity op_uploadChummer = Timekeeper.StartSyncron( "Uploading Chummer", op_shareChummer, CustomActivity.OperationType.DependencyOperation, MyCharacterCache?.FilePath)) { myState.StatusText = "Checking SINner availability (and if necessary upload it)."; myState.CurrentProgress = 35; ReportProgress(myState.CurrentProgress, myState); myState.ProgressSteps = 10; await ce.Upload(myState, op_uploadChummer); if (ce.MySINnerFile.Id != null) { SINid = ce.MySINnerFile.Id.Value; } ResultSinnerGetSINById result = await client.GetSINByIdAsync(SINid); if (result == null) { throw new ArgumentException( "Could not parse result from SINners Webservice!"); } if (!result.CallSuccess) { if (result.MyException != null) { throw new ArgumentException( "Error from SINners Webservice: " + result.ErrorText, result.MyException.ToString()); } throw new ArgumentException( "Error from SINners Webservice: " + result.ErrorText); } hash = result.MySINner.MyHash; } } } } finally { //checkresult?.Dispose(); } } finally { ce?.Dispose(); } myState.StatusText = "SINner is online available."; myState.CurrentProgress = 90; ReportProgress(myState.CurrentProgress, myState); string url = client.BaseUrl + "O"; url += "/" + hash; if (Settings.Default.OpenChummerFromSharedLinks) { url += "?open=true"; } myState.LinkText = url; ReportProgress(100, myState); RunWorkerCompleted(myState); return(myState); } } catch (Exception exception) { Log.Warn(exception); throw; } }