public async Task <IEnumerable <string> > GetSuggestionsAsync(IComponentConfiguration config)
        {
            var credentialName = config[nameof(IHasCredentials.CredentialName)];

            if (string.IsNullOrEmpty(credentialName))
            {
                return(Enumerable.Empty <string>());
            }

            var credentials = GitHubCredentials.TryCreate(credentialName, config);

            if (credentials == null)
            {
                return(Enumerable.Empty <string>());
            }

            string ownerName = AH.CoalesceString(credentials.OrganizationName, credentials.UserName);

            if (string.IsNullOrEmpty(ownerName))
            {
                return(Enumerable.Empty <string>());
            }

            var client = new GitHubClient(credentials.ApiUrl, credentials.UserName, credentials.Password, credentials.OrganizationName);

            var orgs = await client.GetOrganizationsAsync(CancellationToken.None).ConfigureAwait(false);

            var names = from m in orgs
                        let name = m["login"]?.ToString()
                                   where !string.IsNullOrEmpty(name)
                                   select name;

            return(names);
        }
Exemplo n.º 2
0
        public string SendGist(string fileName, string content, string description, bool isPublic, GitHubCredentials credentials)
        {
            var gistAsJson = new CreatesGistMessages().CreateMessage(fileName, content, description, isPublic);

            using (var stream = new MemoryStream())
            {
                var request = new FluentHttpRequest()
                    .BaseUrl("https://api.github.com")
                    .ResourcePath("/gists")
                    .Method("POST")
                    .Headers(h => h.Add("User-Agent", "Gister"))
                    .Headers(h => h.Add("Content-Type", "application/json"))
                    .Body(x => x.Append(gistAsJson))
                    .OnResponseHeadersReceived((o, e) => e.SaveResponseIn(stream));

                AppliesGitHubCredentialsToFluentHttpRequest.ApplyCredentials(credentials, request);

                var response = request
                    .Execute();

                if (response.Response.HttpWebResponse.StatusCode != HttpStatusCode.Created)
                    throw new GitHubUnauthorizedException(response.Response.HttpWebResponse.StatusDescription);

                return PeelOutGistHtmlUrl(response);
            }
        }
Exemplo n.º 3
0
        public string SendGist(string fileName, string content, GitHubCredentials credentials)
        {
            var gistAsJson = new CreatesGistMessages().CreateMessage(fileName, content);

            using (var stream = new MemoryStream())
            {
                var request = new FluentHttpRequest()
                              .BaseUrl("https://api.github.com")
                              .ResourcePath("/gists")
                              .Method("POST")
                              .Headers(h => h.Add("User-Agent", "Gister"))
                              .Headers(h => h.Add("Content-Type", "application/json"))
                              .Body(x => x.Append(gistAsJson))
                              .OnResponseHeadersReceived((o, e) => e.SaveResponseIn(stream));

                AppliesGitHubCredentialsToFluentHttpRequest.ApplyCredentials(credentials, request);

                var response = request
                               .Execute();

                if (response.Response.HttpWebResponse.StatusCode != HttpStatusCode.Created)
                {
                    throw new GitHubUnauthorizedException(response.Response.HttpWebResponse.StatusDescription);
                }

                return(PeelOutGistHtmlUrl(response));
            }
        }
Exemplo n.º 4
0
        public string SendGist(string fileName, string content,string description,bool isPublic, GitHubCredentials credentials)
        {
            LastCredentialsApplied = credentials;

            if (ShouldThrow())
                throw new GitHubUnauthorizedException(failureStatusDescription);

            SentAGist = true;

            return ResultingUrl;
        }
Exemplo n.º 5
0
        public void Cache(GitHubCredentials credentials)
        {
            var userCredentials = credentials as GitHubUserCredentials;
            if (userCredentials == null) return;

            var path = GetPathToCredentialsFile();

            PurgeAnyCache();

            File.WriteAllLines(path, new[] { Encrypt(userCredentials.Username), Encrypt(userCredentials.Password) });
        }
        public async Task <bool> SaveAsync(GitHubCredentials gitHubCredentials)
        {
            var id           = $"{_objectType}::{gitHubCredentials.UserId}";
            var objectToSave = new CosmosObject <GitHubCredentials>
            {
                Id   = id,
                Item = gitHubCredentials
            };

            await _cosmosContainer.UpsertItemAsync(objectToSave, new PartitionKey(_objectType));

            return(true);
        }
