async public Task <EtaResponse <List <CatalogHotspot> > > GetCatalogHotspotAsync(EtaApiQueryStringParameterOptions options)
        {
            if (options == null)
            {
                options = new EtaApiQueryStringParameterOptions();
                options.AddParm(EtaApiConstants.EtaApi_Latitude, "55.77012");
                options.AddParm(EtaApiConstants.EtaApi_Longitude, "12.46320");
                options.AddParm(EtaApiConstants.EtaApi_LocationDetermined, UNIXTime.GetTimestamp(DateTime.Now));
                options.AddParm(EtaApiConstants.EtaApi_Geocoded, "0");
                options.AddParm(EtaApiConstants.EtaApi_Accuracy, "0");
                options.AddParm(EtaApiConstants.EtaApi_Ditance, "10000");
            }

            var eta = await ApiRawAsync("/api/v1/catalog/hotspot/list/", options);

            if (eta.HasErrors)
            {
                return(new EtaResponse <List <CatalogHotspot> >(eta.Uri, eta.Error));
            }
            var jsonstr = eta.Result;

            var result = await TaskEx.Run <EtaResponse <List <CatalogHotspot> > >(() =>
            {
                if (!string.IsNullOrWhiteSpace(jsonstr))
                {
                    List <CatalogHotspot> cataloghotSpots = new List <CatalogHotspot>();
                    var json = JsonValue.Parse(jsonstr);
                    cataloghotSpots.Add(CatalogHotspot.FromJson(json["data"] as JsonValue));
                    return(new EtaResponse <List <CatalogHotspot> >(eta.Uri, cataloghotSpots));
                }
                return(new EtaResponse <List <CatalogHotspot> >(eta.Uri, new Exception("json response is null or empty")));
            });

            return(result);
        }
        async public Task <EtaResponse <Catalog> > GetCatalogInfoAsync(string catalogId, string publicKey)
        {
            var options = new EtaApiQueryStringParameterOptions();

            options.AddParm("catalog", catalogId);

            var eta = await ApiRawAsync("/api/v1/catalog/info/", options);

            if (eta.HasErrors)
            {
                return(new EtaResponse <Catalog>(eta.Uri, eta.Error));
            }

            var jsonstr = eta.Result;

            var result = await TaskEx.Run <Catalog>(() =>
            {
                Catalog catalog = null;
                if (!string.IsNullOrWhiteSpace(jsonstr))
                {
                    var json = JsonValue.Parse(jsonstr);
                    catalog  = Catalog.FromJson(json);
                }
                return(catalog);
            });

            return(new EtaResponse <Catalog>(eta.Uri, result));
        }
        async public Task <EtaResponse <Store> > GetStoreInfoAsync(EtaApiQueryStringParameterOptions options)
        {
            if (options == null)
            {
                options = new EtaApiQueryStringParameterOptions();
                options.AddParm("store", "0a63T");
            }

            var eta = await ApiRawAsync("/api/v1/store/info/", options);

            if (eta.HasErrors)
            {
                return(new EtaResponse <Store>(eta.Uri, eta.Error));
            }
            var jsonstr = eta.Result;
            var result  = await TaskEx.Run <EtaResponse <Store> >(() =>
            {
                if (!string.IsNullOrWhiteSpace(jsonstr))
                {
                    var json  = JsonValue.Parse(jsonstr);
                    var store = Store.FromJson(json["data"], isRoot: true);
                    return(new EtaResponse <Store>(eta.Uri, store));
                }
                return(new EtaResponse <Store>(eta.Uri, new Exception("response is null or empty")));
            });

            return(result);
        }
        /// <summary>
        /// Method for getting all dealer
        /// </summary>
        async public Task <EtaResponse <List <Dealer> > > GetDealers(EtaApiQueryStringParameterOptions options)
        {
            EtaApi api = new EtaApi();
            var    eta = await api.ApiRawAsync("/api/v1/dealer/list/", options);

            if (eta.HasErrors)
            {
                //return new EtaResponse<List<Catalog>>(eta.Uri, eta.Error);
            }
            var jsonstr = eta.Result;
            var result  = await TaskEx.Run <EtaResponse <List <Dealer> > >(() =>
            {
                if (!string.IsNullOrWhiteSpace(jsonstr))
                {
                    List <Dealer> dealers = new List <Dealer>();
                    var json = JsonValue.Parse(jsonstr);
                    foreach (var item in json["data"] as JsonArray)
                    {
                        var dealer = Dealer.FromJson(item);
                        dealers.Add(dealer);
                    }
                    return(new EtaResponse <List <Dealer> >(eta.Uri, dealers));
                }
                return(new EtaResponse <List <Dealer> >(eta.Uri, new Exception("json response is null or empty")));
            });

            return(result);
        }
