public async Task Handle(RegisterOrderIntegrationEvent result)
        {
            if (result.OrderId != Guid.Empty &&
                result.PictureUrl != null &&
                result.ImageData != null &&
                result.UserEmail != null)
            {
                SaveOrder(result);
                var client = DaprClient.CreateInvokeHttpClient(appId: "facesapi");
                Tuple <List <byte[]>, Guid> orderDetail = await GetFacesFromFacesAPIAsync(client, result.ImageData, result.OrderId);

                List <byte[]> faces   = orderDetail.Item1;
                Guid          orderId = orderDetail.Item2;
                SaveOrderDetails(orderId, faces);
                var processedOrder = new OrderProcessedIntegrationEvent
                {
                    OrderId    = result.OrderId,
                    Faces      = faces,
                    UserEmail  = result.UserEmail,
                    PictureUrl = result.PictureUrl
                };
                var bindingEvent = new BindingEvent();
                await _eventBus.PublishAsync <OrderProcessedIntegrationEvent>(processedOrder);

                await _binding.CreateBindingAsync <BindingEvent>(bindingEvent);
            }
        }
예제 #2
0
        private void FireScenarioEvents(BindingEvent bindingEvent)
        {
            var tags = (ObjectContainer.FeatureContext.FeatureInfo.Tags ?? emptyTagList).Concat(
                ObjectContainer.ScenarioContext.ScenarioInfo.Tags ?? emptyTagList);

            FireEvents(bindingEvent, tags);
        }
예제 #3
0
        private void CheckEventBindingMethod(BindingEvent bindingEvent, MethodInfo method)
        {
            if (!IsScenarioSpecificEvent(bindingEvent) &&
                !method.IsStatic)
            {
                throw errorProvider.GetNonStaticEventError(method);
            }

            //TODO: check parameters, etc.
        }
예제 #4
0
 private void FireEvents(BindingEvent bindingEvent, IEnumerable <string> tags)
 {
     foreach (EventBinding eventBinding in bindingRegistry.GetEvents(bindingEvent))
     {
         if (IsTagNeeded(eventBinding.Tags, tags))
         {
             eventBinding.InvokeAction(null, testTracer);
         }
     }
 }
예제 #5
0
 private bool IsScenarioSpecificEvent(BindingEvent bindingEvent)
 {
     return
         (bindingEvent == BindingEvent.ScenarioStart ||
          bindingEvent == BindingEvent.ScenarioEnd ||
          bindingEvent == BindingEvent.BlockStart ||
          bindingEvent == BindingEvent.BlockEnd ||
          bindingEvent == BindingEvent.StepStart ||
          bindingEvent == BindingEvent.StepEnd);
 }
예제 #6
0
        public List <IHookBinding> GetEvents(BindingEvent bindingEvent)
        {
            List <IHookBinding> list;

            if (!eventBindings.TryGetValue(bindingEvent, out list))
            {
                list = new List <IHookBinding>();
                eventBindings.Add(bindingEvent, list);
            }

            return(list);
        }
예제 #7
0
        private void FireEvents(BindingEvent bindingEvent)
        {
            var stepContext = contextManager.GetStepContext();

            foreach (IHookBinding eventBinding in bindingRegistry.GetEvents(bindingEvent))
            {
                int scopeMatches;
                if (eventBinding.IsScoped && !eventBinding.BindingScope.Match(stepContext, out scopeMatches))
                {
                    continue;
                }

                eventBinding.Invoke(contextManager, testTracer);
            }
        }
예제 #8
0
 internal HookAttribute(BindingEvent bindingEvent, string[] tags)
 {
     Event = bindingEvent;
     Tags = tags;
 }
예제 #9
0
 private void FireEvents(BindingEvent bindingEvent, IEnumerable<string> tags)
 {
     foreach (EventBinding eventBinding in bindingRegistry.GetEvents(bindingEvent))
     {
         if (IsTagNeeded(eventBinding.Tags, tags))
         {
             eventBinding.InvokeAction(null, testTracer);
         }
     }
 }
예제 #10
0
 private void FireScenarioEvents(BindingEvent bindingEvent)
 {
     var tags = (ObjectContainer.FeatureContext.FeatureInfo.Tags ?? emptyTagList).Concat(
         ObjectContainer.ScenarioContext.ScenarioInfo.Tags ?? emptyTagList);
     FireEvents(bindingEvent, tags);
 }
예제 #11
0
 private void FireScenarioEvents(BindingEvent bindingEvent)
 {
     FireEvents(bindingEvent);
 }
예제 #12
0
 public IEnumerable<IHookBinding> GetHooks(BindingEvent bindingEvent)
 {
     return GetHookList(bindingEvent);
 }
예제 #13
0
        private List<IHookBinding> GetHookList(BindingEvent bindingEvent)
        {
            List<IHookBinding> list;
            if (!eventBindings.TryGetValue(bindingEvent, out list))
            {
                list = new List<IHookBinding>();
                eventBindings.Add(bindingEvent, list);
            }

            return list;
        }
예제 #14
0
        private void CheckEventBindingMethod(BindingEvent bindingEvent, MethodInfo method)
        {
            if (!IsScenarioSpecificEvent(bindingEvent) &&
                !method.IsStatic)
                throw errorProvider.GetNonStaticEventError(new RuntimeBindingMethod(method));

            //TODO: check parameters, etc.
        }
예제 #15
0
 private void FireScenarioEvents(BindingEvent bindingEvent)
 {
     FireEvents(bindingEvent);
 }
예제 #16
0
 private bool IsScenarioSpecificEvent(BindingEvent bindingEvent)
 {
     return
         bindingEvent == BindingEvent.ScenarioStart ||
         bindingEvent == BindingEvent.ScenarioEnd ||
         bindingEvent == BindingEvent.BlockStart ||
         bindingEvent == BindingEvent.BlockEnd ||
         bindingEvent == BindingEvent.StepStart ||
         bindingEvent == BindingEvent.StepEnd;
 }
예제 #17
0
 internal BindingEventAttribute(BindingEvent bindingEvent, string[] tags)
 {
     Event = bindingEvent;
     Tags  = tags;
 }
예제 #18
0
 private void FireEvents(BindingEvent bindingEvent, IEnumerable<string> tags)
 {
     foreach (EventBinding eventBinding in bindingRegistry.GetEvents(bindingEvent))
     {
         if (IsTagNeeded(eventBinding.Tags, tags))
         {
             InvokeAction(eventBinding.BindingAction, null, eventBinding.MethodInfo);
         }
     }
 }
예제 #19
0
        private void FireEvents(BindingEvent bindingEvent)
        {
            var stepContext = contextManager.GetStepContext();

            foreach (EventBinding eventBinding in bindingRegistry.GetEvents(bindingEvent))
            {
                int scopeMatches;
                if (eventBinding.IsScoped && !eventBinding.BindingScope.Match(stepContext, out scopeMatches))
                    continue;

                eventBinding.InvokeAction(contextManager, null, testTracer);
            }
        }
예제 #20
0
        private void FireEvents(BindingEvent bindingEvent)
        {
            var stepContext = contextManager.GetStepContext();

            foreach (IHookBinding eventBinding in bindingRegistry.GetHooks(bindingEvent))
            {
                int scopeMatches;
                if (eventBinding.IsScoped && !eventBinding.BindingScope.Match(stepContext, out scopeMatches))
                    continue;

                bindingInvoker.InvokeHook(eventBinding, contextManager, testTracer);
            }
        }