Exemplo n.º 7
0
        public string SendGist(string fileName, string content, string description, bool isPublic, GitHubCredentials credentials)
        {
            LastCredentialsApplied = credentials;

            if (ShouldThrow())
            {
                throw new GitHubUnauthorizedException(failureStatusDescription);
            }

            SentAGist = true;

            return(ResultingUrl);
        }
        public static void ApplyCredentials(GitHubCredentials credentials, FluentHttpRequest request)
        {
            var map = new Dictionary<Type, CredentialVisitor>()
                          {
                              {typeof (AnonymousGitHubCredentials), new AnonymousGitHubCredentialsForFluentHttp()},
                              {typeof (GitHubUserCredentials), new GitHubUserCredentialsForFluentHttp()}
                          };

            var credentialApplier = (from item in map
                                     where item.Key == credentials.GetType()
                                     select item.Value).First();

            credentialApplier.Apply(request, credentials);
        }
Exemplo n.º 9
0
        public void Cache(GitHubCredentials credentials)
        {
            var userCredentials = credentials as GitHubUserCredentials;

            if (userCredentials == null)
            {
                return;
            }

            var path = GetPathToCredentialsFile();

            PurgeAnyCache();

            File.WriteAllLines(path, new[] { Encrypt(userCredentials.Username), Encrypt(userCredentials.Password) });
        }
Exemplo n.º 10
0
        public async Task <IEnumerable <string> > GetSuggestionsAsync(IComponentConfiguration config)
        {
            var credentialName = config["CredentialName"];

            if (string.IsNullOrEmpty(credentialName))
            {
                return(Enumerable.Empty <string>());
            }

            var credentials = GitHubCredentials.TryCreate(credentialName, config);

            if (credentials == null)
            {
                return(Enumerable.Empty <string>());
            }

            string ownerName      = AH.CoalesceString(credentials.OrganizationName, credentials.UserName);
            string repositoryName = AH.CoalesceString(config["RepositoryName"], credentials.RepositoryName);

            if (string.IsNullOrEmpty(ownerName) || string.IsNullOrEmpty(repositoryName))
            {
                return(Enumerable.Empty <string>());
            }

            var client = new GitHubClient(credentials.ApiUrl, credentials.UserName, credentials.Password, credentials.OrganizationName);

            var milestones = await client.GetMilestonesAsync(ownerName, repositoryName, "open", CancellationToken.None).ConfigureAwait(false);

            var titles = from m in milestones
                         let title = m["title"]?.ToString()
                                     where !string.IsNullOrEmpty(title)
                                     select title;

            if (SDK.ProductName == "BuildMaster")
            {
                titles = new[] { "$ReleaseName", "$ReleaseNumber" }.Concat(titles);
            }
            return(titles);
        }
 public void Apply(FluentHttpRequest request, GitHubCredentials credentials)
 {
 }
Exemplo n.º 12
0
 public GithubController(GitHubCredentials credentials)
 {
     _credentials = credentials;
 }
        public void Apply(FluentHttpRequest request, GitHubCredentials credentials)
        {
            var userCreds = (GitHubUserCredentials)credentials;

            request.AuthenticateUsing(new HttpBasicAuthenticator(userCreds.Username, userCreds.Password));
        }
        protected override ExtendedRichDescription GetDescription(IOperationConfiguration config)
        {
            var credentials     = string.IsNullOrEmpty(config[nameof(CredentialName)]) ? null : GitHubCredentials.TryCreate(config[nameof(CredentialName)], config);
            var repositoryOwner = AH.CoalesceString(config[nameof(OrganizationName)], credentials?.OrganizationName, config[nameof(UserName)], credentials?.UserName, "(unknown)");
            var repositoryName  = AH.CoalesceString(config[nameof(RepositoryName)], credentials?.RepositoryName, "(unknown)");

            return(new ExtendedRichDescription(
                       new RichDescription("Set build status on GitHub commit ", new Hilite(config[nameof(CommitHash)]), " to ", new Hilite(config[nameof(Status)])),
                       new RichDescription("in repository ", new Hilite(repositoryOwner), "/", new Hilite(repositoryName))
                       ));
        }
Exemplo n.º 15
0
 public void UseCredentials(GitHubCredentials credentials)
 {
     gitHubCredentials = credentials;
 }
Exemplo n.º 16
0
 public string SendGist(string fileName, string content, GitHubCredentials credentials)
 {
     return "";
 }
Exemplo n.º 17
0
 public string SendGist(string fileName, string content, string description, bool isPublic, GitHubCredentials credentials)
 {
     return("");
 }
Exemplo n.º 18
0
 public string SendGist(string fileName, string content, GitHubCredentials credentials)
 {
     return("");
 }
Exemplo n.º 19
0
 public string SendGist(string fileName, string content,string description,bool isPublic, GitHubCredentials credentials)
 {
     return "";
 }
Exemplo n.º 20
0
 public void UseCredentials(GitHubCredentials credentials)
 {
     gitHubCredentials = credentials;
 }