public HttpHandlerContext(Server server, HttpRequestProcessor.Host host, Connection connection, IIdentity identity)
		{
			Server = server;
			Host = host;
			Connection = connection;
			Identity = identity;
		}
Esempio n. 2
0
 public void Init(string username, string password, LogLevel level = LogLevel.None)
 {
     EscavadorEndPoints.UserName = username;
     EscavadorEndPoints.Password = password;
     log       = new DebugLogger(level);
     processor = new HttpRequestProcessor(log, ref client);
 }
Esempio n. 3
0
        public void Ping()
        {
            var request = CreateCommandRequest(eRequestCommand.Ping, "FolderSync");

            var requestProcessor = new HttpRequestProcessor(request);
            var response         = requestProcessor.Process();

            Assert.IsNotNull(response);
            Assert.IsTrue(response.IsSuccessStatusCode);
            Assert.IsNotNull(response.Content);
        }
        public void GetItemEstimate_Success()
        {
            var request = CreateCommandRequest(eRequestCommand.GetItemEstimate, "GetItemEstimate");

            var requestProcessor = new HttpRequestProcessor(request);
            var response         = requestProcessor.Process();

            Assert.IsNotNull(response);
            Assert.IsTrue(response.IsSuccessStatusCode);
            Assert.IsNotNull(response.Content);
        }
 public BlobsExtensionConfigProvider(
     BlobServiceClientProvider blobServiceClientProvider,
     BlobTriggerAttributeBindingProvider triggerBinder,
     IContextGetter <IBlobWrittenWatcher> contextAccessor,
     INameResolver nameResolver,
     IConverterManager converterManager,
     BlobTriggerQueueWriterFactory blobTriggerQueueWriterFactory,
     HttpRequestProcessor httpRequestProcessor,
     ILoggerFactory loggerFactory) : this(blobServiceClientProvider, triggerBinder, contextAccessor, nameResolver, converterManager, blobTriggerQueueWriterFactory, httpRequestProcessor, null, loggerFactory)
 {
 }
        private void StartWebServer()
        {
            var port = AppConfig.GetIntParam("WebServer.Port", 8093);

            try
            {
                webServer = new HttpRequestProcessor();
                webServer.Start(port, DeliveryWebServer.Instance.ProcessHttpRequest, BaseWebServer.needAuthentication);
                Logger.InfoFormat("Старт web-сервера - ОК ({0})", port);
            }
            catch (Exception ex)
            {
                Logger.ErrorFormat("Ошибка старта веб-сервера (порт {0}): {1}", port, ex);
                webServer = null;
            }
        }
Esempio n. 7
0
        public void Options_Success()
        {
            var url     = string.Format("{0}Microsoft-Server-ActiveSync", hostAddress);
            var request = new HttpRequestMessage
            {
                RequestUri = new Uri(url),
                Method     = HttpMethod.Options
            };

            var requestProcessor = new HttpRequestProcessor(request);
            var response         = requestProcessor.Process();

            Assert.IsNotNull(response);

            Assert.IsTrue(response.Headers.Contains("MS-ASProtocolVersions"));
            Assert.IsTrue(response.Headers.Contains("MS-ASProtocolCommands"));
        }
 public BlobsExtensionConfigProvider(
     BlobServiceClientProvider blobServiceClientProvider,
     BlobTriggerAttributeBindingProvider triggerBinder,
     IContextGetter <IBlobWrittenWatcher> contextAccessor,
     INameResolver nameResolver,
     IConverterManager converterManager,
     BlobTriggerQueueWriterFactory blobTriggerQueueWriterFactory,
     HttpRequestProcessor httpRequestProcessor,
     ILoggerFactory loggerFactory)
 {
     _blobServiceClientProvider = blobServiceClientProvider;
     _triggerBinder             = triggerBinder;
     _blobWrittenWatcherGetter  = contextAccessor;
     _nameResolver     = nameResolver;
     _converterManager = converterManager;
     _blobTriggerQueueWriterFactory = blobTriggerQueueWriterFactory;
     _httpRequestProcessor          = httpRequestProcessor;
     _logger = loggerFactory.CreateLogger <BlobsExtensionConfigProvider>();
 }
