コード例 #1
0
        private async Task <Boolean> ProcessExternalInputHandlerAsync(Byte[] message)
        {
            String[] args = message.Deserialize <String[]>();

            if (args is null || args.Length <= 0)
            {
                return(true);
            }

            ReaderMessageOptions options = ReaderMessageOptions.External;

            // ReSharper disable once InvertIf
            if (args.Length == 1 && args[0].StartsWith(Domain.UrlSchemeProtocolName, StringComparison.InvariantCultureIgnoreCase))
            {
                args = Regex.Replace(args[0], $"{Domain.UrlSchemeProtocolName}:(\\/|\\\\)*", String.Empty, RegexOptions.IgnoreCase | RegexOptions.Compiled)
                       .Replace('/', ' ')
                       .Replace('\\', ' ')
                       .Split(" ", StringSplitOptions.RemoveEmptyEntries)
                       .Select(Uri.UnescapeDataString).ToArray();

                if (args.Length <= 0)
                {
                    return(true);
                }

                options |= ReaderMessageOptions.Protocol;
            }

            return(await ProcessInputAsync(new ReaderStringMessage(args, options)).ConfigureAwait(false));
        }
コード例 #2
0
ファイル: ReaderMessage.cs プロジェクト: Rain0Ash/NetExtender
 protected ReaderMessage(ImmutableList <T> args, ReaderMessageOptions options)
 {
     _args   = args;
     Options = options;
 }
コード例 #3
0
 public ReaderStringMessage(IEnumerable <String> args, ReaderMessageOptions options = DefaultOptions)
     : base(args.ToImmutableList(), options)
 {
 }
コード例 #4
0
ファイル: ReaderMessage.cs プロジェクト: Rain0Ash/NetExtender
 public ReaderMessage(T arg, ReaderMessageOptions options = DefaultOptions)
     : this(new List <T> {
     arg
 }.ToImmutableList(), options)
 {
 }
コード例 #5
0
 public ReaderStringMessage(String args, ReaderMessageOptions options = DefaultOptions)
     : this(args.Split(' ', StringSplitOptions.RemoveEmptyEntries), options)
 {
 }