Ejemplo n.º 1
0
 public EventTabellenParser(ILogger <EventTabellenParser> logger, IEventParser eventParser, RegExContainer regExContainer)
 {
     _logger         = logger;
     _eventParser    = eventParser;
     _regExContainer = regExContainer;
     _titleRegex     = new Regex(@"\w{3,} für (.*) \w{3,}", RegexOptions.Singleline);
 }
Ejemplo n.º 2
0
 public GameLogReaderHttp(Uri[] gameLogServerUris, IEventParser parser, ILogger logger)
 {
     _eventParser  = parser;
     _logServerApi = RestClient.For <IGameLogServer>(gameLogServerUris[0].ToString());
     _safeLogPath  = gameLogServerUris[1].LocalPath.ToBase64UrlSafeString();
     _logger       = logger;
 }
Ejemplo n.º 3
0
 public MixerConstellation(ILoggerFactory loggerFactory, IMixerFactory factory, IEventParser parser, CancellationToken shutdown)
 {
     _loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
     _factory       = factory ?? throw new ArgumentNullException(nameof(factory));
     _logger        = loggerFactory.CreateLogger(nameof(MixerConstellation));
     _shutdown      = shutdown;
     _parser        = parser ?? throw new ArgumentNullException(nameof(parser));
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Construct a new JsonRpcWebSocket object
 /// </summary>
 public JsonRpcWebSocket(ILogger logger, IMixerFactory factory, IEventParser parser)
 {
     _logger      = logger ?? throw new ArgumentNullException(nameof(logger));
     _factory     = factory ?? throw new ArgumentNullException(nameof(factory));
     _parser      = parser ?? throw new ArgumentNullException(nameof(parser));
     _readBuffer  = new byte[READ_BUFFER_SIZE];
     ReplyTimeout = TimeSpan.FromSeconds(10);
 }
Ejemplo n.º 5
0
        public async Task Initialize(IManager mgr)
        {
            bool firstRun = ScriptEngine == null;

            // it's been loaded before so we need to call the unload event
            if (!firstRun)
            {
                await OnUnloadAsync();
            }

            Manager = mgr;
            string script;

            using (var stream = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                using (var reader = new StreamReader(stream, Encoding.Default))
                {
                    script = await reader.ReadToEndAsync();
                }
            }

            ScriptEngine = new Jint.Engine(cfg =>
                                           cfg.AllowClr(new[]
            {
                typeof(System.Net.Http.HttpClient).Assembly,
                typeof(EFClient).Assembly,
            })
                                           .CatchClrExceptions());

            ScriptEngine.Execute(script);
            ScriptEngine.SetValue("_localization", Utilities.CurrentLocalization);
            dynamic pluginObject = ScriptEngine.GetValue("plugin").ToObject();

            this.Author  = pluginObject.author;
            this.Name    = pluginObject.name;
            this.Version = (float)pluginObject.version;


            try
            {
                if (pluginObject.isParser)
                {
                    await OnLoadAsync(mgr);

                    IEventParser eventParser = (IEventParser)ScriptEngine.GetValue("eventParser").ToObject();
                    IRConParser  rconParser  = (IRConParser)ScriptEngine.GetValue("rconParser").ToObject();
                    Manager.AdditionalEventParsers.Add(eventParser);
                    Manager.AdditionalRConParsers.Add(rconParser);
                }
            }
            catch { }


            if (!firstRun)
            {
                await OnLoadAsync(mgr);
            }
        }
            public static ImmutableHashSet <EventLevel> GetSupportedLevels(IEventParser <TEvents> listener)
            {
                if (SupportedLevels == null)
                {
                    SupportedLevels = EventParserTypes.GetLevelsFromParser(listener.GetType());
                }

                return(SupportedLevels);
            }
Ejemplo n.º 7
0
 public MixerChat(ILoggerFactory loggerFactory, IMixerFactory factory, IMixerRestClient client, IEventParser parser, CancellationToken shutdown)
 {
     _loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
     _factory       = factory ?? throw new ArgumentNullException(nameof(factory));
     _restClient    = client ?? throw new ArgumentNullException(nameof(client));
     _logger        = loggerFactory.CreateLogger(nameof(MixerChat));
     _parser        = parser ?? throw new ArgumentNullException(nameof(parser));
     _shutdown      = shutdown;
 }
Ejemplo n.º 8
0
        public IGameLogReader CreateGameLogReader(Uri[] logUris, IEventParser eventParser)
        {
            var baseUri = logUris[0];

            if (baseUri.Scheme == Uri.UriSchemeHttp)
            {
                return(new GameLogReaderHttp(logUris, eventParser, _serviceProvider.GetRequiredService <ILogger <GameLogReaderHttp> >()));
            }

            else if (baseUri.Scheme == Uri.UriSchemeFile)
            {
                return(new GameLogReader(baseUri.LocalPath, eventParser, _serviceProvider.GetRequiredService <ILogger <GameLogReader> >()));
            }

            throw new NotImplementedException($"No log reader implemented for Uri scheme \"{baseUri.Scheme}\"");
        }
Ejemplo n.º 9
0
        public XmlDocumentCapturer(IValidator <XDocument> validator, IEventParser <XElement> xmlEventParser, IEventStore eventStore)
        {
            if (validator == null)
            {
                throw new ArgumentNullException("validator");
            }
            if (xmlEventParser == null)
            {
                throw new ArgumentNullException("xmlEventParser");
            }
            if (eventStore == null)
            {
                throw new ArgumentNullException("eventStore");
            }

            _validator      = validator;
            _xmlEventParser = xmlEventParser;
            _eventStore     = eventStore;
        }
Ejemplo n.º 10
0
 public AnalysisMode(IAttackCollection attackCollection,
                     IArmCollection armCollection,
                     IFastDrawCollection fastDrawCollection,
                     ISpellCollection spellCollection,
                     ISummonCollection summonCollection,
                     IEnemyCollection enemyCollection,
                     IItemCollection itemCollection,
                     IAreaCollection areaCollection,
                     IRandomizerAgent agent,
                     IEventParser eventParser)
 {
     AttackCollection   = attackCollection;
     ArmCollection      = armCollection;
     FastDrawCollection = fastDrawCollection;
     SpellCollection    = spellCollection;
     SummonCollection   = summonCollection;
     EnemyCollection    = enemyCollection;
     ItemCollection     = itemCollection;
     AreaCollection     = areaCollection;
     Agent       = agent;
     EventParser = eventParser;
 }
Ejemplo n.º 11
0
 public void AddEventParser(IEventParser parser)
 {
     eventParsers.Add(parser);
 }
Ejemplo n.º 12
0
 public IJsonRpcWebSocket CreateJsonRpcWebSocket(ILogger logger, IEventParser parser) => new JsonRpcWebSocket(logger, this, _config, parser);
Ejemplo n.º 13
0
 public IMixerChat CreateChat(IMixerRestClient client, IEventParser parser, CancellationToken shutdownRequest) => new MixerChat(_config, _loggerFactory, this, client, parser, shutdownRequest);
Ejemplo n.º 14
0
 public IMixerConstellation CreateConstellation(IEventParser parser, CancellationToken shutdownRequest) => new MixerConstellation(_config, _loggerFactory, this, parser, shutdownRequest);
Ejemplo n.º 15
0
 public void AddEventParser(IEventParser parser)
 {
 }
Ejemplo n.º 16
0
 public GameLogReader(string logFile, IEventParser parser, ILogger logger)
 {
     _logFile = logFile;
     _parser  = parser;
     _logger  = logger;
 }
Ejemplo n.º 17
0
 public GameLogReader(string logFile, IEventParser parser)
 {
     LogFile = logFile;
     Parser  = parser;
 }
Ejemplo n.º 18
0
 public GameLogReaderHttp(Uri gameLogServerUri, string logPath, IEventParser parser)
 {
     this.logPath = logPath.ToBase64UrlSafeString();;
     Parser       = parser;
     Api          = RestClient.For <IGameLogServer>(gameLogServerUri);
 }
Ejemplo n.º 19
0
        public async Task Initialize(IManager manager, IScriptCommandFactory scriptCommandFactory, IScriptPluginServiceResolver serviceResolver)
        {
            await _onProcessing.WaitAsync();

            try
            {
                // for some reason we get an event trigger when the file is not finished being modified.
                // this must have been a change in .NET CORE 3.x
                // so if the new file is empty we can't process it yet
                if (new FileInfo(_fileName).Length == 0L)
                {
                    return;
                }

                bool firstRun = _scriptEngine == null;

                // it's been loaded before so we need to call the unload event
                if (!firstRun)
                {
                    await OnUnloadAsync();

                    foreach (string commandName in _registeredCommandNames)
                    {
                        manager.GetLogger(0).WriteDebug($"Removing plugin registered command \"{commandName}\"");
                        manager.RemoveCommandByName(commandName);
                    }

                    _registeredCommandNames.Clear();
                }

                successfullyLoaded = false;
                string script;

                using (var stream = new FileStream(_fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                {
                    using (var reader = new StreamReader(stream, Encoding.Default))
                    {
                        script = await reader.ReadToEndAsync();
                    }
                }

                _scriptEngine = new Engine(cfg =>
                                           cfg.AllowClr(new[]
                {
                    typeof(System.Net.Http.HttpClient).Assembly,
                    typeof(EFClient).Assembly,
                    typeof(Utilities).Assembly,
                    typeof(Encoding).Assembly
                })
                                           .CatchClrExceptions());

                _scriptEngine.Execute(script);
                _scriptEngine.SetValue("_localization", Utilities.CurrentLocalization);
                _scriptEngine.SetValue("_serviceResolver", serviceResolver);
                dynamic pluginObject = _scriptEngine.GetValue("plugin").ToObject();

                Author  = pluginObject.author;
                Name    = pluginObject.name;
                Version = (float)pluginObject.version;

                var commands = _scriptEngine.GetValue("commands");

                if (commands != JsValue.Undefined)
                {
                    try
                    {
                        foreach (var command in GenerateScriptCommands(commands, scriptCommandFactory))
                        {
                            manager.GetLogger(0).WriteDebug($"Adding plugin registered command \"{command.Name}\"");
                            manager.AddAdditionalCommand(command);
                            _registeredCommandNames.Add(command.Name);
                        }
                    }

                    catch (RuntimeBinderException e)
                    {
                        throw new PluginException($"Not all required fields were found: {e.Message}")
                              {
                                  PluginFile = _fileName
                              };
                    }
                }

                await OnLoadAsync(manager);

                try
                {
                    if (pluginObject.isParser)
                    {
                        IsParser = true;
                        IEventParser eventParser = (IEventParser)_scriptEngine.GetValue("eventParser").ToObject();
                        IRConParser  rconParser  = (IRConParser)_scriptEngine.GetValue("rconParser").ToObject();
                        manager.AdditionalEventParsers.Add(eventParser);
                        manager.AdditionalRConParsers.Add(rconParser);
                    }
                }

                catch (RuntimeBinderException) { }

                if (!firstRun)
                {
                    await OnLoadAsync(manager);
                }

                successfullyLoaded = true;
            }

            catch (JavaScriptException ex)
            {
                throw new PluginException($"An error occured while initializing script plugin: {ex.Error} (Line: {ex.Location.Start.Line}, Character: {ex.Location.Start.Column})")
                      {
                          PluginFile = _fileName
                      };
            }

            catch
            {
                throw;
            }

            finally
            {
                if (_onProcessing.CurrentCount == 0)
                {
                    _onProcessing.Release(1);
                }
            }
        }