Esempio n. 1
0
 public DeltaHandler(RequestHandler other, DeltaSnapshot deltaSnapshot, string deltaToken)
     : base(other, HttpMethod.GET, deltaSnapshot.QueryUri)
 {
     DeltaToken = deltaToken;
     DeltaSnapshot = deltaSnapshot.Clone();
     DeltaItems = new List<ODataItem>();
 }
Esempio n. 2
0
 public DeltaHandler(RequestHandler other, DeltaSnapshot deltaSnapshot, string deltaToken)
     : base(other, HttpMethod.GET, deltaSnapshot.QueryUri)
 {
     DeltaToken    = deltaToken;
     DeltaSnapshot = deltaSnapshot.Clone();
     DeltaItems    = new List <ODataItem>();
 }
Esempio n. 3
0
        protected override RequestHandler DispatchHandler()
        {
            // TODO: Remove the following if to use Delta framework
            if (RequestUri.Segments.Length > 0)
            {
                int    length  = RequestUri.Segments.Length;
                string segment = RequestUri.Segments[length - 1];
                string decoded = HttpUtility.UrlDecode(segment);
                if (decoded == "$delta")
                {
                    return(new DeltaLinkHandler(this));
                }
                else if (decoded == ServiceConstants.ServicePath_Async)
                {
                    return(new StatusMonitorRequestHandler(this));
                }
            }

            if (this.QueryContext.DeltaToken != null)
            {
                DeltaSnapshot deltaSnapshot = DeltaContext.GetDeltaQueryByDeltaToken(this.QueryContext.DeltaToken);
                return(new DeltaHandler(this, deltaSnapshot, this.QueryContext.DeltaToken));
            }
            if (this.QueryContext.QueryPath.FirstSegment == null)
            {
                // ServiceDocument request
                return(new ServiceDocumentHandler(this));
            }
            if (this.QueryContext.QueryPath.FirstSegment is MetadataSegment)
            {
                // $metadata request
                return(new MetadataDocumentHandler(this));
            }
            if (this.QueryContext.QueryPath.LastSegment is OperationSegment || this.QueryContext.QueryPath.LastSegment is OperationImportSegment)
            {
                return(new OperationHandler(this, HttpMethod.GET));
            }
            if (this.QueryContext.QueryPath.LastSegment is ValueSegment && this.QueryContext.Target.TypeKind == EdmTypeKind.Primitive)
            {
                var primitive = this.QueryContext.Target.Type as IEdmPrimitiveType;
                if (primitive != null && primitive.PrimitiveKind == EdmPrimitiveTypeKind.Stream)
                {
                    return(new MediaStreamHandler(this, this.HttpMethod));
                }
            }

            return(null);
        }