Esempio n. 1
0
 public TaskEndPointHandler(ITaskRetriever taskRetriever, ITaskListRetriever taskListRetriever, IAmACommandProcessor commandProcessor, ICommunicationContext communicationContext)
 {
     this.taskRetriever = taskRetriever;
     this.taskListRetriever = taskListRetriever;
     this.commandProcessor = commandProcessor;
     this.communicationContext = communicationContext;
 }
        public override void ProcessRequest(ICommunicationContext ctx)
        {
            var serviceName = GetServiceName(ctx);
            var instanceId = GetInstanceID(ctx);
            var bookmark = GetBookmark(ctx);
            var postDataListID = GetDataListID(ctx);
            var workspaceID = GetWorkspaceID(ctx);

            var requestTO = new WebRequestTO();
            var xml = GetPostData(ctx, postDataListID);

            if(!String.IsNullOrEmpty(xml))
            {
                requestTO.RawRequestPayload = xml;
            }

            requestTO.ServiceName = serviceName;
            requestTO.InstanceID = instanceId;
            requestTO.Bookmark = bookmark;
            requestTO.WebServerUrl = ctx.Request.Uri.ToString();
            requestTO.Dev2WebServer = String.Format("{0}://{1}", ctx.Request.Uri.Scheme, ctx.Request.Uri.Authority);


            // Execute in its own thread to give proper context ;)
            Thread.CurrentPrincipal = ctx.Request.User;

            var responseWriter = CreateForm(requestTO, serviceName, workspaceID, ctx.FetchHeaders(), PublicFormats, ctx.Request.User);
            ctx.Send(responseWriter);

        }
    ICodec ResolveCodec(ICommunicationContext context)
    {
      var codecInstance = context.Response.Entity.Codec;
      if (codecInstance != null)
      {
        Log.WriteDebug("Codec instance with type {0} has already been defined.",
          codecInstance.GetType().Name);
      }
      else
      {
        context.Response.Entity.Codec =
          codecInstance =
            DependencyManager.GetService(context.PipelineData.ResponseCodec.CodecType) as ICodec;
      }
      if (codecInstance == null)
        throw new CodecNotFoundException(
          $"Codec {context.PipelineData.ResponseCodec.CodecType} couldn't be initialized.");

      Log.WriteDebug("Codec {0} selected.", codecInstance.GetType().Name);

      if (context.PipelineData.ResponseCodec?.Configuration != null)
        codecInstance.Configuration = context.PipelineData.ResponseCodec.Configuration;

      return codecInstance;
    }
