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)); }
protected ReaderMessage(ImmutableList <T> args, ReaderMessageOptions options) { _args = args; Options = options; }
public ReaderStringMessage(IEnumerable <String> args, ReaderMessageOptions options = DefaultOptions) : base(args.ToImmutableList(), options) { }
public ReaderMessage(T arg, ReaderMessageOptions options = DefaultOptions) : this(new List <T> { arg }.ToImmutableList(), options) { }
public ReaderStringMessage(String args, ReaderMessageOptions options = DefaultOptions) : this(args.Split(' ', StringSplitOptions.RemoveEmptyEntries), options) { }