コード例 #1
0
ファイル: DeviceModule.cs プロジェクト: justinfinch/Automate
        public DeviceModule(ILogger logger, IDeviceRepository deviceRepository, IDocumentSession documentSession)
            : base("/devices")
        {
            Get["/"] = p =>
            {
                var registeredDevices = deviceRepository.GetAll();
                var registeredDeviceDtos = Mapper.Map<IEnumerable<RegisteredDeviceDto>>(registeredDevices);
                return Response.AsJson(registeredDeviceDtos);
            };

            Post["/"] = p =>
            {
                var newDeviceRequest = this.Bind<DeviceSetupRequest>();

                var registeredDevice = new RegisteredDevice(newDeviceRequest.DeviceName, newDeviceRequest.DeviceType, newDeviceRequest.IpAddress);
                deviceRepository.Add(registeredDevice);

                documentSession.SaveChanges();
                documentSession.Dispose();

                return HttpStatusCode.OK;
            };

            Post["/{name}/{commandRoute}"] = p =>
            {
                Response response = HttpStatusCode.NotFound;

                //Lookup IP address and device type from device
                //TODO: Implement singleton DeviceMap object to cache and return this data
                var device = deviceRepository.FindByName(p.name);

                if (device != null)
                {
                    var commandRoute = String.Format("/{0}/{1}", device.Type, p.commandRoute);
                    response = new Response();
                    response.Headers.Add("cmd-route", commandRoute);
                    response.Headers.Add("cmd-ip", device.IpAddress);
                    response.StatusCode = HttpStatusCode.OK;

                    logger.Info(String.Format("Recievied the {0} command for the {1}.  Routing it to {2}", p.commandRoute, p.device, commandRoute));
                }

                return response;
            };

            Delete["/{name}"] = p =>
            {
                Response response = HttpStatusCode.NotFound;

                return response;
            };
        }
コード例 #2
0
 public RegisteredDevice Add(RegisteredDevice registeredDevice)
 {
     _documentSession.Store(registeredDevice);
     return registeredDevice;
 }