Esempio n. 1
0
        public async Task <bool> SetAlarmModeAsync(Guid paritionUuid, string pinCode, Enums.AlarmArmMode newStatus, string secureSessionId = null,
                                                   bool raiseExceptionWhenNotSuccesful = true)
        {
            if (secureSessionId == null)
            {
                var session = await InitializeSecuritySessionAsync();

                if (!session.Success)
                {
                    throw new Exceptions.CannotEstablishSecuritySessionException(session.Error);
                }

                var pinLoginResponse = await LoginAlarmWithPinAsync(session.Response.SecureSessionId,
                                                                    session.Response.Salt,
                                                                    session.Response.Nonce, pinCode);

                if (!pinLoginResponse.Success || !pinLoginResponse.Response.Success)
                {
                    throw new Exceptions.CannotSignInAlarmSystemWithPINException(pinLoginResponse.Response.Error);
                }
                secureSessionId = pinLoginResponse.Response.SecureSessionId;
            }

            var alarmRequest = new AlarmRequest()
            {
                ArmMode         = Enum.GetName(typeof(Enums.AlarmArmMode), newStatus),
                SecureSessionId = secureSessionId
            };

            var request = new RestRequest("alarm/partitions/" + paritionUuid + "/setMode", HttpMethod.Post);

            request.ContentType = ContentTypes.Json;
            request.AddParameter(alarmRequest);
            var retVal = await _httpClient.SendWithPolicyAsync <AlarmRequestResponse>(this, request);

            if (!retVal.HttpResponseMessage.IsSuccessStatusCode)
            {
                if (raiseExceptionWhenNotSuccesful)
                {
                    throw new Exceptions.CannotSetAlarmStateException("Server returned: " + retVal.HttpResponseMessage.StatusCode);
                }
                return(false);
            }

            if (retVal.Content.Success)
            {
                return(true);
            }
            else
            {
                if (raiseExceptionWhenNotSuccesful)
                {
                    throw new Exceptions.CannotSetAlarmStateException(retVal.Content.Error);
                }
                return(false);
            }
        }
Esempio n. 2
0
 public async Task <bool> SetAlarmModeAsync(AlarmPartition partition, string pinCode, Enums.AlarmArmMode newStatus, string secureSessionId = null)
 {
     return(await SetAlarmModeAsync(partition.Uuid, pinCode, newStatus, secureSessionId));
 }