Exemple #1
0
        internal async Task <TraktProfile> GetUserProfile()
        {
            try
            {
                var          userClient = new WebClient();
                TraktProfile profile    = null;
                String       jsonString = await userClient.UploadStringTaskAsync(new Uri("https://api.trakt.tv/user/profile.json/9294cac7c27a4b97d3819690800aa2fedf0959fa/" + AppUser.Instance.UserName), AppUser.createJsonStringForAuthentication());

                using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(jsonString)))
                {
                    if (jsonString.Contains("watching\":[]"))
                    {
                        var ser = new DataContractJsonSerializer(typeof(TraktProfile));

                        profile = (TraktProfile)ser.ReadObject(ms);
                    }
                    else
                    {
                        var ser = new DataContractJsonSerializer(typeof(TraktProfileWithWatching));

                        profile = (TraktProfileWithWatching)ser.ReadObject(ms);
                    }
                }

                return(profile);
            }
            catch (WebException)
            { Debug.WriteLine("WebException in GetUserProfile()."); }
            catch (TargetInvocationException)
            { Debug.WriteLine("TargetInvocationException in GetUserProfile()."); }


            return(null);
        }
Exemple #2
0
        private async Task ProcessOperationAsync(DownloadRichConnectDataOperation operation)
        {
            try
            {
                await ParallelForEach(operation.Ids, async (string remoteId) =>
                {
                    if (remoteId.Contains(","))
                    {
                        remoteId = remoteId.Split(',')[0];
                    }


                    ContactBinding binding = await contactBindingManager.GetContactBindingByRemoteIdAsync(remoteId);
                    TraktProfile tileData  = await new UserController().GetUserProfile(remoteId);

                    binding.TileData       = new ConnectTileData();
                    binding.TileData.Title = tileData.Username;

                    ConnectTileImage tileImage  = new ConnectTileImage();
                    HttpWebRequest request      = (HttpWebRequest)WebRequest.Create(new Uri(tileData.Avatar));
                    HttpWebResponse webResponse = await request.GetResponseAsync() as HttpWebResponse;
                    MemoryStream memoryStream   = new MemoryStream();
                    webResponse.GetResponseStream().CopyTo(memoryStream);
                    IRandomAccessStream stream = await ConvertToRandomAccessStream(memoryStream);
                    await tileImage.SetImageAsync(stream);

                    binding.TileData.Images.Add(tileImage);

                    await contactBindingManager.SaveContactBindingAsync(binding);
                });
            }
            catch (Exception e)
            {
            }
            finally
            {
                NotifyComplete();
            }
        }
Exemple #3
0
        private async void LoadProfile()
        {
            App.TrackEvent("MainPage", "Load profile");


            InitiateSlowServerCounter();

            try
            {
                if (await userController.ValidateUser())
                {
                    TraktProfile profile = await userController.GetUserProfile();

                    if (profile != null)
                    {
                        App.ViewModel.Profile = profile;
                        userController.CreateContactBindingsAsync();

                        LoadWatchingNow();
                    }
                    else
                    {
                        ValidationFailed();
                    }
                }
                else
                {
                    ValidationFailed();
                }
            }
            catch (TaskCanceledException)
            {
                ValidationFailed();
            }

            userValidationTimer.Stop();
        }
Exemple #4
0
        private async void LoadProfile()
        {
            if (!this.Loading)
            {
                this.Loading = true;


                this.indicator = App.ShowLoading(this);
                String id;
                String isAssigned;
                String isKnown;
                NavigationContext.QueryString.TryGetValue("friendid", out id);
                NavigationContext.QueryString.TryGetValue("assigned", out isAssigned);
                NavigationContext.QueryString.TryGetValue("isKnown", out isKnown);
                Boolean isKnownBoolean = false;
                Boolean.TryParse(isKnown, out isKnownBoolean);
                username = id;

                String isTile;
                NavigationContext.QueryString.TryGetValue("isTile", out isTile);

                if (String.IsNullOrEmpty(isTile))
                {
                    if (isKnownBoolean || (AppUser.Instance.Friends != null && AppUser.Instance.Friends.Contains(this.username)))
                    {
                        createUnFollowButton();
                    }
                    else
                    {
                        createFollowButton();
                    }
                }
                else
                {
                    createFollowButton();
                }

                App.FriendViewModel.NotifyPropertyChanged("ShowFollow");
                App.FriendViewModel.NotifyPropertyChanged("ShowUnFollow");

                TraktProfile profile = await userController.GetUserProfile(id);

                if (!String.IsNullOrEmpty(isAssigned) && isAssigned.Equals("true"))
                {
                    ToastNotification.ShowToast("Connected", "Your contact is now linked!");
                    NavigationService.RemoveBackEntry();
                }

                if (profile != null)
                {
                    App.FriendViewModel.Profile = profile;

                    App.FriendViewModel.RefreshProfile();
                    this.Loading             = false;
                    this.indicator.IsVisible = false;
                }
                else
                {
                    this.Loading             = false;
                    this.indicator.IsVisible = false;
                }
            }
        }