Esempio n. 1
0
 //IOptions will be read at application start only and wiil be registered as a singleton
 //IOptionsSnapshot will be read everytime a new instance is injected and registered as scoped
 public Worker(ILogger <Worker> logger, IOptions <JsonGroup> jsonOptions,
               IOptions <EnvGroup> envOptions, IOptions <CmdGroup> cmdOptions)
 {
     this.logger  = logger;
     jsonSettings = jsonOptions.Value;
     envSettings  = envOptions.Value;
     cmdSettings  = cmdOptions.Value;
 }
Esempio n. 2
0
        public HttpCode Execute()
        {
            Clear();

            // Connect
            NetworkChannel channel = null;

            try
            {
                channel = new NetworkChannel(Connection);

                // Request
                JsonEntity jsonEntity = (JsonEntity)Entity;
                JsonClient jsonClient = (JsonClient)Client;
                JsonGroup  jsonGroup  = (JsonGroup)Group;

                JsonJoinRequestMessage jsonRequestMessage = new JsonJoinRequestMessage()
                {
                    Entity = jsonEntity, Client = jsonClient, Group = jsonGroup
                };
                JsonPacket jsonRequest = new JsonPacket(jsonRequestMessage);

                HttpRequest httpRequest = new HttpRequest(Session.Id)
                {
                    Data = Session.Encrypt(jsonRequest)
                };
                channel.Send(httpRequest);

                // Response
                HttpResponse httpResponse;
                channel.Receive(out httpResponse);
                Code = httpResponse.Code;

                if (httpResponse.Ok)
                {
                    JsonPacket jsonResponse = JsonPacket.Parse(Session.Decrypt(httpResponse.Data));
                    JsonJoinResponseMessage jsonResponseMessage = JsonJoinResponseMessage.Parse(jsonResponse.Message);

                    // Data
                    Server.Entities = jsonResponseMessage.Entities;
                    Server.Sessions = jsonResponseMessage.Sessions;
                    Server.Clients  = jsonResponseMessage.Clients;
                    Server.Groups   = jsonResponseMessage.Groups;
#if DEBUG
                    Log.Add(httpRequest, httpResponse, jsonRequest, jsonResponse);
#endif
                }
            }
            finally
            {
                if (channel != null)
                {
                    channel.Shutdown();
                }
            }

            return(Code);
        }
Esempio n. 3
0
 public Worker(ILogger <Worker> logger, IOptionsMonitor <JsonGroup> jsonOptions,
               IOptions <EnvGroup> envOptions, IOptions <CmdGroup> cmdOptions)
 {
     this.logger  = logger;
     jsonSettings = jsonOptions.CurrentValue;
     jsonOptions.OnChange(newValue => jsonSettings = newValue);
     envSettings = envOptions.Value;
     cmdSettings = cmdOptions.Value;
 }
Esempio n. 4
0
        public async Task <string> GetGroupsAsync()
        {
            List <Group> groups = await db.Groups
                                  .Include(p => p.Students)
                                  .AsNoTracking()
                                  .ToListAsync();

            List <JsonGroup> jsonGroups = new List <JsonGroup>();

            foreach (Group group in groups)
            {
                JsonGroup jsonGroup = new JsonGroup()
                {
                    Id       = group.Id,
                    Name     = group.Name,
                    Students = new List <JsonStudent>(group.Students.Count)
                };

                foreach (Student student in group.Students)
                {
                    JsonStudent jsonStudent = new JsonStudent()
                    {
                        Id        = student.Id,
                        FirstName = student.FirstName,
                        LastName  = student.LastName,
                        GroupId   = student.GroupId,
                        CreatedAt = student.CreatedAt,
                        UpdatedAt = student.UpdatedAt
                    };

                    jsonGroup.Students.Add(jsonStudent);
                }

                jsonGroups.Add(jsonGroup);
            }

            string json = JsonSerializer.Serialize <List <JsonGroup> >(jsonGroups);

            return(await Task.FromResult(JsonPrettyPrint(json)));
        }
Esempio n. 5
0
        public void Execute(HttpRequest httpRequest, JsonPacket jsonRequest, SessionComponent session)
        {
            // Connect
            NetworkChannel channel = new NetworkChannel(Connection);

            // Request
            JsonJoinRequestMessage jsonRequestMessage = JsonJoinRequestMessage.Parse(jsonRequest.Message);

            // Data
            JsonEntity jsonEntity = jsonRequestMessage.Entity;
            Entity     entity     = EntityMap.Get(jsonEntity.Id);

            if (entity != null)
            {
                entity.Shutdown();
            }

            entity    = session.Owner;
            entity.Id = jsonEntity.Id;
            EntityMap.Add(entity.Id, entity);
            Server.Entities = EntityMap.Count;

            JsonGroup jsonGroup = jsonRequestMessage.Group;

            if (jsonGroup == null)
            {
                jsonGroup = JsonGroup.Default;
            }

            JsonClient      jsonClient = jsonRequestMessage.Client;
            ClientComponent client     = new ClientComponent(jsonClient.Id, jsonClient.Name);

            entity.Add(client);

            ClientMap.Add(client.Id, entity);
            Server.Clients = ClientMap.Count;

            GroupComponent group = new GroupComponent(jsonGroup.Id);

            entity.Add(group);

            GroupList.Add(group.Id, entity);
            Server.Groups = GroupList.Count;

            SearchListComponent download = new SearchListComponent();

            entity.Add(download);

            // Response
            JsonJoinResponseMessage jsonResponseMessage = new JsonJoinResponseMessage()
            {
                Entities = Server.Entities, Sessions = Server.Sessions, Clients = Server.Clients, Groups = Server.Groups
            };
            JsonPacket jsonResponse = new JsonPacket(jsonResponseMessage);

            HttpResponse httpResponse = new HttpResponse()
            {
                Data = session.Encrypt(jsonResponse)
            };

            channel.Send(httpResponse);
#if DEBUG
            Log.Add(httpRequest, httpResponse, jsonRequest, jsonResponse);
#endif
        }
Esempio n. 6
0
 public Group PopulateGroup(Group group, JsonGroup jsonGroup)
 {
     group.Name = jsonGroup.Name;
     return(group);
 }