Esempio n. 4
0
 public void SetupCommunicationContext(ICommunicationContext context)
 {
   Log.WriteDebug("Adding communication context data");
   Resolver.AddDependencyInstance<ICommunicationContext>(context, DependencyLifetime.PerRequest);
   Resolver.AddDependencyInstance<IRequest>(context.Request, DependencyLifetime.PerRequest);
   Resolver.AddDependencyInstance<IResponse>(context.Response, DependencyLifetime.PerRequest);
 }
    async Task<PipelineContinuation> WriteResponseBuffered(ICommunicationContext context)
    {
      if (context.Response.Entity.Instance == null)
      {
        Log.WriteDebug("There was no response entity, not rendering.");
        await SendEmptyResponse(context);
        return PipelineContinuation.Continue;
      }

      var codecInstance = ResolveCodec(context);
      var writer = CreateWriter(codecInstance);
      using (Log.Operation(this, "Generating response entity."))
      {
        await writer(
          context.Response.Entity.Instance,
          context.Response.Entity,
          context.Request.CodecParameters.ToArray());
        await PadErrorMessageForIE(context);

        if (context.Response.Entity.Stream.CanSeek)
          context.Response.Entity.ContentLength = context.Response.Entity.Stream.Length;
      }

      return PipelineContinuation.Continue;
    }
 public override PipelineContinuation ExecuteBefore(ICommunicationContext context)
 {
     if ((InRoles == null || InRoles.Length == 0) && (Users == null || Users.Length == 0))
         return PipelineContinuation.Continue;
     if (base.ExecuteBefore(context) == PipelineContinuation.Continue)
     {
         try
         {
             if (InRoles != null)
                 foreach (string role in InRoles)
                     if (context.User.IsInRole(role))
                         return PipelineContinuation.Continue;
             if (Users != null)
                 foreach (string user in Users)
                     if (context.User.Identity.Name == user)
                         return PipelineContinuation.Continue;
         }
         catch
         {
             // todo: decide where to log this error.
         }
     }
     context.OperationResult = new OperationResult.Unauthorized();
     return PipelineContinuation.RenderNow;
 }
        public PipelineContinuation StripResponseElement(ICommunicationContext context)
        {
            var passedApiUrl
                = (string)context.PipelineData["ApiUrl"];

            if (string.IsNullOrEmpty(passedApiUrl))
                return PipelineContinuation.Continue;

            var xmlDocument
                = (XmlDocument)context.PipelineData["ApiXmlResponse"];

            // read and remove response header to get result
            var responseElement = xmlDocument.SelectSingleNode("/response");
            var responseStatusAttribute = responseElement.Attributes["status"];

            var innerXml = responseElement.InnerXml;
            var stringReader = new StringReader(innerXml);

            // get the type
            Type generatedType = responseStatusAttribute.InnerText == "ok"
                                 	? _typeGenerator.GenerateType(passedApiUrl)
                                 	: typeof(Error);

            var serializer = new XmlSerializer(generatedType);
            object deserialized = serializer.Deserialize(stringReader);

            if (responseStatusAttribute.InnerText == "ok")
                context.OperationResult = new OperationResult.OK(deserialized);
            else
                context.OperationResult = new OperationResult.BadRequest { ResponseResource = deserialized };

            return PipelineContinuation.Continue;
        }
        static string GenerateEtag(ICommunicationContext context, string partialEtag)
        {
            // we should only include components for the headers present in the Vary header
            // can't do it now as Vary is not set by OR, bug to fix in 2.1

            return Etag.StrongEtag(partialEtag);
        }
        PipelineContinuation PostExecution(ICommunicationContext context)
        {
            if (context.OperationResult.ResponseResource == null)
                return PipelineContinuation.Continue;

            var registration = _config.ResourceRegistrations.SingleOrDefault(_ => _.ResourceKey == context.PipelineData.ResourceKey);
            if (registration == null || registration.Properties.ContainsKey(Keys.LAST_MODIFIED) == false)
                return PipelineContinuation.Continue;
            var now = ServerClock.UtcNow();
            var mapper = (Func<object, DateTimeOffset?>)registration.Properties[Keys.LAST_MODIFIED];
            var lastModified = mapper(context.OperationResult.ResponseResource);

            if (lastModified > now)
                lastModified = now;
            var ifModifiedSinceHeader = context.Request.Headers["if-modified-since"];
            if (NoIncompatiblePreconditions(context) &&
                ifModifiedSinceHeader != null)
            {
                DateTimeOffset modifiedSince;
                var validIfModifiedSince = DateTimeOffset.TryParse(
                    ifModifiedSinceHeader,
                    out modifiedSince);
                if (!validIfModifiedSince)
                    _log.WriteWarning("Invalid If-Modified-Since value, not RFC1123 compliant: {0}", ifModifiedSinceHeader);
                else if (lastModified <= modifiedSince)
                    context.PipelineData[Keys.REWRITE_TO_304] = true;
            }

            if (lastModified != null)
                WriteLastModifiedHeader(context, lastModified);
            return PipelineContinuation.Continue;
        }