Esempio n. 5
0
        async public Task <EtaResponse <List <Offer> > > GetOfferSearchAsync(EtaApiQueryStringParameterOptions options, string query)
        {
            if (options == null)
            {
                options = new EtaApiQueryStringParameterOptions();

                options.AddParm(EtaApiConstants.EtaApi_Latitude, "55.77012");
                options.AddParm(EtaApiConstants.EtaApi_Longitude, "12.46320");
                options.AddParm(EtaApiConstants.EtaApi_LocationDetermined, UNIXTime.GetTimestamp(DateTime.Now));
                options.AddParm(EtaApiConstants.EtaApi_Geocoded, "0");
                options.AddParm(EtaApiConstants.EtaApi_Accuracy, "0");
                options.AddParm(EtaApiConstants.EtaApi_Ditance, "10000");
            }

            options.AddParm("q", query);

            var eta = await ApiRawAsync("/api/v1/offer/search/", options);

            if (eta.HasErrors)
            {
                return(new EtaResponse <List <Offer> >(eta.Uri, eta.Error));
            }
            var jsonstr = eta.Result;

            var result = await TaskEx.Run <EtaResponse <List <Offer> > >(() =>
            {
                return(ParseOffers(eta.Uri, jsonstr));
            });

            return(result);
        }
