Example #1
0
        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();
            }
        }
Example #2
0
        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;
            }
        }
Example #3
0
 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();
 }
Example #4
0
        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);
        }
Example #5
0
        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();
            }
        }
Example #6
0
        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();
            }
        }
Example #7
0
        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;
            }
        }
Example #8
0
 public static Task ShareAsync(SharedEntryType type, [CanBeNull] string defaultName, [CanBeNull] string target, [NotNull] string data)
 {
     return(ShareAsync(type, defaultName, target, Encoding.UTF8.GetBytes(data)));
 }
Example #9
0
 public static void ShowShared(SharedEntryType type, string link)
 {
     ShowShared(type.GetDescription(), link);
 }
Example #10
0
 public static Task ShareAsync(SharedEntryType type, [CanBeNull] string defaultName, [CanBeNull] string target, [NotNull] string data) {
     return ShareAsync(type, defaultName, target, Encoding.UTF8.GetBytes(data));
 }
Example #11
0
        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");
                    });
        }