public async Task <SensorModel> PostSensorWithRetryAsync(SensorPostModel model, bool retry = true)
        {
            SensorModel sensor = null;

            try
            {
                sensor = await PostSensorAsync(_token, model);
            }
            catch (AuthorizationException)
            {
                if (retry)
                {
                    await RenewAuthToken();

                    sensor = await PostSensorAsync(_token, model);
                }
                else
                {
                    throw;
                }
            }
            catch (Exception)
            {
                throw;
            }

            return(sensor);
        }
Exemple #2
0
        public async void OnSaveClick(object sender, RoutedEventArgs e)
        {
            if (SaveBtn_IsEnabled)
            {
                SensorPostModel model = new SensorPostModel
                {
                    pos_x        = Int32.Parse(PosX),
                    pos_y        = Int32.Parse(PosY),
                    radius       = Int32.Parse(Radius),
                    key          = Key,
                    mqtt_account = new MqttAccountPostModel
                    {
                        server     = Server,
                        port       = Int32.Parse(Port),
                        keep_alive = Int32.Parse(KeepAlive),
                        username   = Username,
                        password   = Password
                    }
                };

                try
                {
                    var customer = await _api.PostSensorWithRetryAsync(model);

                    if (customer != null)
                    {
                        Views.ShellPage.ShellFrame.Navigate(typeof(Views.SensorsPage), customer);
                    }
                    else
                    {
                        var unknowErrordialog = new Windows.UI.Popups.MessageDialog(
                            "Une erreur est survenue",
                            "Erreur");
                        unknowErrordialog.Commands.Add(new Windows.UI.Popups.UICommand("Fermer")
                        {
                            Id = 0
                        });

                        unknowErrordialog.DefaultCommandIndex = 0;

                        var resultUnknow = await unknowErrordialog.ShowAsync();
                    }
                }
                catch (Exception ex)
                {
                    var dialog = new Windows.UI.Popups.MessageDialog(
                        ex.Message,
                        "Erreur"
                        );
                    dialog.Commands.Add(new Windows.UI.Popups.UICommand("Fermer")
                    {
                        Id = 0
                    });

                    dialog.DefaultCommandIndex = 0;

                    var result = await dialog.ShowAsync();
                }
            }
        }
        public async Task <SensorModel> PostSensorAsync(string token, SensorPostModel model)
        {
            HttpClient client = this.GetHttpClientToken(token);

            Uri resourceUri = new Uri(_serverUrl + "sensors/");

            string jsonObject = "";

            Debug.WriteLine(model);
            jsonObject = JsonConvert.SerializeObject(model);

            Debug.WriteLine("ici");

            var response = await client.PostAsync(resourceUri, new System.Net.Http.StringContent(jsonObject, System.Text.Encoding.UTF8, "application/json"));

            var strResponse = await response.Content.ReadAsStringAsync();

            switch (response.StatusCode)
            {
            case System.Net.HttpStatusCode.Unauthorized:
                throw new AuthorizationException("Wrong token");

            case System.Net.HttpStatusCode.BadRequest:
                throw new Exception(strResponse);

            case System.Net.HttpStatusCode.InternalServerError:
                throw new Exception("Server error");
            }
            Debug.WriteLine(strResponse);
            var sensor = JsonConvert.DeserializeObject <SensorModel>(strResponse);

            return(sensor);
        }