Esempio n. 6
0
        async public Task <EtaResponse <JsonValue> > GetOfferInfoAsync(EtaApiQueryStringParameterOptions options)
        {
            if (options == null)
            {
                options = new EtaApiQueryStringParameterOptions();
                options.AddParm("type", "all");
            }

            var eta = await ApiRawAsync("/api/v1/offer/info/", options);

            if (eta.HasErrors)
            {
                return(new EtaResponse <JsonValue>(eta.Uri, eta.Error));
            }

            var jsonstr = eta.Result;

            var result = await TaskEx.Run <EtaResponse <JsonValue> >(() =>
            {
                if (!string.IsNullOrWhiteSpace(jsonstr))
                {
                    var json = JsonValue.Parse(jsonstr);
                    return(new EtaResponse <JsonValue>(eta.Uri, json));
                }
                return(new EtaResponse <JsonValue>(eta.Uri, new Exception("Jsonstr value is null or empty")));
            });

            return(result);
        }
        async public Task <EtaResponse <string> > ApiRawAsync(string resourceUri, EtaApiQueryStringParameterOptions options)
        {
            var requestUri = new Uri(
                new Uri(Resources.Eta_BaseUri),
                resourceUri + options.AsQueryString());

            try
            {
                PreConditionValidation(resourceUri, options);


                var httpClient = HttpWebRequest.CreateHttp(requestUri);
                // http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.allowreadstreambuffering(v=vs.95).aspx
                httpClient.AllowReadStreamBuffering = false;
                httpClient.Method = options.webMethod;
                httpClient.Accept = options.responseType;

                var response = await httpClient.GetResponseAsync();

                var result = await TaskEx.Run <EtaResponse <string> >(() =>
                {
                    if (response != null)
                    {
                        var stream = response.GetResponseStream();
                        if (stream != null)
                        {
                            string json = null;
                            using (var reader = new StreamReader(stream))
                            {
                                json = reader.ReadToEnd();
                            }
                            if (json.StartsWith("<textarea>"))
                            {
                                json = json.Remove(0, 10);
                                json = json.Remove(json.Length - 11, 11);
                            }
                            var header = Header.FromJson(json);
                            return(new EtaResponse <string>(requestUri, json)
                            {
                                Header = header
                            });
                        }
                        else
                        {
                            return(new EtaResponse <string>(requestUri, new Exception("ApiRawAsync: GetResponseStream is null")));
                        }
                    }
                    return(new EtaResponse <string>(requestUri, new Exception("ApiRawAsync: response is null")));
                });

                return(result);
            }
            catch (Exception ex)
            {
                return(new EtaResponse <string>(requestUri, ex));
            }
        }
        private void PreConditionValidation(string resourceUri, EtaApiQueryStringParameterOptions options)
        {
            if (!resourceUri.StartsWith("/api/v1/"))
            {
                throw new ArgumentOutOfRangeException("resourceUri", "API reource must begin with /api/v1/");
            }

            if (options == null)
            {
                throw new ArgumentOutOfRangeException("options", "API option is null");
            }
        }
        async public Task LoadSearchOffers(string q)
        {
            if (string.IsNullOrWhiteSpace(q))
            {
                return;
            }

            if (IsSearchOffersLoading)
            {
                return;
            }
            HasSearchOffers       = null;
            IsSearchOffersLoading = true;

            var options = new EtaApiQueryStringParameterOptions();

            options.AddParm(EtaApiConstants.EtaApi_Latitude, UserViewModel.Location.Latitude.ToString("0.00000"));
            options.AddParm(EtaApiConstants.EtaApi_Longitude, UserViewModel.Location.Longitude.ToString("0.00000"));
            options.AddParm(EtaApiConstants.EtaApi_LocationDetermined, UNIXTime.GetTimestamp(DateTime.Now));
            options.AddParm(EtaApiConstants.EtaApi_Geocoded, UserViewModel.Location.IsGeoCoded ? "0" : "0");
            options.AddParm(EtaApiConstants.EtaApi_Accuracy, "1");//userModel.Location.Accuracy.ToString());
            options.AddParm(EtaApiConstants.EtaApi_Ditance, UserViewModel.Distance.ToString());

            var response = await Api.GetOfferSearchAsync(options, q);

            await Deployment.Current.Dispatcher.InvokeAsync(() =>
            {
                if (OffersSearch.Any())
                {
                    OffersSearch.Clear();
                }
                if (response.HasErrors)
                {
                    IsSearchLoaded = false;
                }
                else
                {
                    foreach (var offer in response.Result)
                    {
                        OffersSearch.Add(offer);
                    }
                    IsSearchLoaded = true;
                }
                HasSearchOffers       = OffersSearch.Any();
                IsSearchOffersLoading = false;
            });
        }
        async public Task LoadSuggestedOffers()
        {
            if (IsSuggestedOffersLoading)
            {
                return;
            }
            IsSuggestedOffersLoading = true;
            HasSuggestedOffers       = null;

            var options = new EtaApiQueryStringParameterOptions();

            options.AddParm(EtaApiConstants.EtaApi_Latitude, UserViewModel.Location.Latitude.ToString("0.00000"));
            options.AddParm(EtaApiConstants.EtaApi_Longitude, UserViewModel.Location.Longitude.ToString("0.00000"));
            options.AddParm(EtaApiConstants.EtaApi_LocationDetermined, UNIXTime.GetTimestamp(DateTime.Now));
            options.AddParm(EtaApiConstants.EtaApi_Geocoded, UserViewModel.Location.IsGeoCoded ? "0" : "0");
            options.AddParm(EtaApiConstants.EtaApi_Accuracy, "0");//userModel.Location.Accuracy.ToString());
            options.AddParm(EtaApiConstants.EtaApi_Ditance, UserViewModel.Distance.ToString());

            options.AddParm("type", "suggested");
            options.AddParm("from", UNIXTime.GetTimestamp(DateTime.Now));
            options.AddParm("to", UNIXTime.GetTimestamp(DateTime.Now.AddDays(14)));

            var response = await Api.GetOfferListAsync(options);

            Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                if (SuggestedOffers.Any())
                {
                    SuggestedOffers.Clear();
                }
                if (response.HasErrors)
                {
                    IsSuggestedOffersLoaded = false;
                }
                else
                {
                    foreach (var offer in response.Result)
                    {
                        SuggestedOffers.Add(offer);
                    }
                    IsSuggestedOffersLoaded = true;
                }
                HasSuggestedOffers       = SuggestedOffers.Any();
                IsSuggestedOffersLoading = false;
            });
        }
        async public Task LoadStoreOffers()
        {
            if (IsStoreOffersLoading)
            {
                return;
            }
            IsStoreOffersLoading = true;

            var options = new EtaApiQueryStringParameterOptions();

            options.AddParm(EtaApiConstants.EtaApi_Latitude, App.ViewModel.UserViewModel.Location.Latitude.ToString("0.00000"));
            options.AddParm(EtaApiConstants.EtaApi_Longitude, App.ViewModel.UserViewModel.Location.Longitude.ToString("0.00000"));
            options.AddParm(EtaApiConstants.EtaApi_LocationDetermined, UNIXTime.GetTimestamp(DateTime.Now));
            options.AddParm(EtaApiConstants.EtaApi_Geocoded, App.ViewModel.UserViewModel.Location.IsGeoCoded ? "0" : "0");
            options.AddParm(EtaApiConstants.EtaApi_Accuracy, "0");//userModel.Location.Accuracy.ToString());
            options.AddParm(EtaApiConstants.EtaApi_Ditance, "700000");
            options.AddParm("store", Store.Id);
            options.AddParm("dealer", Store.Dealer.Id);
            options.AddParm("type", "all");

            var response = await Api.GetOfferListAsync(options);

            Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                if (StoreOffers.Any())
                {
                    StoreOffers.Clear();
                }
                if (response.HasErrors)
                {
                    IsStoreOffersLoaded = false;
                    HasOffers           = false;
                }
                else
                {
                    foreach (var offer in response.Result)
                    {
                        StoreOffers.Add(offer);
                    }
                    IsStoreOffersLoaded = true;
                    HasOffers           = true;
                }
                IsStoreOffersLoading = false;
                ShowText             = !HasOffers;
            });
        }
        async public Task LoadCatalogs()
        {
            if (IsCatalogsLoading || !IsUserViewModelLoaded)
            {
                return;
            }
            IsCatalogsLoading = true;
            hasCatalogs       = null;

            var options = new EtaApiQueryStringParameterOptions();

            options.AddParm(EtaApiConstants.EtaApi_Latitude, UserViewModel.Location.Latitude.ToString("0.00000"));
            options.AddParm(EtaApiConstants.EtaApi_Longitude, UserViewModel.Location.Longitude.ToString("0.00000"));
            options.AddParm(EtaApiConstants.EtaApi_LocationDetermined, UNIXTime.GetTimestamp(DateTime.Now));
            options.AddParm(EtaApiConstants.EtaApi_Geocoded, UserViewModel.Location.IsGeoCoded ? "0" : "0");
            options.AddParm(EtaApiConstants.EtaApi_Accuracy, "0");//userModel.Location.Accuracy.ToString());
            options.AddParm(EtaApiConstants.EtaApi_Ditance, UserViewModel.Distance.ToString());

            var response = await Api.GetCatalogListAsync(options);

            Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                if (Catalogs.Any())
                {
                    Catalogs.Clear();
                }

                if (response.HasErrors)
                {
                    IsCatalogsLoaded = false;
                }
                else
                {
                    foreach (var catalog in response.Result)
                    {
                        Catalogs.Add(catalog);
                    }
                    IsCatalogsLoaded = true;
                }
                HasCatalogs       = Catalogs.Any();
                IsCatalogsLoading = false;
            });
        }
        async public Task <EtaResponse <List <Store> > > GetStoreListAsync(EtaApiQueryStringParameterOptions options)
        {
            // Offer Id el. Catalog id med som key
            if (options == null)
            {
                options = new EtaApiQueryStringParameterOptions();
                options.AddParm(EtaApiConstants.EtaApi_Latitude, "55.77012");
                options.AddParm(EtaApiConstants.EtaApi_Longitude, "12.46320");
                options.AddParm(EtaApiConstants.EtaApi_LocationDetermined, UNIXTime.GetTimestamp(DateTime.Now));
                options.AddParm(EtaApiConstants.EtaApi_Geocoded, "0");
                options.AddParm(EtaApiConstants.EtaApi_Accuracy, "0");
                options.AddParm(EtaApiConstants.EtaApi_Ditance, "10000");
                //options.AddParm(EtaApiConstants.EtaApi_OfferId, "");
                //options.AddParm(EtaApiConstants.EtaApi_CatalogId, "");
                options.AddParm("type", "suggested");
            }

            var eta = await ApiRawAsync("/api/v1/store/list/", options);

            if (eta.HasErrors)
            {
                return(new EtaResponse <List <Store> >(eta.Uri, eta.Error));
            }
            var jsonstr = eta.Result;

            var result = await TaskEx.Run <EtaResponse <List <Store> > >(() =>
            {
                if (!string.IsNullOrWhiteSpace(jsonstr))
                {
                    List <Store> stores = new List <Store>();
                    var json            = JsonValue.Parse(jsonstr);
                    foreach (var item in json["data"] as JsonArray)
                    {
                        var store = Store.FromJson(item, isRoot: true);
                        stores.Add(store);
                    }
                    return(new EtaResponse <List <Store> >(eta.Uri, stores));
                }
                return(new EtaResponse <List <Store> >(eta.Uri, new Exception("JsonValue is null or empty")));
            });

            return(result);
        }
        async public Task LoadStores()
        {
            if (IsStoresLoading)
            {
                return;
            }
            IsStoresLoading = true;
            HasStors        = null;

            var options = new EtaApiQueryStringParameterOptions();

            options.AddParm(EtaApiConstants.EtaApi_Latitude, UserViewModel.Location.Latitude.ToString("0.00000"));
            options.AddParm(EtaApiConstants.EtaApi_Longitude, UserViewModel.Location.Longitude.ToString("0.00000"));
            options.AddParm(EtaApiConstants.EtaApi_LocationDetermined, UNIXTime.GetTimestamp(DateTime.Now));
            options.AddParm(EtaApiConstants.EtaApi_Geocoded, UserViewModel.Location.IsGeoCoded ? "1" : "1");
            options.AddParm(EtaApiConstants.EtaApi_Ditance, UserViewModel.Distance.ToString());

            var response = await Api.GetStoreListAsync(options);

            Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                if (Stores.Any())
                {
                    Stores.Clear();
                }
                if (response.HasErrors)
                {
                    IsStoresLoaded = false;
                }
                else
                {
                    foreach (var store in response.Result)
                    {
                        Stores.Add(store);
                    }
                    IsStoresLoaded = true;
                }
                HasStors        = Stores.Any();
                IsStoresLoading = false;
            });
        }
