Inheritance: RequestContext
Example #1
0
		public override bool TryReceiveRequest (TimeSpan timeout, out RequestContext context)
		{
			context = null;
			HttpContextInfo ctxi;
			if (!source.ListenerManager.TryDequeueRequest (source.ChannelDispatcher, timeout, out ctxi))
				return false;
			if (ctxi == null)
				return true; // returning true, yet context is null. This happens at closing phase.

			if (source.Source.AuthenticationScheme != AuthenticationSchemes.Anonymous) {
				if (security_token_authenticator != null)
					// FIXME: use return value?
					try {
						security_token_authenticator.ValidateToken (new UserNameSecurityToken (ctxi.User, ctxi.Password));
					} catch (Exception) {
						ctxi.ReturnUnauthorized ();
					}
				else {
					ctxi.ReturnUnauthorized ();
				}
			}

			Message msg = null;

			if (ctxi.Request.HttpMethod == "POST") {
				msg = CreatePostMessage (ctxi);
				if (msg == null)
					return false;
			} else if (ctxi.Request.HttpMethod == "GET")
				msg = Message.CreateMessage (MessageVersion.None, null); // HTTP GET-based request

			if (msg.Headers.To == null)
				msg.Headers.To = ctxi.Request.Url;
			msg.Properties.Add ("Via", LocalAddress.Uri);
			msg.Properties.Add (HttpRequestMessageProperty.Name, CreateRequestProperty (ctxi));

			context = new HttpRequestContext (this, ctxi, msg);
			reqctx = context;
			return true;
		}
Example #2
0
		public override bool TryReceiveRequest (TimeSpan timeout, out RequestContext context)
		{
			context = null;
			HttpContextInfo ctxi;
			if (!source.ListenerManager.TryDequeueRequest (source.ChannelDispatcher, timeout, out ctxi))
				return false;
			if (ctxi == null)
				return true; // returning true, yet context is null. This happens at closing phase.

			Message msg = null;

			if (ctxi.Request.HttpMethod == "POST") {
				msg = CreatePostMessage (ctxi);
				if (msg == null)
					return false;
			} else if (ctxi.Request.HttpMethod == "GET")
				msg = Message.CreateMessage (MessageVersion.None, null); // HTTP GET-based request

			if (msg.Headers.To == null)
				msg.Headers.To = ctxi.Request.Url;
			msg.Properties.Add ("Via", LocalAddress.Uri);
			msg.Properties.Add (HttpRequestMessageProperty.Name, CreateRequestProperty (ctxi));

			context = new HttpRequestContext (this, ctxi, msg);
			reqctx = context;
			return true;
		}