public IResponse Pull(uint id, uint timeout = 0) { try { string result = _client.Get(new Uri(LoggingEndpoint.Pull(id, timeout), UriKind.Relative)); PullResponseJson pullResponse = JsonConvert.DeserializeObject <PullResponseJson>(result); IResponse response = null; if (pullResponse.Success) { List <LoggingEventEntity> entities = new List <LoggingEventEntity>(); pullResponse.Result.Events.ForEach(x => { LoggingEventName eventName = Utils.ParseEnum <LoggingEventName>(x.Name); entities.Add(new LoggingEventEntity() { Id = x.Id, TzShift = x.TzShift, UtcTime = x.UtcTime, UpTime = x.UpTime, Event = eventName, Params = GetParams(eventName, x.Params) }); }); response = new LoggingPullResponse(entities); } else { response = Utils.ErrorResponse(result); } return(response); } catch { throw; } }
private LoggingEventEntity.ILoggingEventEntityParams GetParams(LoggingEventName eventName, object param) { LoggingEventEntity.ILoggingEventEntityParams result = null; switch (eventName) { case LoggingEventName.DeviceState: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsDeviceState paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsDeviceState>(); result = new LoggingEventEntity.DeviceState() { State = Utils.ParseEnum <LoggingEventEntity.DeviceState.StateEnum>(paramsObj.State) }; } break; case LoggingEventName.AudioLoopTest: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsAudioLoopTest paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsAudioLoopTest>(); result = new LoggingEventEntity.AudioLoopTest() { Result = Utils.ParseEnum <LoggingEventEntity.AudioLoopTest.ResultEnum>(paramsObj.Result) }; } break; case LoggingEventName.MotionDetected: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsMotionDetected paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsMotionDetected>(); result = new LoggingEventEntity.MotionDetected() { State = Utils.ParseEnum <LoggingEventEntity.MotionDetected.StateEnum>(paramsObj.State) }; } break; case LoggingEventName.NoiseDetected: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsNoiseDetected paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsNoiseDetected>(); result = new LoggingEventEntity.NoiseDetected() { State = Utils.ParseEnum <LoggingEventEntity.NoiseDetected.StateEnum>(paramsObj.State) }; } break; case LoggingEventName.KeyPressed: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsKeyPressed paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsKeyPressed>(); LoggingEventEntity.Key key = LoggingEventEntity.Key.Zero; uint quickDialButton = 0; if (paramsObj.Key.StartsWith("%")) { key = LoggingEventEntity.Key.QuickDial; quickDialButton = uint.Parse(paramsObj.Key.Substring(1)); } else if (paramsObj.Key == "*") { key = LoggingEventEntity.Key.Star; } else if (paramsObj.Key == "#") { key = LoggingEventEntity.Key.Hatch; } else { uint number = uint.Parse(paramsObj.Key); key = (LoggingEventEntity.Key)number; } result = new LoggingEventEntity.KeyPressed() { Key = key, QuickDialButton = quickDialButton }; } break; case LoggingEventName.KeyReleased: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsKeyReleased paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsKeyReleased>(); LoggingEventEntity.Key key = LoggingEventEntity.Key.Zero; uint quickDialButton = 0; if (paramsObj.Key.StartsWith("%")) { key = LoggingEventEntity.Key.QuickDial; quickDialButton = uint.Parse(paramsObj.Key.Substring(1)); } else if (paramsObj.Key == "*") { key = LoggingEventEntity.Key.Star; } else if (paramsObj.Key == "#") { key = LoggingEventEntity.Key.Hatch; } else { uint number = uint.Parse(paramsObj.Key); key = (LoggingEventEntity.Key)number; } result = new LoggingEventEntity.KeyReleased() { Key = key, QuickDialButton = quickDialButton }; } break; case LoggingEventName.CodeEntered: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsCodeEntered paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsCodeEntered>(); result = new LoggingEventEntity.CodeEntered() { Code = paramsObj.Code, Valid = paramsObj.Valid }; } break; case LoggingEventName.CardEntered: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsCardEntered paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsCardEntered>(); result = new LoggingEventEntity.CardEntered() { Direction = Utils.ParseEnum <LoggingEventEntity.CardEntered.DirectionEnum>(paramsObj.Direction), Reader = paramsObj.Reader, Uid = paramsObj.Uid, Valid = paramsObj.Valid }; } break; case LoggingEventName.InputChanged: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsInputChanged paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsInputChanged>(); result = new LoggingEventEntity.InputChanged() { Port = paramsObj.Port, State = paramsObj.State }; } break; case LoggingEventName.OutputChanged: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsOutputChanged paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsOutputChanged>(); result = new LoggingEventEntity.OutputChanged() { Port = paramsObj.Port, State = paramsObj.State }; } break; case LoggingEventName.SwitchStateChanged: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsSwitchStateChanged paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsSwitchStateChanged>(); result = new LoggingEventEntity.SwitchStateChanged() { State = paramsObj.State, Switch = paramsObj.Switch }; } break; case LoggingEventName.CallStateChanged: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsCallStateChanged paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsCallStateChanged>(); result = new LoggingEventEntity.CallStateChanged() { Direction = Utils.ParseEnum <LoggingEventEntity.CallStateChanged.DirectionEnum>(paramsObj.Direction), State = Utils.ParseEnum <LoggingEventEntity.CallStateChanged.StateEnum>(paramsObj.State), Peer = paramsObj.Peer, Reason = Utils.ParseEnum <LoggingEventEntity.CallStateChanged.ReasonEnum>(paramsObj.Reason), Session = paramsObj.Session, Call = paramsObj.Call }; } break; case LoggingEventName.RegistrationStateChanged: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsRegistrationStateChanged paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsRegistrationStateChanged>(); result = new LoggingEventEntity.RegistrationStateChanged() { State = Utils.ParseEnum <LoggingEventEntity.RegistrationStateChanged.StateEnum>(paramsObj.State) }; } break; case LoggingEventName.TamperSwitchActivated: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsTamperSwitchActivated paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsTamperSwitchActivated>(); result = new LoggingEventEntity.TamperSwitchActivated() { State = Utils.ParseEnum <LoggingEventEntity.TamperSwitchActivated.StateEnum>(paramsObj.State) }; } break; case LoggingEventName.UnauthorizedDoorOpen: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsUnauthorizedDoorOpen paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsUnauthorizedDoorOpen>(); result = new LoggingEventEntity.UnauthorizedDoorOpen() { State = Utils.ParseEnum <LoggingEventEntity.UnauthorizedDoorOpen.StateEnum>(paramsObj.State) }; } break; case LoggingEventName.DoorOpenTooLong: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsDoorOpenTooLong paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsDoorOpenTooLong>(); result = new LoggingEventEntity.DoorOpenTooLong() { State = Utils.ParseEnum <LoggingEventEntity.DoorOpenTooLong.StateEnum>(paramsObj.State) }; } break; case LoggingEventName.LoginBlocked: { JObject jObj = (JObject)param; HIPHttpApi.EventType.ParamsLoginBlocked paramsObj = jObj.ToObject <HIPHttpApi.EventType.ParamsLoginBlocked>(); result = new LoggingEventEntity.LoginBlocked() { Address = paramsObj.Address }; } break; default: break; } return(result); }