Esempio n. 10
0
        public override void ProcessRequest(ICommunicationContext ctx)
        {
            var postDataListID = GetDataListID(ctx);
            if(postDataListID != null)
            {
                new WebPostRequestHandler().ProcessRequest(ctx);
                return;
            }

            var serviceName = GetServiceName(ctx);
            var workspaceID = GetWorkspaceID(ctx);

            var requestTO = new WebRequestTO { ServiceName = serviceName, WebServerUrl = ctx.Request.Uri.ToString(), Dev2WebServer = String.Format("{0}://{1}", ctx.Request.Uri.Scheme, ctx.Request.Uri.Authority) };
            var data = GetPostData(ctx);

            if(!String.IsNullOrEmpty(data))
            {
                requestTO.RawRequestPayload = data;
            }
            var variables = ctx.Request.BoundVariables;
            if(variables != null)
            {
                foreach(string key in variables)
                {
                    requestTO.Variables.Add(key, variables[key]);
                }
            }
            // Execute in its own thread to give proper context ;)
            Thread.CurrentPrincipal = ctx.Request.User;

            var responseWriter = CreateForm(requestTO, serviceName, workspaceID, ctx.FetchHeaders());
            ctx.Send(responseWriter);
        }
        public PipelineContinuation FindResponseCodec(ICommunicationContext context)
        {
            if (context.Response.Entity.Instance == null || context.PipelineData.ResponseCodec != null)
            {
                LogNoResponseEntity();
                return PipelineContinuation.Continue;
            }

            string acceptHeader = context.Request.Headers[HEADER_ACCEPT];

            IEnumerable<MediaType> acceptedContentTypes =
                MediaType.Parse(string.IsNullOrEmpty(acceptHeader) ? "*/*" : acceptHeader);
            IType responseEntityType = _typeSystem.FromInstance(context.Response.Entity.Instance);

            IEnumerable<CodecRegistration> sortedCodecs = _codecs.FindMediaTypeWriter(responseEntityType,
                                                                                      acceptedContentTypes);
            int codecsCount = sortedCodecs.Count();
            CodecRegistration negotiatedCodec = sortedCodecs.FirstOrDefault();

            if (negotiatedCodec != null)
            {
                LogCodecSelected(responseEntityType, negotiatedCodec, codecsCount);
                context.Response.Entity.ContentType = negotiatedCodec.MediaType.WithoutQuality();
                context.PipelineData.ResponseCodec = negotiatedCodec;
            }
            else
            {
                context.OperationResult = ResponseEntityHasNoCodec(acceptHeader, responseEntityType);
                return PipelineContinuation.RenderNow;
            }
            return PipelineContinuation.Continue;
        }
Esempio n. 12
0
 public PageHandler(IPageRepository pageRepository, ICommunicationContext context, IUriResolver uriResolver, IMarkdown markdown)
 {
     this.pageRepository = pageRepository;
     this.context = context;
     this.uriResolver = uriResolver;
     this.markdown = markdown;
 }
Esempio n. 13
0
            protected override void OnExecute(ICommunicationContext context)
            {
                context.Request.Entity.Errors.AddRange(this.Errors);
                context.Response.Entity.Errors.AddRange(context.Request.Entity.Errors);

                base.OnExecute(context);
            }
        private PipelineContinuation ResolveResource(ICommunicationContext context)
        {
            if (context.PipelineData.SelectedResource == null)
            {
                var uriToMath = context.GetRequestUriRelativeToRoot();
                var uriMatch = this.uriRepository.Match(uriToMath);
                
                if (uriMatch != null)
                {
                    context.PipelineData.SelectedResource = uriMatch;
                    context.PipelineData.ResourceKey = uriMatch.ResourceKey;
                    context.Request.UriName = uriMatch.UriName;
                }
                else
                {
                    context.OperationResult = this.CreateNotFound(context);
                    
                    return PipelineContinuation.RenderNow;
                }
            }
            else
            {
                this.Log.WriteInfo(
                    "Not resolving any resource as a resource with key {0} has already been selected.".With(
                        context.PipelineData.SelectedResource.ResourceKey));
            }

            return PipelineContinuation.Continue;
        }
        private PipelineContinuation InitializeContainer(ICommunicationContext arg)
        {
            var container = new TinyIoCAdapter(new TinyIoCContainer());
            //HACK! For now dependencies may need to be in both containers to allow resolution
            container.Register<IHandleRequests<AddTaskCommand>, AddTaskCommandHandler>().AsMultiInstance();
            container.Register<ITaskListRetriever, TaskListRetriever>().AsMultiInstance();
            container.Register<ITasksDAO, TasksDAO>().AsMultiInstance();
            var logger = LogManager.GetLogger("TaskList");
            container.Register<ILog, ILog>(logger);
            container.Register<IAmARequestContextFactory, InMemoryRequestContextFactory>().AsMultiInstance();
            MessageStoreFactory.InstallRavenDbMessageStore(container);
            container.Register<IAmAMessageStore<Message>, RavenMessageStore>().AsSingleton();
            container.Register<IAmAMessagingGateway, RMQMessagingGateway>().AsSingleton();
            container.Register<Policy>(CommandProcessor.RETRYPOLICY, GetRetryPolicy());
            container.Register<Policy>(CommandProcessor.CIRCUITBREAKER, GetCircuitBreakerPolicy());

            var commandProcessor = new CommandProcessorFactory(container).Create();
            container.Register<IAmACommandProcessor, IAmACommandProcessor>(commandProcessor);

            resolver.AddDependencyInstance<IAdaptAnInversionOfControlContainer>(container, DependencyLifetime.Singleton);
            resolver.AddDependencyInstance<IAmARequestContextFactory>(new InMemoryRequestContextFactory(), DependencyLifetime.PerRequest);
            resolver.AddDependencyInstance<IAmACommandProcessor>(commandProcessor, DependencyLifetime.Singleton);
            resolver.AddDependency<ITaskRetriever, TaskRetriever>(DependencyLifetime.Singleton);
            resolver.AddDependency<ITaskListRetriever, TaskListRetriever>(DependencyLifetime.Singleton);


            return PipelineContinuation.Continue;
        }
