Ejemplo n.º 1
0
        internal static URI ParseInternal(string uriString, bool percentCharsEscaped, Context context,
                                          out CachedProtocolProvider cachedProtocolProvider)
        {
            var uri = new URI();

            if (percentCharsEscaped)
            {
                uriString = uriString.Replace("%25", "%");
            }
            var groups         = Regex.Match(uriString, RegEx.Protocol).Groups;
            var protocolString = groups["proto"].Value;

            if (protocolString.StartsWith("-"))
            {
                protocolString = protocolString.Substring(1);
            }
            var tail = groups["tail"].Value;

            if (!ProtocolController.ProtocolProviders.TryGetValue(protocolString, out cachedProtocolProvider))
            {
                uri.Error = new UnknownProtocol(protocolString);
                return(uri);
            }
            uri.ProtocolProvider = cachedProtocolProvider.ProtocolProvider;
            try
            {
                uri.Populate(cachedProtocolProvider.ProtocolProvider.GetUriComponents(tail, context));
            }
            catch (Exception e)
            {
                uri.Error = e;
            }
            return(uri);
        }
Ejemplo n.º 2
0
 internal Body(RESTarStream stream, CachedProtocolProvider protocolProvider)
 {
     ContentType      = (stream?.ContentType).GetValueOrDefault();
     Stream           = stream;
     ContentLength    = stream?.Length;
     HasContent       = ContentLength > 0;
     ProtocolProvider = protocolProvider;
 }
Ejemplo n.º 3
0
        internal static URI ParseInternal
        (
            string uriString,
            bool percentCharsEscaped,
            RESTableContext context,
            out CachedProtocolProvider cachedProtocolProvider
        )
        {
            var uri = new URI();

            if (percentCharsEscaped)
            {
                uriString = uriString.Replace("%25", "%");
            }
            var groups         = Regex.Match(uriString, RegEx.Protocol).Groups;
            var protocolString = groups["proto"].Value;

            if (protocolString.StartsWith("-"))
            {
                protocolString = protocolString.Substring(1);
            }
            var tail = groups["tail"].Value;

            uri.ProtocolIdentifier = protocolString.ToLowerInvariant();
            var protocolProviders = context.Services.GetRequiredService <ProtocolProviderManager>().CachedProtocolProviders;

            if (!protocolProviders.TryGetValue(protocolString, out cachedProtocolProvider))
            {
                uri.Error = new UnknownProtocol(protocolString);
                return(uri);
            }
            uri.ProtocolProvider = cachedProtocolProvider.ProtocolProvider;
            try
            {
                uri.Populate(cachedProtocolProvider.ProtocolProvider.GetUriComponents(tail, context));
            }
            catch (Exception e)
            {
                uri.Error = e;
            }
            return(uri);
        }