Exemplo n.º 1
0
        public async Task Invoke(HttpContext context, IGameEngineEventHandler handler)
        {
            if (context.Request.Path.Value.StartsWith(_options.CallbackEnpoint))
            {
                string apiKey = context.Request.Headers["x-api-key"].FirstOrDefault();
                if (apiKey != _options.GameEngineKey)
                {
                    context.Response.StatusCode = 401;
                    context.Response.Headers.Add("WWW-Authentication", "x-api-key");
                    return;
                }

                using (StreamReader sr = new StreamReader(context.Request.Body))
                    using (JsonReader jr = new JsonTextReader(sr))
                    {
                        var serializer = new JsonSerializer();
                        try
                        {
                            string ev = context.Request.Path.Value.Split('/').Last();
                            switch (ev)
                            {
                            case "updated":
                                var problemState = serializer.Deserialize <ProblemState>(jr);
                                await handler.Update(problemState);

                                break;

                            case "graded":
                                var gradedFlag = serializer.Deserialize <GradedSubmission>(jr);
                                await handler.Update(gradedFlag);

                                break;

                            case "reload":
                                await handler.Reload();

                                break;
                            }
                        }
                        catch (Exception ex)
                        {
                            _logger.LogError(ex, "Erroring processing GameEngine callback message.");
                        }
                    }
            }
            else
            {
                await _next(context);
            }
        }
Exemplo n.º 2
0
 public ProxyMock(
     IMemoryCache cache,
     IHostingEnvironment env,
     Options options,
     IGameEngineEventHandler handler,
     //IGameDataCache dataCache,
     ILogger <ProxyMock> logger
     )
 {
     Cache   = cache;
     Env     = env;
     Options = options;
     Handler = handler;
     Logger  = logger;
     //DataCache = dataCache;
 }
 public GameEngine(IGameEngineEventHandler gameEngineEventHandler)
 {
     _gameEngineEventHandler = gameEngineEventHandler;
 }