Esempio n. 16
0
    public static Control BuildIssueQueryTemplate(this IMasonBuilderContext masonContext, ICommunicationContext communicationContext)
    {
      string issueQueryUrl = communicationContext.ApplicationBaseUri.AbsoluteUri + "/" + UrlPaths.IssueQuery;
      Control issueQueryTemplate = masonContext.NewLinkTemplate(RelTypes.IssueQuery, issueQueryUrl, "Search for issues", "This is a simple search that do not check attachments.");
      if (!masonContext.PreferMinimalResponse)
      {
        issueQueryTemplate.schema = new
        {
          properties = new
          {
            text = new
            {
              description = "Substring search for text in title and description",
              type = "string"
            },
            severity = new
            {
              description = "Issue severity (exact value, 1..5)",
              type = "string"
            },
            pid = new
            {
              description = "Project ID",
              type = "string"
            }
          }
        };
        // FIXME - schema
        //issueQueryTemplate.AddHrefTemplateParameter(new HrefTemplateParameter("text", description: "Substring search for text in title and description"));
        //issueQueryTemplate.AddHrefTemplateParameter(new HrefTemplateParameter("severity", description: "Issue severity (exact value, 1..5)"));
        //issueQueryTemplate.AddHrefTemplateParameter(new HrefTemplateParameter("pid", description: "Project ID"));
      }

      return issueQueryTemplate;
    }
        public PipelineContinuation ProcessDecorators(ICommunicationContext context)
        {
            Uri currentUri = context.Request.Uri;
            IList<DecoratorPointer> decorators = CreateDecorators();

            /* Whenever we execute the decorators, each decorator gets a say in matching a url.
             * Whenever a decorator fails, it is ignored.
             * Whenever a decorator succeeds, it is marked as such so that its Apply() method gets called
             * Whenever a decorator that succeeded has changed the url, we reprocess all the decorators that failed before with the new url.
             * */
            for (int i = 0; i < decorators.Count; i++)
            {
                DecoratorPointer decorator = decorators[i];
                Uri processedUri;
                if (!decorator.Successful
                    && decorator.Decorator.Parse(currentUri, out processedUri))
                {
                    decorator.Successful = true;
                    if (currentUri != processedUri && processedUri != null)
                    {
                        currentUri = processedUri;
                        i = -1;
                        continue;
                    }
                }
            }
            foreach (var decorator in decorators)
            {
                if (decorator.Successful)
                    decorator.Decorator.Apply();
            }

            context.Request.Uri = currentUri;
            return PipelineContinuation.Continue;
        }
 public WebFormsDefaultHandler(ICommunicationContext context, ITypeSystem typeSystem, IDependencyResolver resolver)
 {
     _context = context;
     _typeSystem = typeSystem;
     _resolver = resolver;
     _pageType = typeSystem.FromClr<Page>();
 }
        public PipelineContinuation ExecuteBefore(ICommunicationContext context)
        {
            if ((this.InRoles == null || this.InRoles.Length == 0) && (this.Users == null || this.Users.Length == 0))
            {
                return PipelineContinuation.Continue;
            }

            if (this.ExecuteBefore(context) == PipelineContinuation.Continue)
            {
                if (this.InRoles != null)
                {
                    if (this.InRoles.Any(role => context.User.IsInRole(role)))
                    {
                        return PipelineContinuation.Continue;
                    }
                }

                if (this.Users != null)
                {
                    if (this.Users.Any(user => context.User.Identity.Name == user))
                    {
                        return PipelineContinuation.Continue;
                    }
                }
            }

            context.OperationResult = new OperationResult.Unauthorized();
            
            return PipelineContinuation.RenderNow;
        }
        public void Execute(ICommunicationContext context)
        {
            context.Response.StatusCode = StatusCode;
            if (RedirectLocation != null)
                context.Response.Headers["Location"] = RedirectLocation.AbsoluteUri;

            OnExecute(context);
        }
 public override async Task Invoke(ICommunicationContext env)
 {
   env.PipelineData.PipelineStage.CurrentState
     = await Contributor(env);
   if (env.PipelineData.PipelineStage.CurrentState == PipelineContinuation.Abort)
     throw new PipelineAbortedException();
   await Next.Invoke(env);
 }
 private PipelineContinuation WriteBookmark(
     ICommunicationContext arg)
 {
     var uri = Database.Documents.CreateUri();
     arg.Response.Headers["Link"] += @", <" + uri + ">;" +
                                  "rel=\"http:/rels.openwrap.org/OpenDoc/index\"";
     return PipelineContinuation.Continue;
 }
        public void SetUp()
        {
            _communicationContext = MockRepository.GenerateStub<ICommunicationContext>();
            _communicationContext.Stub(x => x.Request).Return(MockRepository.GenerateStub<IRequest>());

            _authenticationScheme = MockRepository.GenerateStub<IAuthenticationScheme>();
            _operation = MockRepository.GenerateStub<IOperation>();
        }
 bool ShouldProcessConditional(ICommunicationContext context)
 {
     return context.Response.StatusCode == 200 &&
            !context.Request.Headers.ContainsKey(HttpHeaders.IF_RANGE) &&
            (context.Request.HttpMethod == "GET" ||
             context.Request.HttpMethod == "HEAD") &&
            !InvalidHeaderConbination(context);
 }
 public async Task Invoke(ICommunicationContext env)
 {
   await InvokeSafe(_requestPipeline,env);
   await InvokeSafe(_responsePipeline, env);
   if (env.PipelineData.PipelineStage.CurrentState == PipelineContinuation.Abort)
     await _catastrophicFail.Invoke(env);
   await _cleanup.Invoke(env);
 }
        PipelineContinuation WrapOperations(ICommunicationContext context)
        {
            context.PipelineData.Operations = from op in context.PipelineData.Operations
                                              let interceptors = _resolver.Resolve<IOperationInterceptorProvider>().GetInterceptors(op)
                                              select (IOperation)new OperationWithInterceptors(op, interceptors);

            return PipelineContinuation.Continue;
        }
        void GZipReponseEntity(ICommunicationContext context)
        {
            var compressedStream = new GZippedStream(context.Response.Entity.Stream);
            context.Response.Entity.Stream = compressedStream;

            context.Response.Headers.Add("Content-Encoding", "gzip");
            context.Response.Headers.Add("Vary", "Accept-Encoding");
        }
        public PipelineContinuation InitializeSession(ICommunicationContext context)
        {
            var session = _sessionFactory.OpenSession();

            _resolver.AddDependencyInstance<ISession>(session, DependencyLifetime.PerRequest);

            return PipelineContinuation.Continue;
        }
        public PipelineContinuation ResolveSession(ICommunicationContext context)
        {
            var session = _resolver.Resolve<ISession>();

            session.Dispose();

            return PipelineContinuation.Continue;
        }
        public PipelineContinuation Close(ICommunicationContext context)
        {
            if (context.Request.Uri.ToString().Contains("favicon")) return PipelineContinuation.Continue;

            var repository = context.PipelineData[ContextKeys.Repository] as IRepository;
            if (repository != null) repository.Dispose();
            return PipelineContinuation.Continue;
        }