Esempio n. 9
0
        /// <inheritdoc/>
        public async Task HandleAsync(string deviceId, string moduleId, byte[] payload,
                                      IDictionary <string, string> properties, Func <Task> checkpoint)
        {
            if (!properties.TryGetValue("content-type", out var type) &&
                !properties.TryGetValue("iothub-content-type", out type))
            {
                throw new ArgumentException("Missing content type in event.");
            }

            // Get message id and correlation id from content type
            var typeParsed = type.Split("_", StringSplitOptions.RemoveEmptyEntries);

            if (typeParsed.Length != 2 ||
                !int.TryParse(typeParsed[1], out var messageId))
            {
                return;
            }
            var requestId = typeParsed[0];

            HttpRequestProcessor processor;

            if (messageId == 0)
            {
                var request = JsonConvertEx.DeserializeObject <HttpTunnelRequestModel>(
                    Encoding.UTF8.GetString(payload));
                processor = new HttpRequestProcessor(this, deviceId, moduleId,
                                                     requestId, request, null);
                if (request.Chunks != 0)
                {
                    if (!_requests.TryAdd(requestId, processor))
                    {
                        throw new InvalidOperationException(
                                  $"Adding request {requestId} failed.");
                    }

                    // Need more
                    return;
                }
                // Complete request
            }
            else if (_requests.TryGetValue(requestId, out processor))
            {
                if (!processor.AddChunk(messageId, payload))
                {
                    // Need more
                    return;
                }
                // Complete request
                _requests.TryRemove(requestId, out _);
            }
            else
            {
                // Timed out or expired
                _logger.Debug("Request from {deviceId} {moduleId} " +
                              "with id {requestId} timed out - give up.",
                              deviceId, moduleId, requestId);
                return;
            }

            // Complete request
            try {
                await processor.CompleteAsync();

                await Try.Async(() => checkpoint?.Invoke());
            }
            catch (Exception ex) {
                _logger.Error(ex,
                              "Failed to complete request from {deviceId} {moduleId} " +
                              "with id {requestId} - giving up.",
                              deviceId, moduleId, requestId);
            }
        }
        /// <inheritdoc/>
        public async Task <bool> HandleEventAsync(string deviceId, string moduleId,
                                                  byte[] payload, IDictionary <string, string> properties)
        {
            if (!properties.TryGetValue("content-type", out var type) &&
                !properties.TryGetValue("iothub-content-type", out type))
            {
                _logger.Error(
                    "Missing content type in tunnel event from {deviceId} {moduleId}.",
                    deviceId, moduleId);
                return(true);
            }

            // Get message id and correlation id from content type
            var typeParsed = type.Split("_", StringSplitOptions.RemoveEmptyEntries);

            if (typeParsed.Length != 2 ||
                !int.TryParse(typeParsed[1], out var messageId))
            {
                _logger.Error("Bad content type {contentType} in tunnel event" +
                              " from {deviceId} {moduleId}.", type, deviceId, moduleId);
                return(true);
            }
            var requestId = typeParsed[0];

            HttpRequestProcessor processor;

            if (messageId == 0)
            {
                try {
                    var chunk0 = DeserializeRequest0(payload, out var request, out var chunks);
                    processor = new HttpRequestProcessor(this, deviceId, moduleId,
                                                         requestId, request, chunks, chunk0, null);
                    if (chunks != 0)   // More to follow?
                    {
                        if (!_requests.TryAdd(requestId, processor))
                        {
                            throw new InvalidOperationException(
                                      $"Adding request {requestId} failed.");
                        }
                        // Need more
                        return(false);
                    }
                }
                catch (Exception ex) {
                    _logger.Error(ex, "Failed to parse tunnel request from {deviceId} " +
                                  "{moduleId} with id {requestId} - giving up.",
                                  deviceId, moduleId, requestId);
                    return(true);
                }
                // Complete request
            }
            else if (_requests.TryGetValue(requestId, out processor))
            {
                if (!processor.AddChunk(messageId, payload))
                {
                    // Need more
                    return(false);
                }
                // Complete request
                _requests.TryRemove(requestId, out _);
            }
            else
            {
                // Timed out or expired
                _logger.Debug("Request from {deviceId} {moduleId} " +
                              "with id {requestId} timed out - give up.",
                              deviceId, moduleId, requestId);
                return(true);
            }

            // Complete request
            try {
                await processor.CompleteAsync();
            }
            catch (Exception ex) {
                _logger.Error(ex,
                              "Failed to complete request from {deviceId} {moduleId} " +
                              "with id {requestId} - giving up.",
                              deviceId, moduleId, requestId);
            }
            return(true);
        }
        public void Start(string ip, UInt16 port, uint readBufferSize, uint timeout, X509Certificate2 certificate, HttpRequestProcessor httpRequestHandler, ResponseMaker internalServerError, LogManager logger)
        {
            if (ConnectionAcceptor == null)
            {
                ConnectionAcceptor = new TcpListener(IPAddress.Parse(ip), port);
            }

            if (Sessions == null)
            {
                Sessions = new ConcurrentDictionary <ulong, Session>();
            }

            this.ReadBufferSize         = readBufferSize;
            this.Timeout                = timeout;
            this.HttpRequestHandler     = httpRequestHandler;
            this.GetInternalServerError = internalServerError;
            this.Certificate            = certificate;
            this.Logger = logger;

            ConnectionAcceptor.Start();
            ConnectionAcceptor.BeginAcceptTcpClient(new AsyncCallback(OnAccept), this.ConnectionAcceptor);
        }
 public void Start(string ip, UInt16 port, uint readBufferSize, uint timeout, HttpRequestProcessor httpRequestHandler, ResponseMaker internalServerError, LogManager logger)
 {
     this.Start(ip, port, readBufferSize, timeout, null, httpRequestHandler, internalServerError, logger);
 }