Beispiel #1
0
        private async Task PlaybackEvent(HookEvent evt, BaseItem item, SessionInfo session, User user)
        {
            if (user == null)
            {
                return;
            }
            if (item == null)
            {
                return;
            }

            await ExecuteWebhook(new EventInfo
            {
                Event   = evt,
                Item    = item,
                User    = user,
                Session = session == null ? null : new SessionInfoDto(session),
                Server  = new ServerInfoDto
                {
                    Id      = _appHost.SystemId,
                    Name    = _appHost.FriendlyName,
                    Version = _appHost.ApplicationVersion.ToString(),
                },
            });
        }
Beispiel #2
0
        private async Task InitAsync()
        {
            try
            {
                Log.Debug("Init ModelConnector {Type} -- {Name}", typeof(TDrived), Name);

                if (Model.IsNothing())
                {
                    return;
                }
                OnLoad();
                //Log.Information("Ask For {Property}", _name);
                await DoAsync(from model in Model
                              select Func(async() =>
                {
                    var eventActor = await Ask <IEventActor>(model.Actor, new MakeEventHook(Name), TimeSpan.FromSeconds(15));
                    //Log.Information("Ask Compled For {Property}", _name);

                    eventActor.Register(HookEvent.Create <PropertyChangedEvent>(PropertyChangedHandler));
                    eventActor.Register(HookEvent.Create <ValidatingEvent>(ValidateCompled));

                    Tell(model.Actor, new TrackPropertyEvent(Name), eventActor.OriginalRef);

                    Interlocked.Exchange(ref _eventActor, eventActor);
                    Interlocked.Exchange(ref _isInitializing, 0);
                }));
            }
            catch (Exception e)
            {
                Log.Error(e, "Error Bind Property {Name}", Name);
            }
        }
Beispiel #3
0
        private string GetEventName(HookEvent evt)
        {
            switch (evt)
            {
            case HookEvent.Pause:
                return("media.pause");

            case HookEvent.Resume:
                return("media.resume");

            case HookEvent.Stop:
                return("media.stop");

            case HookEvent.Scrobble:
                return("media.scrobble");

            case HookEvent.Rate:
                return("media.rate");

            case HookEvent.MarkPlayed:
                return("media.scrobble");

            default:
                return("media.play");
            }
        }
Beispiel #4
0
        public void Request(string name, Action <Option <object> > valueResponse, CultureInfo?info = null)
        {
            var hook = EventActor.Create(_system, null, true);

            hook.Register(HookEvent.Create <LocCoordinator.ResponseLocValue>(res => valueResponse(res.Result)));
            hook.Send(_extension.LocCoordinator,
                      new LocCoordinator.RequestLocValue(name, info ?? CultureInfo.CurrentUICulture));
        }
Beispiel #5
0
 private JObject ReadData(HookEvent @event)
 {
     using (var streamReader = new StreamReader(@event.Body))
         using (var jsonReader = new JsonTextReader(streamReader))
         {
             return((JObject)JToken.ReadFrom(jsonReader));
         }
 }
        public async Task HandleEventAsync(HookEvent eventData)
        {
            var eventTypes = CaptainHookPublisherManager.EventTypes;
            var key        = CalculateKey(eventData.ReceiverName, eventData.Id, eventData.EventType);

            if (!eventTypes.ContainsKey(key))
            {
                return;
            }

            var handlerType = eventTypes[key];

            if (ReflectionHelper.IsAssignableToGenericType(handlerType, typeof(IEventPublisher <>)))
            {
                var genericImplementations = ReflectionHelper.GetImplementedGenericTypes(handlerType, typeof(IEventPublisher <>));
                if (genericImplementations.Count != 1)
                {
                    return;
                }

                var implementedPayloadTypes = genericImplementations[0].GetGenericArguments();
                if (implementedPayloadTypes.Length != 1)
                {
                    return;
                }

                var payloadType = implementedPayloadTypes[0];
                var payload     = eventData.Payload;
                if (!payloadType.IsAssignableFrom(eventData.Payload.GetType()))
                {
                    var json = (JsonElement)eventData.Payload;
                    payload = ToObject(json, payloadType);
                }

                var parameterType = typeof(HookEventToPublish <>).MakeGenericType(payloadType);
                var eventWrapper  = Activator.CreateInstance(parameterType, new[] { eventData, payload });

                using (var scope = ServiceScopeFactory.CreateScope())
                {
                    var contextProvider = scope.ServiceProvider.GetRequiredService <IHookEventContextProvider>();
                    contextProvider.SetContext(eventData);

                    var receiver = scope.ServiceProvider.GetRequiredService(handlerType);
                    var method   = typeof(IEventPublisher <>)
                                   .MakeGenericType(payloadType)
                                   .GetMethod(
                        nameof(IEventPublisher <object> .HandleEventAsync),
                        new[] { parameterType }
                        );

                    await(Task) method.Invoke(receiver, new[] { eventWrapper });
                }
            }
            else
            {
                throw new AbpException("The object instance is not an event handler. Object type: " + handlerType.AssemblyQualifiedName);
            }
        }
        public void Request(string name, Action <object?> valueResponse, Maybe <CultureInfo> info = default)
        {
            var hook = EventActor.Create(_system, Maybe <string> .Nothing, true);

            hook.Do(h =>
            {
                h.Register(HookEvent.Create <LocCoordinator.ResponseLocValue>(res => valueResponse(res.Result)));
                h.Send(_extension.LocCoordinator, new LocCoordinator.RequestLocValue(name, info.Or(CultureInfo.CurrentUICulture)));
            });
        }