Esempio n. 15
0
        async public Task GetOfferListSuggested_test()
        {
            var options = new EtaApiQueryStringParameterOptions();

            options.AddParm(EtaApiConstants.EtaApi_Latitude, "55.77012");
            options.AddParm(EtaApiConstants.EtaApi_Longitude, "12.46320");
            options.AddParm(EtaApiConstants.EtaApi_LocationDetermined, UNIXTime.GetTimestamp(DateTime.Now));
            options.AddParm(EtaApiConstants.EtaApi_Geocoded, "0");
            options.AddParm(EtaApiConstants.EtaApi_Accuracy, "50");
            options.AddParm(EtaApiConstants.EtaApi_Ditance, "10000");

            //options.AddParm(EtaApiConstants.EtaApi_OfferId, "");
            options.AddParm("type", "suggested");
            //options.AddParm("api_limit", "100");
            options.AddParm("from", UNIXTime.GetTimestamp(DateTime.Now));
            options.AddParm("to", UNIXTime.GetTimestamp(DateTime.Now.AddDays(14)));

            var api = new EtaSDK.v3.EtaApi();

            var response = await api.GetOfferListAsync(options);

            if (response.HasErrors)
            {
                TestCompleteWithErrorsUISafe("suggeted offers search error: " + response.Error.Message);
            }
            else
            {
                var offers = response.Result;

                if (offers.Any())
                {
                    TestCompleteUISafe();
                }
                else
                {
                    TestCompleteWithErrorsUISafe("Suggested Offers Search result is null or Empty");
                }
            }
        }
