/// <summary>Returns the <see cref="IResolveEventStreamContext"/> typed as an <see cref="IResolveEventStreamContext{TSource}"/></summary>
        /// <exception cref="ArgumentException">Thrown if the <see cref="IResolveEventStreamContext.Source"/> property cannot be cast to the specified type</exception>
        public static IResolveEventStreamContext <T> As <T>(this IResolveEventStreamContext context)
        {
            if (context is IResolveEventStreamContext <T> typedContext)
            {
                return(typedContext);
            }

            return(new ResolveEventStreamContext <T>(context));
        }
예제 #2
0
        public IObservable <object> Subscribe(IResolveEventStreamContext context)
        {
            var result = base.Resolve(context);

            if (result is Task <object> )
            {
                result = (result as Task <object>).Result;
            }
            return((IObservable <object>)result);
        }
예제 #3
0
        private IObservable <OrderEvent> Subscribe(IResolveEventStreamContext context)
        {
            IList <OrderStatuses> statusList = context.GetArgument <IList <OrderStatuses> >("statuses",
                                                                                            new List <OrderStatuses>());

            if (statusList.Count <= 0)
            {
                return(_events.EventStream());
            }
            OrderStatuses statuses = statusList.Aggregate <OrderStatuses, OrderStatuses>(0, (current, status) => current | status);

            return(_events.EventStream().Where(e => (e.Status & statuses) == e.Status));
        }
예제 #4
0
        private IObservable <Message> Subscribe(IResolveEventStreamContext context)
        {
            var messageContext = (MessageHandlingContext)context.UserContext;
            var user           = messageContext.Get <ClaimsPrincipal>("user");

            string sub = "Anonymous";

            if (user != null)
            {
                sub = user.Claims.FirstOrDefault(c => c.Type == "sub")?.Value;
            }

            return(_chat.Messages(sub));
        }
예제 #5
0
        private IObservable <Message> SubscribeById(IResolveEventStreamContext context)
        {
            var messageContext = (MessageHandlingContext)context.UserContext;
            var user           = messageContext.Get <ClaimsPrincipal>("user");

            string sub = "Anonymous";

            if (user != null)
            {
                sub = user.Claims.FirstOrDefault(c => c.Type == "sub")?.Value;
            }

            var messages = _chat.Messages(sub);

            string id = context.GetArgument <string>("id");

            return(messages.Where(message => message.From.Id == id));
        }
예제 #6
0
        private IObservable <OrderEvent> Subscribe(IResolveEventStreamContext context)
        {
            var statusList = context.GetArgument <IList <OrderStatuses> >("statuses",
                                                                          new List <OrderStatuses>());

            if (statusList.Count > 0)
            {
                OrderStatuses statuses = 0;
                foreach (var status in statusList)
                {
                    statuses |= status;
                }
                return(_events.EventStream().Where(e => (e.Status & statuses) == e.Status));
            }
            else
            {
                return(_events.EventStream());
            }
        }
예제 #7
0
        private IObservable <MovieEvent> Subscribe(IResolveEventStreamContext context)
        {
            var ratingList = context.GetArgument <IList <MovieRating> >("movieRating", new List <MovieRating>());

            if (ratingList.Any())
            {
                MovieRating ratings = 0;
                foreach (var rating in ratingList)
                {
                    ratings = rating | rating;
                }

                return(_movieEventService.EventStream().Where(a => (a.MovieRating & ratings) == a.MovieRating));
            }
            else
            {
                return(_movieEventService.EventStream());
            }
        }
예제 #8
0
        private IObservable <MovieEvent> Subscripte(IResolveEventStreamContext arg)
        {
            var ratingList = arg.GetArgument <IList <MovieRating> >($"{nameof(MovieRating)}s", new List <MovieRating>());

            if (ratingList.Any())
            {
                MovieRating ratings = MovieRating.Unrated;

                foreach (var rating in ratingList)
                {
                    ratings = ratings | rating;
                }

                return(_eventService.EventStream().Where(e => (e.MovieRating & ratings) == e.MovieRating));
            }
            else
            {
                return(_eventService.EventStream());
            }
        }
예제 #9
0
        private IObservable <object> Subscribe(IResolveEventStreamContext context)
        {
            var messageHandlingContext = (MessageHandlingContext)context.UserContext;


            var tenantContext = messageHandlingContext.Get <ITenantContext>(Statics.TenantContext);

            var ckId = context.FieldDefinition.GetMetadata <string>(Statics.CkId);
            var rtId = context.GetArgument <OspObjectId?>(Statics.RtIdArg, null);

            var         updateTypeDtoList = context.GetArgument <ICollection <UpdateTypesDto> >(Statics.UpdateTypesArg);
            UpdateTypes updateType        = UpdateTypes.Undefined;

            foreach (var updateTypeDto in updateTypeDtoList)
            {
                updateType |= (UpdateTypes)updateTypeDto;
            }

            var updateStreamFilter = new UpdateStreamFilter
            {
                UpdateTypes = updateType,
                RtId        = rtId
            };

            var messages = tenantContext.Repository.SubscribeToRtEntities(ckId, updateStreamFilter, context.CancellationToken);

            var observable = messages.GetUpdates().Select(x => new DynamicUpdateMessageDto <RtEntityUpdateItemDto>
            {
                Items = new List <RtEntityUpdateItemDto>
                {
                    new RtEntityUpdateItemDto
                    {
                        UserContext = x.Document, UpdateState = (UpdateTypesDto)x.UpdateType
                    }
                }
            });

            return(observable);
        }