Beispiel #8
0
 public void RunHooks(HookMode hookMode, HookType hookType, HookEvent hookEvent)
 {
     if (Program.Options.CommonTestSpacerBuildPackCompile.NoHooks == false)
     {
         Hooks.Where(hook => hook.Mode == hookMode)
         .Where(hook => hook.Event == hookEvent)
         .Where(hook => hook.Type == hookType).ToList()
         .ForEach(hook => hook.Run());
     }
 }
Beispiel #9
0
        protected override void runHooks(HookType hookType, HookEvent hookEvent)
        {
            Program.HooksManager.RunHooks(HookMode.Common, hookType, hookEvent);
            Program.HooksManager.RunHooks(HookMode.Test, hookType, hookEvent);

            if (Mode == TestMode.Full)
            {
                Program.HooksManager.RunHooks(HookMode.FullTest, hookType, hookEvent);
            }
            else if (Mode == TestMode.Quick)
            {
                Program.HooksManager.RunHooks(HookMode.QuickTest, hookType, hookEvent);
            }
        }
Beispiel #10
0
        public async Task Handle(HookEvent @event, ITriggerAction action)
        {
            var gitlabEvent = @event.Headers["X-Gitlab-Event"].FirstOrDefault();

            if (string.IsNullOrWhiteSpace(gitlabEvent))
            {
                Console.WriteLine($"[GitLab] Unhandled hook {gitlabEvent}");
                return;
            }

            if (gitlabEvent == "Merge Request Hook")
            {
                await HandleMergeRequest(ReadData(@event), action);
            }
        }
Beispiel #11
0
        private async Task PlaybackEvent(HookEvent evt, BaseItem item, SessionInfo session, List <User> users)
        {
            if (users.Count <= 0)
            {
                return;
            }
            if (item == null)
            {
                return;
            }

            foreach (var user in users)
            {
                await PlaybackEvent(evt, item, session, user);
            }
        }
        public HooksReceiverModule(IIndex <string, IHookHandler> hookHandler, Func <ITriggerAction> action)
        {
            Post("/hooks/{type}", async _ =>
            {
                if (!hookHandler.TryGetValue((string)_.type, out var handler))
                {
                    return(Response
                           .AsJson(new { ok = false, msg = $"Unknown hook type {(string) _.type}" })
                           .WithStatusCode(HttpStatusCode.BadRequest));
                }

                var headers = Request.Headers.ToDictionary(x => x.Key, x => x.Value);

                var @event = new HookEvent(headers, Request.Body);

                await handler.Handle(@event, action());

                return(Response.AsJson(new { ok = true }));
            });
        }
Beispiel #13
0
        public Task <HookInfo> GenerateHook(string address, HookEvent hook, string url)
        {
            try
            {
                string evt = "";

                switch (hook)
                {
                case HookEvent.ConfirmedTransaction:
                    evt = "confirmed-tx";
                    break;

                case HookEvent.DoubleSpendTransaction:
                    evt = "double-spend-tx";
                    break;

                case HookEvent.NewBlock:
                    evt = "new-block";
                    break;

                case HookEvent.TransactionConfirmation:
                    evt = "tx-confirmation";
                    break;

                case HookEvent.UnconfirmedTransaction:
                    evt = "unconfirmed-tx";
                    break;
                }

                return(PostAsync <HookInfo>("hooks", new
                {
                    @event = evt,
                    url,
                    address
                }));
            }
            catch (Exception ex)
            {
                throw new Exception();
            }
        }
        public Task <HookInfo> GenerateHook(string address, HookEvent hook, string url)
        {
            try {
                string evt = "";

                switch (hook)
                {
                case HookEvent.ConfirmedTransaction:
                    evt = "confirmed-tx";
                    break;

                case HookEvent.DoubleSpendTransaction:
                    evt = "double-spend-tx";
                    break;

                case HookEvent.NewBlock:
                    evt = "new-block";
                    break;

                case HookEvent.TransactionConfirmation:
                    evt = "tx-confirmation";
                    break;

                case HookEvent.UnconfirmedTransaction:
                    evt = "unconfirmed-tx";
                    break;
                }

                return(PostAsync <HookInfo>("hooks", new {
                    @event = evt,
                    url,
                    address
                }));
            } catch {
                return(Task.Factory.StartNew(() => new HookInfo {
                    Error = "Hook already exists"
                }));
            }
        }
 public GlobalHook(HookEvent subcriptions) : this()
 {
     SubscribedEvents.Add(subcriptions);
 }
Beispiel #16
0
 protected override void runHooks(HookType hookType, HookEvent hookEvent)
 {
     Program.HooksManager.RunHooks(HookMode.Common, hookType, hookEvent);
     Program.HooksManager.RunHooks(HookMode.Build, hookType, hookEvent);
 }
 public void UnSubscribe(HookEvent eventType)
 {
     SubscribedEvents.RemoveAll(e => e == eventType);
 }
 public void Subscribe(HookEvent eventType)
 {
     SubscribedEvents.Add(eventType);
 }
Beispiel #19
0
 static void HookCallback(ref MouseState state)
 {
     HookEvent?.Invoke(ref state);
 }
Beispiel #20
0
 private static void OnNewHook(object sender, HookEvent e)
 {
     Console.WriteLine("Hook received {0}", e.Hook.Rating);
 }
Beispiel #21
0
 protected abstract void runHooks(HookType hookType, HookEvent hookEvent);