Esempio n. 16
0
        async public Task <EtaResponse <List <Offer> > > GetOfferListAsync(EtaApiQueryStringParameterOptions options)
        {
            if (options == null)
            {
                options = new EtaApiQueryStringParameterOptions();
                options.AddParm("from", EtaSDK.Utils.UNIXTime.GetTimestamp(DateTime.Now));
                options.AddParm("to", EtaSDK.Utils.UNIXTime.GetTimestamp(DateTime.Now.AddDays(14)));

                options.AddParm(EtaApiConstants.EtaApi_Latitude, "55.77012");
                options.AddParm(EtaApiConstants.EtaApi_Longitude, "12.46320");
                options.AddParm(EtaApiConstants.EtaApi_LocationDetermined, UNIXTime.GetTimestamp(DateTime.Now));
                options.AddParm(EtaApiConstants.EtaApi_Geocoded, "0");
                options.AddParm(EtaApiConstants.EtaApi_Accuracy, "0");
                options.AddParm(EtaApiConstants.EtaApi_Ditance, "10000");

                //options.AddParm(EtaApiConstants.EtaApi_OfferId, "");
                options.AddParm("store", "5d6dBY"); // 5d6dBY
                options.AddParm("type", "suggested");
            }

            var eta = await ApiRawAsync("/api/v1/offer/list/", options);

            if (eta.HasErrors)
            {
                return(new EtaResponse <List <Offer> >(eta.Uri, eta.Error));
            }

            var jsonstr = eta.Result;

            var result = await TaskEx.Run <EtaResponse <List <Offer> > >(() =>
            {
                return(ParseOffers(eta.Uri, jsonstr));
            });

            return(result);
        }