Beispiel #1
0
        public AsyncRequesterBase(CommandLineOptions options)
        {
#if NET452
            var requestHandler = new WebRequestHandler()
            {
                UseCookies            = false,
                UseDefaultCredentials = true,
                ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true
            };
#else
            var requestHandler = new HttpClientHandler()
            {
                UseCookies            = false,
                UseDefaultCredentials = true
            };
#endif

            if (options.UseProxy)
            {
                requestHandler.UseProxy = true;
                requestHandler.Proxy    = WebRequest.GetSystemWebProxy();
            }
            _client  = new HttpClient(requestHandler);
            _options = options;
            _url     = new TokenisedString(options.Url);
            if (!string.IsNullOrEmpty(options.Template))
            {
                _templateParser      = new TemplateParser(File.ReadAllText(options.Template));
                _randomValueProvider = new RandomValueProvider(
                    new[] { _url }.Concat(_templateParser.Headers.Select(x => x.Value)).ToArray());
            }
            else
            {
                _randomValueProvider = new RandomValueProvider(_url);
            }
            _valueProvider = new NoValueProvider();

            if (!string.IsNullOrEmpty(_options.Plugin)) // plugin
            {
                var assembly          = Assembly.LoadFile(_options.Plugin);
                var valueProviderType = assembly.GetExportedTypes().FirstOrDefault(t => typeof(IValueProvider)
                                                                                   .IsAssignableFrom(t));
                if (valueProviderType == null)
                {
                    throw new ArgumentException("No public type in plugin implements IValueProvider.");
                }

                _valueProvider = (IValueProvider)Activator.CreateInstance(valueProviderType);
            }
            else if (!string.IsNullOrEmpty(options.ValuesFile)) // csv values file
            {
                _valueProvider = new SeparatedFileValueProvider(options.ValuesFile,
                                                                options.IsTsv ? '\t' : ',', options.Shuffle);
            }
        }
 public TemplateParser(string templateText, Encoding encoding)
 {
     _encoding = encoding;
     var indexOfHeadersEnd = templateText.IndexOf("\r\n\r\n");
     if (indexOfHeadersEnd < 0)
         Init(templateText);
     else
     {
         Init(templateText.Substring(0, indexOfHeadersEnd));
         _stringBody = templateText.Substring(indexOfHeadersEnd + 4);
         _payload = Encoding.UTF8.GetBytes(_stringBody);
         _tokenisedBody = new TokenisedString(_stringBody);
     }
 }
        public TemplateParser(string templateText, Encoding encoding)
        {
            _encoding = encoding;
            var indexOfHeadersEnd = templateText.IndexOf("\r\n\r\n");

            if (indexOfHeadersEnd < 0)
            {
                Init(templateText);
            }
            else
            {
                Init(templateText.Substring(0, indexOfHeadersEnd));
                _stringBody    = templateText.Substring(indexOfHeadersEnd + 4);
                _payload       = Encoding.UTF8.GetBytes(_stringBody);
                _tokenisedBody = new TokenisedString(_stringBody);
            }
        }
Beispiel #4
0
        public Requester(CommandLineOptions options)
        {

            var requestHandler = new WebRequestHandler()
                                     {
                                         UseCookies = false,
                                         UseDefaultCredentials = true
                                     };
            if (options.UseProxy)
            {
                requestHandler.UseProxy = true;
                requestHandler.Proxy = WebRequest.GetSystemWebProxy();
            }
            _client = new HttpClient(requestHandler);
            _options = options;
            _url = new TokenisedString(options.Url);
            if (!string.IsNullOrEmpty(options.Template))
            {
                _templateParser = new TemplateParser(File.ReadAllText(options.Template));
                _randomValueProvider = new RandomValueProvider(
                    new[] { _url }.Concat(_templateParser.Headers.Select(x => x.Value)).ToArray());
            }
            else
            {
                _randomValueProvider = new RandomValueProvider(_url);
            }
            _valueProvider = new NoValueProvider();

            if (!string.IsNullOrEmpty(_options.Plugin)) // plugin
            {
                var assembly = Assembly.LoadFile(_options.Plugin);
                var valueProviderType = assembly.GetExportedTypes().Where(t => typeof (IValueProvider)
                                                                      .IsAssignableFrom(t)).FirstOrDefault();
                if(valueProviderType==null)
                    throw new ArgumentException("No public type in plugin implements IValueProvider.");

                _valueProvider = (IValueProvider)Activator.CreateInstance(valueProviderType);
            }
            else if (!string.IsNullOrEmpty(options.ValuesFile)) // csv values file
            {
                _valueProvider = new SeparatedFileValueProvider(options.ValuesFile, 
                    options.IsTsv ? '\t' : ',');
            }

        }