Exemplo n.º 1
0
        internal static async Task <string> SaveClientDataAsync(ClientData clientData)
        {
            var result = "Done:)";

            try
            {
                var data    = JsonConvert.SerializeObject(clientData);
                var current = await DataGetter.GetClientData();

                if (current.ClientId.Equals("") && current.ClientSecret.Equals("") &&
                    current.Login.Equals("") && current.Password.Equals(""))
                {
                    using (var file = File.CreateText(DataGetter.ClientDataPath))
                    {
                        await file.WriteAsync(data);
                    }
                }
                else
                {
                    result = "Data is not empty!";
                }
            }
            catch (Exception ex)
            {
                return($"Error: {ex.Message}! {ex.StackTrace}");
            }
            return(result);
        }
Exemplo n.º 2
0
        public static async Task <GitHubClient> GetClient()
        {
            var cd = await DataGetter.GetClientData();

            var c = new GitHubClient(new ProductHeaderValue("TopRated-Badges-for-GitHub-by-elv1s42"));

            if (!cd.Login.Equals("") && !cd.Password.Equals(""))
            {
                c.Connection.Credentials = new Credentials(cd.Login, cd.Password);
            }
            return(c);
        }
Exemplo n.º 3
0
        private async Task <string> GetOauthLoginUrl()
        {
            var csrf = Membership.GeneratePassword(24, 1);

            Session["CSRF:State"] = csrf;

            var cd = await DataGetter.GetClientData();

            var request = new OauthLoginRequest(cd.ClientId)
            {
                Scopes = { "user", "notifications" },
                State  = csrf
            };
            var oauthLoginUrl = _client.Oauth.GetGitHubLoginUrl(request);

            return(oauthLoginUrl.ToString());
        }
Exemplo n.º 4
0
        private static async Task <string> LoadJsonString(string url)
        {
            var json = "";

            using (var wc = new WebClient())
            {
                var  count = 0;
                bool success;
                do
                {
                    success = false;
                    count++;
                    try
                    {
                        Debug.WriteLine($"try #{count}");
                        var cd = await DataGetter.GetClientData();

                        var credentials = Convert.ToBase64String(
                            Encoding.ASCII.GetBytes(cd.Login + ":" + cd.Password));
                        Debug.WriteLine($"CR: {credentials} " + cd.Login + ":" + cd.Password);
                        wc.Headers[HttpRequestHeader.Authorization] = $"Basic {credentials}";
                        wc.Proxy = null;
                        wc.Headers.Add(HttpRequestHeader.Accept, "application/xml");
                        wc.Headers.Add(HttpRequestHeader.ContentType, "application/xml; charset=utf-8");
                        wc.Headers.Add(HttpRequestHeader.Authorization, "Basic " + credentials);
                        wc.Credentials = new NetworkCredential(cd.Login, cd.Password);

                        //wc.Headers.Add("User-Agent: Other");
                        Debug.WriteLine($"GETTING: {url}");
                        var r = await wc.DownloadStringTaskAsync(url);

                        json    = r;
                        success = true;
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine($"{ex.Message} in {ex.StackTrace}");
                        Debug.WriteLine($"Inner: {ex.InnerException?.Message} in {ex.InnerException?.StackTrace}");
                    }
                } while (!success && count <= 5);
            }
            return(json.Equals("") ? "" : json);
        }
Exemplo n.º 5
0
        public async Task <ActionResult> Authorize(string code, string state)
        {
            if (!string.IsNullOrEmpty(code))
            {
                var expectedState = Session["CSRF:State"] as string;
                if (state != expectedState)
                {
                    throw new InvalidOperationException("SECURITY FAIL!");
                }
                Session["CSRF:State"] = null;

                var cd = await DataGetter.GetClientData();

                var token = await _client.Oauth.CreateAccessToken(
                    new OauthTokenRequest(cd.ClientId, cd.ClientSecret, code));

                Session["OAuthToken"] = token.AccessToken;
            }

            return(RedirectToAction("Badges"));
        }