Esempio n. 31
0
 public static string GetWebsite(this ICommunicationContext ctx) => ctx.Request.BoundVariables["website"];
Esempio n. 32
0
 public static string GetPath(this ICommunicationContext ctx) => ctx.Request.BoundVariables["path"];
Esempio n. 33
0
 public static string GetWorkspaceID(this ICommunicationContext ctx)
 {
     return(ctx.Request.QueryString["wid"]);
 }
Esempio n. 34
0
 void SendResponseHeaders(ICommunicationContext context)
 {
     Log.WriteDebug("Writing http headers.");
     context.Response.WriteHeaders();
 }
Esempio n. 35
0
 public PipelineContinuation Do(ICommunicationContext context)
 {
     WasCalled = true;
     return(PipelineContinuation.Continue);
 }
Esempio n. 36
0
 public static string GetDataListID(this ICommunicationContext ctx) => ctx.Request.QueryString[GlobalConstants.DLID];
Esempio n. 37
0
 public static string GetInstanceID(this ICommunicationContext ctx) => ctx.Request.BoundVariables["instanceid"];
Esempio n. 38
0
 protected virtual void FinishPipeline(ICommunicationContext context)
 {
     PipelineLog.WriteInfo("Pipeline finished.");
 }
Esempio n. 39
0
 public UriNameOperationFilter(ICommunicationContext commContext)
 {
     _commContext = commContext;
     Log          = NullLogger <OperationModelLogSource> .Instance;
 }
