public static string GetExtenstion(SharedEntryType type) { switch (type) { case SharedEntryType.CarSetup: case SharedEntryType.ControlsPreset: case SharedEntryType.ForceFeedbackPreset: case SharedEntryType.PpFilter: return(@".ini"); case SharedEntryType.QuickDrivePreset: case SharedEntryType.AudioSettingsPreset: case SharedEntryType.VideoSettingsPreset: case SharedEntryType.AssistsSetupPreset: case SharedEntryType.TrackStatePreset: case SharedEntryType.RaceGridPreset: case SharedEntryType.CustomShowroomPreset: case SharedEntryType.CustomPreviewsPreset: return(@".cmpreset"); case SharedEntryType.Replay: return(@".lnk"); case SharedEntryType.RhmPreset: return(@".xml"); case SharedEntryType.Weather: case SharedEntryType.UserChampionship: return(""); default: throw new ArgumentOutOfRangeException(); } }
public static async Task ShareAsync(SharedEntryType type, [CanBeNull] string defaultName, [CanBeNull] string target, [NotNull] byte[] data) { if (_sharingInProcess) return; _sharingInProcess = true; try { var contentName = defaultName; if (!SettingsHolder.Sharing.ShareWithoutName) { contentName = Prompt.Show(ControlsStrings.Share_EnterName, ControlsStrings.Share_EnterNameHeader, defaultName, ToolsStrings.Common_None, maxLength: 60); if (contentName == null) return; // cancelled if (string.IsNullOrWhiteSpace(contentName)) { contentName = null; } } string id = null; if (SettingsHolder.Sharing.CustomIds) { id = Prompt.Show(ControlsStrings.Share_EnterCustomId, ControlsStrings.Share_EnterCustomIdHeader, "", ToolsStrings.Common_None, maxLength: 200)?.Trim(); if (id == null) return; // cancelled if (string.IsNullOrWhiteSpace(id)) { id = null; } } var authorName = SettingsHolder.Sharing.ShareAnonymously ? null : SettingsHolder.Sharing.SharingName; if (SettingsHolder.Sharing.VerifyBeforeSharing && ModernDialog.ShowMessage( string.Format(ControlsStrings.Share_VerifyMessage, authorName ?? @"?", contentName ?? @"?", type.GetDescription()), ControlsStrings.Share_VerifyMessageHeader, MessageBoxButton.YesNo) != MessageBoxResult.Yes) { return; } string link; using (var waiting = new WaitingDialog()) { waiting.Report(ControlsStrings.Share_InProgress); link = await SharingHelper.ShareAsync(type, contentName, target, data, id, waiting.CancellationToken); if (link == null) return; } ShowShared(type, link); await Task.Delay(2000); #if WIN10_SHARE try { var dataTransferManager = DataTransferManager.GetForCurrentView(); dataTransferManager.DataRequested += OnDataRequested; DataTransferManager.ShowShareUI(); } catch (Exception e) { Logging.Warning("DataTransferManager exception: " + e); } #endif } catch (Exception e) { NonfatalError.Notify(string.Format(ControlsStrings.Share_CannotShare, type.GetDescription()), ToolsStrings.Common_CannotDownloadFile_Commentary, e); } finally { _sharingInProcess = false; } }
public void AddToHistory(SharedEntryType type, string name, string target, InternalUtils.ShareResult result) { History.Add(new SharedEntry { EntryType = type, Id = result.Id, RemovalKey = result.RemovalKey, Name = name, Target = target }); SaveHistory(); }
public static async Task <string> ShareAsync(SharedEntryType type, string name, string target, byte[] data, string customId = null, CancellationToken cancellation = default(CancellationToken)) { var authorName = SettingsHolder.Sharing.ShareAnonymously ? null : SettingsHolder.Sharing.SharingName; var result = await InternalUtils.ShareEntryAsync(type.ToString(), name, target, authorName, data, CmApiProvider.UserAgent, customId, cancellation); if (result == null || cancellation.IsCancellationRequested) { return(null); } Instance.AddToHistory(type, name, target, result); return(result.Url); }
public static SharedMetadata GetMetadata(SharedEntryType type, string data, out string cleaned) { switch (type) { case SharedEntryType.CarSetup: var r = new SharedMetadata(); var s = data.Split('\n'); foreach (var k in s.Where(x => x.StartsWith(IniMetadataPrefix)).Select(l => l.Split(new[] { ':' }, 3)).Where(k => k.Length == 3)) { r[k[1]] = Storage.Decode(k[2]); } cleaned = s.Where(x => !x.StartsWith(IniMetadataPrefix)).JoinToString('\n'); return(r); default: throw new NotSupportedException(); } }
public static string SetMetadata(SharedEntryType type, string data, SharedMetadata metadata) { switch (type) { case SharedEntryType.CarSetup: var s = new StringBuilder(); foreach (var pair in metadata.Where(x => x.Value != null)) { if (pair.Key.Contains(@":")) { throw new Exception(@"Invalid key"); } s.Append(IniMetadataPrefix + pair.Key + @":" + Storage.Encode(pair.Value) + '\n'); } return(s + data); default: throw new NotSupportedException(); } }
public static async Task ShareAsync(SharedEntryType type, [CanBeNull] string defaultName, [CanBeNull] string target, [NotNull] byte[] data) { if (_sharingInProcess) { return; } _sharingInProcess = true; try { var contentName = defaultName; if (!SettingsHolder.Sharing.ShareWithoutName) { contentName = Prompt.Show(ControlsStrings.Share_EnterName, ControlsStrings.Share_EnterNameHeader, defaultName, ToolsStrings.Common_None, maxLength: 60); if (contentName == null) { return; // cancelled } if (string.IsNullOrWhiteSpace(contentName)) { contentName = null; } } string id = null; if (SettingsHolder.Sharing.CustomIds) { id = Prompt.Show(ControlsStrings.Share_EnterCustomId, ControlsStrings.Share_EnterCustomIdHeader, "", ToolsStrings.Common_None, maxLength: 200)?.Trim(); if (id == null) { return; // cancelled } if (string.IsNullOrWhiteSpace(id)) { id = null; } } var authorName = SettingsHolder.Sharing.ShareAnonymously ? null : SettingsHolder.Sharing.SharingName; if (SettingsHolder.Sharing.VerifyBeforeSharing && ModernDialog.ShowMessage( string.Format(ControlsStrings.Share_VerifyMessage, authorName ?? @"?", contentName ?? @"?", type.GetDescription()), ControlsStrings.Share_VerifyMessageHeader, MessageBoxButton.YesNo) != MessageBoxResult.Yes) { return; } string link; using (var waiting = new WaitingDialog()) { waiting.Report(ControlsStrings.Share_InProgress); link = await SharingHelper.ShareAsync(type, contentName, target, data, id, waiting.CancellationToken); if (link == null) { return; } } ShowShared(type, link); await Task.Delay(2000); } catch (Exception e) { NonfatalError.Notify(string.Format(ControlsStrings.Share_CannotShare, type.GetDescription()), ToolsStrings.Common_CannotDownloadFile_Commentary, e); } finally { _sharingInProcess = false; } }
public static Task ShareAsync(SharedEntryType type, [CanBeNull] string defaultName, [CanBeNull] string target, [NotNull] string data) { return(ShareAsync(type, defaultName, target, Encoding.UTF8.GetBytes(data))); }
public static void ShowShared(SharedEntryType type, string link) { ShowShared(type.GetDescription(), link); }
public static Task ShareAsync(SharedEntryType type, [CanBeNull] string defaultName, [CanBeNull] string target, [NotNull] string data) { return ShareAsync(type, defaultName, target, Encoding.UTF8.GetBytes(data)); }
public static void ShowShared(SharedEntryType type, string link) { if (SettingsHolder.Sharing.CopyLinkToClipboard) { Clipboard.SetText(link); } Toast.Show(string.Format(ControlsStrings.Share_Shared, type.GetDescription().ToTitle()), SettingsHolder.Sharing.CopyLinkToClipboard ? ControlsStrings.Share_SharedMessage : ControlsStrings.Share_SharedMessageAlternative, () => { Process.Start(link + "#noauto"); }); }