Example #1
0
 PipelineContinuation ResolveResource(ICommunicationContext context)
 {
     if (context.PipelineData.SelectedResource == null)
     {
         var uriToMath = context.GetRequestUriRelativeToRoot();
         var uriMatch  = _uriRepository.Match(uriToMath);
         if (uriMatch != null)
         {
             context.PipelineData.SelectedResource = uriMatch;
             context.PipelineData.ResourceKey      = uriMatch.ResourceKey;
             context.Request.UriName = uriMatch.UriName;
         }
         else
         {
             context.OperationResult = CreateNotFound(context);
             return(PipelineContinuation.RenderNow);
         }
     }
     else
     {
         Log.WriteInfo(
             "Not resolving any resource as a resource with key {0} has already been selected.".With(
                 context.PipelineData.SelectedResource.ResourceKey));
     }
     return(PipelineContinuation.Continue);
 }
        public bool Parse(Uri uri, out Uri processedUri)
        {
            processedUri = null;

            var appBaseUri  = _context.ApplicationBaseUri.EnsureHasTrailingSlash();
            var fakeBaseUri = new Uri("http://localhost/", UriKind.Absolute);

            var uriRelativeToAppBase = appBaseUri
                                       .MakeRelativeUri(uri)
                                       .MakeAbsolute(fakeBaseUri);
            // find the resource type for the uri
            string lastUriSegment = uriRelativeToAppBase.Segments[uriRelativeToAppBase.Segments.Length - 1];

            int lastDot = lastUriSegment.LastIndexOf(".");

            if (lastDot == -1)
            {
                return(false);
            }

            var uriWithoutExtension = ChangePath(uriRelativeToAppBase,
                                                 srcUri =>
                                                 srcUri.AbsolutePath.Substring(0, srcUri.AbsolutePath.LastIndexOf(".")));

            _resourceMatch = _uris.Match(uriWithoutExtension);
            if (_resourceMatch == null)
            {
                return(false);
            }

            string potentialExtension = lastUriSegment.Substring(lastDot + 1);

// _codecs.
            _selectedCodec = _codecs.FindByExtension(_resourceMatch.ResourceKey as IType, potentialExtension);

            if (_selectedCodec == null)
            {
                return(false);
            }

            processedUri = fakeBaseUri.MakeRelativeUri(uriWithoutExtension)
                           .MakeAbsolute(appBaseUri);

// TODO: Ensure that if the Accept: is not compatible with the overriden value a 406 is returned.
            return(true);
        }
 public void ParseStringUriTemplates()
 {
     var match = uriResolver.Match(ExpectedUri);
 }
 public UriRegistration Match(Uri uriToMatch)
 {
     return(_inner.Match(uriToMatch));
 }