Example #1
0
        private void InitializeTagList(string page)
        {
            string tagUri = StackApi.CreateRequestUri("tags", new Dictionary <string, string>
            {
                { "site", this.DisplaySite.ApiSiteParameter },
                { "pagesize", "20" },
                { "page", page }
            });
            TagResponse response = StackApi.FireCacheableRequest <TagResponse>(tagUri, 1800);

            string[] tagNames     = response.Tags.Select(x => x.Name).ToArray();
            string   apiTagString = string.Join(";", tagNames);
            string   wikiUri      = StackApi.CreateRequestUri("tags/{apiTagString}/wikis", new Dictionary <string, string>
            {
                { "site", this.DisplaySite.ApiSiteParameter },
                { "apiTagString", apiTagString }
            });
            TagWikiResponse wikiResponse = StackApi.FireCacheableRequest <TagWikiResponse>(wikiUri, 86400);

            foreach (Tag tag in response.Tags)
            {
                TagWiki wiki;
                try
                {
                    wiki = wikiResponse.TagWikis.First(x => x.TagName == tag.Name);
                }
                catch (InvalidOperationException)
                {
                    wiki = new TagWiki();
                }
                UserControl tagElement = new TagPartial(tag, wiki, this.DisplaySite, this.parentFrame);
                this.TagsPanel.Children.Add(tagElement);
            }
        }
        private void InitializeQuestions(string page)
        {
            string questionsUri = StackApi.CreateRequestUri("questions", new Dictionary <string, string>
            {
                { "site", this.DisplaySite.ApiSiteParameter },
                { "pagesize", "50" },
                { "page", page }
            });
            QuestionResponse response = StackApi.FireRequest <QuestionResponse>(questionsUri);

            foreach (Question question in response.Questions)
            {
                this.QuestionsPanel.Children.Add(new QuestionPartial(question, this.DisplaySite));
            }
        }
Example #3
0
        private void FinishedAuth_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            this.FinishedAuth.Text = "Working...";

            HttpWebRequest request = WebRequest.Create($"https://auth.artofcode.co.uk/auth/token?key={App.AuthenticatingGuid}") as HttpWebRequest;

            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    ((MainWindow)Application.Current.MainWindow).ChangeContent(new FinishedAuth(false, "", (int)response.StatusCode));
                    return;
                }

                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DSSToken));
                DSSToken tokenResponse = serializer.ReadObject(response.GetResponseStream()) as DSSToken;

                if (tokenResponse.AccessToken != null)
                {
                    string networkUserUri = StackApi.CreateRequestUri("me/associated", new Dictionary <string, string>
                    {
                        { "access_token", tokenResponse.AccessToken }
                    });
                    NetworkUserResponse accountUsers = StackApi.FireRequest <NetworkUserResponse>(networkUserUri);
                    NetworkUser         displayUser  = accountUsers.NetworkUsers.First();

                    List <Site> sites        = ((MainWindow)Application.Current.MainWindow).GetSitesList();
                    string      apiSiteParam = sites.First(x => x.Name == displayUser.SiteName).ApiSiteParameter;
                    string      userUri      = StackApi.CreateRequestUri("me", new Dictionary <string, string>
                    {
                        { "site", apiSiteParam },
                        { "access_token", tokenResponse.AccessToken }
                    });
                    UserResponse users      = StackApi.FireRequest <UserResponse>(userUri);
                    User         signInUser = users.Users.First();

                    App.SetSignedInUser(signInUser);
                    App.AuthenticatingGuid = Guid.Empty;
                    ((MainWindow)Application.Current.MainWindow).ChangeContent(new FinishedAuth(true, $"{signInUser.DisplayName} ({displayUser.AccountId})", 200));
                    Console.WriteLine(signInUser.DisplayName, displayUser.AccountId);
                }
                else
                {
                    ((MainWindow)Application.Current.MainWindow).ChangeContent(new FinishedAuth(false, "", -1));
                }
            }
        }