示例#1
0
        // STREAMS
        private void PostEvents(HttpEntityManager manager, UriTemplateMatch match)
        {
            var stream = match.BoundVariables["stream"];

            if (stream.IsEmptyString())
            {
                SendBadRequest(manager, string.Format("Invalid request. Stream must be non-empty string"));
                return;
            }
            int expectedVersion;

            if (!GetExpectedVersion(manager, out expectedVersion))
            {
                SendBadRequest(manager, string.Format("{0} header in wrong format.", SystemHeaders.ExpectedVersion));
                return;
            }
            bool requireMaster;

            if (!GetRequireMaster(manager, out requireMaster))
            {
                SendBadRequest(manager, string.Format("{0} header in wrong format.", SystemHeaders.RequireMaster));
                return;
            }
            if (!requireMaster && _httpForwarder.ForwardRequest(manager))
            {
                return;
            }
            PostEntry(manager, expectedVersion, requireMaster, stream);
        }
示例#2
0
        // STREAMS
        private void PostEvents(HttpEntityManager manager, UriTemplateMatch match)
        {
            var stream = match.BoundVariables["stream"];

            if (stream.IsEmptyString())
            {
                SendBadRequest(manager, string.Format("Invalid request. Stream must be non-empty string"));
                return;
            }
            string includedType;

            if (!GetIncludedType(manager, out includedType))
            {
                SendBadRequest(manager, string.Format("{0} header in wrong format.", SystemHeaders.EventType));
                return;
            }
            if (!manager.RequestCodec.HasEventTypes && includedType == null)
            {
                SendBadRequest(manager, "Must include an event type with the request either in body or as ES-EventType header.");
                return;
            }
            Guid includedId;

            if (!GetIncludedId(manager, out includedId))
            {
                SendBadRequest(manager, string.Format("{0} header in wrong format.", SystemHeaders.EventId));
                return;
            }
            if (!manager.RequestCodec.HasEventIds && includedId == Guid.Empty)
            {
                var uri    = new Uri(new Uri(match.RequestUri + "/"), "incoming/" + Guid.NewGuid()).ToString();
                var header = new[]
                { new KeyValuePair <string, string>("Location", uri) };
                manager.ReplyTextContent("Forwarding to idempotent URI", HttpStatusCode.RedirectKeepVerb, "Temporary Redirect", "text/plain", header, e => { });
                return;
            }
            int expectedVersion;

            if (!GetExpectedVersion(manager, out expectedVersion))
            {
                SendBadRequest(manager, string.Format("{0} header in wrong format.", SystemHeaders.ExpectedVersion));
                return;
            }
            bool requireMaster;

            if (!GetRequireMaster(manager, out requireMaster))
            {
                SendBadRequest(manager, string.Format("{0} header in wrong format.", SystemHeaders.RequireMaster));
                return;
            }
            if (!requireMaster && _httpForwarder.ForwardRequest(manager))
            {
                return;
            }
            PostEntry(manager, expectedVersion, requireMaster, stream, includedId, includedType);
        }
示例#3
0
        private void OnProjections(HttpEntityManager http, UriTemplateMatch match)
        {
            if (_httpForwarder.ForwardRequest(http))
            {
                return;
            }

            http.ReplyTextContent(
                "Moved", 302, "Found", "text/plain",
                new[]
            {
                new KeyValuePair <string, string>(
                    "Location", new Uri(match.BaseUri, "/web/projections.htm").AbsoluteUri)
            }, x => Log.DebugException(x, "Reply Text Content Failed."));
        }