예제 #10
0
        public IObservable <T> Subscribe(IResolveEventStreamContext context)
        {
            Console.WriteLine($" User --------------------------- IsAuthenticated {_httpContextAccessor.HttpContext.User?.Identity?.IsAuthenticated}");

            if (_httpContextAccessor.HttpContext.User?.Identity == null || !_httpContextAccessor.HttpContext.User.Identity.IsAuthenticated)
            {
                context.Errors.Add(new ExecutionError($"Missing Bearer Token"));
                return(new List <T>().ToObservable());
            }

            string field       = context.GetArgument <string>("field");
            int    value       = context.GetArgument <int>("value");
            string stringValue = context.GetArgument <string>("string_value");

            IHandleMsg <T> service = (IHandleMsg <T>)_httpContextAccessor.HttpContext.RequestServices.GetService(typeof(IHandleMsg <T>));
            var            objs    = service.ObservableObj();

            if (!string.IsNullOrEmpty(field) && (value > 0 || !string.IsNullOrEmpty(stringValue)))
            {
                var pi = typeof(T).GetProperty(field);
                if (pi != null)
                {
                    if (!string.IsNullOrEmpty(stringValue))
                    {
                        return(objs.Where(x => (string)pi.GetValue(x) == stringValue));
                    }
                    return(objs.Where(x => (int)pi.GetValue(x) == value));
                }
                else
                {
                    context.Errors.Add(new ExecutionError($"Bad params"));
                    return(new List <T>().ToObservable());
                }
            }

            return(objs);
        }
예제 #11
0
        private IObservable <Human> Subscribe(IResolveEventStreamContext context)
        {
            List <Human> listOfHumans = new List <Human>();

            var task = _starWarsData.GetHumanByIdAsync("1");

            task.Wait();
            var result = task.Result;

            if (result != null)
            {
                listOfHumans.Add(task.Result);
            }

            task = _starWarsData.GetHumanByIdAsync("2");
            task.Wait();
            result = task.Result;
            if (result != null)
            {
                listOfHumans.Add(task.Result);
            }

            return(listOfHumans.ToObservable());
        }
예제 #12
0
 public ResolveEventStreamContext(IResolveEventStreamContext context) : base(context)
 {
 }
 private IObservable <RouteNetworkEditOperationOccuredEvent> SubscribeEvents(IResolveEventStreamContext context)
 {
     return(_toposTypedEventObserable.OnEvent);
 }
 private IObservable <Pizza> Subscribe(IResolveEventStreamContext context)
 {
     return(_eventsService.ListenPizzaChanges());
 }
 public Task <IObservable <T> > SubscribeAsync(IResolveEventStreamContext context)
 {
     return(_subscriber(context));
 }
예제 #16
0
 private IObservable <Message> Subscribe(IResolveEventStreamContext context)
 {
     return(_chat.Messages());
 }
 private IObservable <CustomerEvent> Subscribe(IResolveEventStreamContext context)
 {
     return(_events.EventStream());
 }
예제 #18
0
 private IObservable <Message> Subscibe(IResolveEventStreamContext context)
 {
     return(Data.AllMessages());
 }
예제 #19
0
        public IObservable <Message> SubscribeMessageAddedByUser(IResolveEventStreamContext context, string id)
        {
            var messages = SubscriptionSchemaWithReflection.Chat.Messages();

            return(messages.Where(message => message.From.Id == id));
        }
예제 #20
0
 private IObservable <OrderEvent> SubscribeClosed(IResolveEventStreamContext context)
 {
     return(_events.EventStream());
 }
예제 #21
0
 private IObservable <Order> Subscribe(IResolveEventStreamContext context)
 {
     return(ordersStore.GetOrderObservable());
 }
 IObservable <object> IEventStreamResolver.Subscribe(IResolveEventStreamContext context)
 {
     return((IObservable <object>)Subscribe(context));
 }
 public Task <IObservable <T?> > SubscribeAsync(IResolveEventStreamContext context) => _subscriber(context);
예제 #24
0
 public Task <IObservable <Message> > SubscribeMessageAddedAsync(IResolveEventStreamContext context)
 {
     return(SubscriptionSchemaWithReflection.Chat.MessagesAsync());
 }
예제 #25
0
 public IObservable <T?> Subscribe(IResolveEventStreamContext context) => _subscriber(context);
예제 #26
0
 private Task <IObservable <Message> > SubscribeAsync(IResolveEventStreamContext context)
 {
     return(_chat.MessagesAsync());
 }
예제 #27
0
 IObservable <object?> IEventStreamResolver.Subscribe(IResolveEventStreamContext context) => (IObservable <object?>)Subscribe(context);
예제 #28
0
 public IObservable <List <Message> > SubscribeMessageGetAll(IResolveEventStreamContext context)
 {
     return(SubscriptionSchemaWithReflection.Chat.MessagesGetAll());
 }
        async Task <IObservable <object?> > IAsyncEventStreamResolver.SubscribeAsync(IResolveEventStreamContext context)
        {
            var result = await SubscribeAsync(context).ConfigureAwait(false);

            return((IObservable <object?>)result);
        }
예제 #30
0
 private IObservable <Human> ThrowNotImplementedException(IResolveEventStreamContext context)
 {
     throw new NotImplementedException("This API purposely throws a NotImplementedException");
 }