Esempio n. 40
0
 public void Run(ICommunicationContext context)
 {
     throw new NotImplementedException("Backward compatibility implementation, should never be called.");
 }
 static bool ShouldProcessConditional(ICommunicationContext context)
 {
     return(context.Response.StatusCode == 200 &&
            !context.Request.Headers.ContainsKey(CachingHttpHeaders.IfRange) &&
            (context.Request.HttpMethod == "HEAD" || context.Request.HttpMethod == "GET"));
 }
Esempio n. 42
0
 bool Is404NotMapped(ICommunicationContext context)
 {
     return(context.OperationResult is OperationResult.NotFound notFound &&
            notFound.Reason == NotFoundReason.NotMapped);
 }
Esempio n. 43
0
 bool ShouldSendEmptyResponseBody(ICommunicationContext context)
 {
     return(Is404NotMapped(context) == false);
 }
Esempio n. 44
0
 public static string GetMethodName(this ICommunicationContext ctx) => ctx.Request.BoundVariables["action"];
 public OperationContextErrorCollector(ICommunicationContext context)
 {
     _context = context;
 }
Esempio n. 46
0
 public TaskEndPointHandler(ITaskRetriever taskRetriever, ITaskListRetriever taskListRetriever, IAmACommandProcessor commandProcessor, ICommunicationContext communicationContext)
 {
     _taskRetriever        = taskRetriever;
     _taskListRetriever    = taskListRetriever;
     _commandProcessor     = commandProcessor;
     _communicationContext = communicationContext;
 }
Esempio n. 47
0
 public static string GetBookmark(this ICommunicationContext ctx) => ctx.Request.BoundVariables["bookmark"];
Esempio n. 48
0
 protected override ApplicationOctetStreamCodec CreateCodec(ICommunicationContext context)
 {
     return(new ApplicationOctetStreamCodec());
 }
Esempio n. 49
0
 public void Run(ICommunicationContext context)
 {
 }
Esempio n. 50
0
 PipelineContinuation DoNowt(ICommunicationContext arg)
 {
     return(PipelineContinuation.Continue);
 }
Esempio n. 51
0
 public Task Invoke(ICommunicationContext env)
 {
     return(LoggingInvoke(env));
 }
Esempio n. 52
0
 public TaskListRetriever(ICommunicationContext context, ITasksDAO tasksDAO)
     : this(context.ApplicationBaseUri.Host, tasksDAO)
 {
 }
Esempio n. 53
0
 public static PipelineContinuation Respond <T>(this ICommunicationContext env) where T : OperationResult, new()
 {
     env.OperationResult = new T();
     return(PipelineContinuation.RenderNow);
 }
Esempio n. 54
0
 public static PipelineContinuation Respond(this ICommunicationContext env, OperationResult result)
 {
     env.Response.Entity.Instance = result;
     return(PipelineContinuation.RenderNow);
 }
Esempio n. 55
0
 public void RunCallGraph(ICommunicationContext context, bool renderNow)
 {
 }
 Task SendEmptyResponse(ICommunicationContext context)
 {
     Log.WriteDebug("Writing http headers.");
     context.Response.WriteHeaders();
     return(context.Response.Entity.Stream.FlushAsync());
 }
Esempio n. 57
0
 static OperationResult.MethodNotAllowed CreateMethodNotAllowed(ICommunicationContext context)
 {
     return(new OperationResult.MethodNotAllowed(context.Request.Uri, context.Request.HttpMethod,
                                                 context.PipelineData.ResourceKey));
 }
Esempio n. 58
0
 public static string GetClassName(this ICommunicationContext ctx) => ctx.Request.BoundVariables["name"];
Esempio n. 59
0
 public PipelineContinuation DoNothing(ICommunicationContext c)
 {
     return(PipelineContinuation.Continue);
 }
Esempio n. 60
0
 public static string GetServiceName(this ICommunicationContext ctx) => ctx.Request.BoundVariables["servicename"];