github

package
v2.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 4, 2026 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckDeleteRepoPermissions

func CheckDeleteRepoPermissions(ctx context.Context, client *github.Client) (bool, error)

func DisplayRateLimit

func DisplayRateLimit(ctx context.Context, client *github.Client)
func ExtractLinks(text string) []string

func FetchCommits

func FetchCommits(ctx context.Context, client *github.Client, owner, repo string, isFork bool, since *time.Time, checkSecrets bool, findLinks bool, cfg *Config) ([]models.CommitInfo, error)

func FetchExternalContributions

func FetchExternalContributions(ctx context.Context, pool *ClientPool, username string, checkSecrets bool, cfg *Config) (map[string]*models.EmailDetails, error)

func FetchGists

func FetchGists(ctx context.Context, client *github.Client, username string, cfg *Config) ([]*github.Gist, error)

FetchGists retrieves all public gists for a given username

func FetchOrgRepos

func FetchOrgRepos(ctx context.Context, client *github.Client, orgName string, cfg *Config) ([]*github.Repository, error)

based: unified repo fetching for orgs

func FetchRepos

func FetchRepos(ctx context.Context, client *github.Client, username string, cfg *Config) ([]*github.Repository, error)

func FetchReposWithUser

func FetchReposWithUser(ctx context.Context, client *github.Client, username string, cfg *Config, user *github.User) ([]*github.Repository, error)

func GetGithubClient

func GetGithubClient(token string) *github.Client

func GetToken

func GetToken(c *cli.Context) string

func GetUserByEmail

func GetUserByEmail(ctx context.Context, client *github.Client, email string) (*github.User, error)

func GetUsernameForEmail

func GetUsernameForEmail(ctx context.Context, client *github.Client, email string) (string, error)

func GetUsernameFromEmailSpoof

func GetUsernameFromEmailSpoof(ctx context.Context, client *github.Client, email string, token string) (string, error)

func IsOrganization

func IsOrganization(ctx context.Context, client *github.Client, name string) (bool, error)

IsOrganization checks if the given name belongs to a GitHub organization

func IsValidEmail

func IsValidEmail(input string) bool

func ProcessCommit

func ProcessCommit(commit *gh.RepositoryCommit, checkSecrets bool, cfg *Config) models.CommitInfo

func ProcessGists

func ProcessGists(ctx context.Context, pool *ClientPool, gists []*gh.Gist, checkSecrets bool, cfg *Config) map[string]*models.EmailDetails

func ProcessRepos

func ProcessRepos(ctx context.Context, pool *ClientPool, repos []*gh.Repository, checkSecrets bool, cfg *Config, targetUserIdentifiers map[string]bool, showTargetOnly bool) map[string]*models.EmailDetails

func ProcessReposLimited

func ProcessReposLimited(ctx context.Context, pool *ClientPool, repos []*gh.Repository, checkSecrets bool, cfg *Config, targetUserIdentifiers map[string]bool, showTargetOnly bool) map[string]*models.EmailDetails

func ProcessReposStreaming

func ProcessReposStreaming(ctx context.Context, pool *ClientPool, repos []*gh.Repository, checkSecrets bool, cfg *Config, targetUserIdentifiers map[string]bool, showTargetOnly bool, updateChan chan<- EmailUpdate) map[string]*models.EmailDetails

func ProcessUserEvents

func ProcessUserEvents(ctx context.Context, pool *ClientPool, username string, checkSecrets bool, cfg *Config, targetUserIdentifiers map[string]bool, showTargetOnly bool) map[string]*models.EmailDetails

func RateLimitedProcessRepos

func RateLimitedProcessRepos(ctx context.Context, pool *ClientPool, repos []*gh.Repository, checkSecrets bool, cfg *Config, targetUserIdentifiers map[string]bool, showTargetOnly bool, updateChan chan<- EmailUpdate) map[string]*models.EmailDetails

func ReadProxyFile

func ReadProxyFile(path string) ([]string, error)

func ReadTokenFile

func ReadTokenFile(path string) ([]string, error)

func UserExists

func UserExists(ctx context.Context, client *github.Client, username string) (bool, error)

func ValidateToken

func ValidateToken(ctx context.Context, client *github.Client) error

Types

type ClientPool

type ClientPool struct {
	// contains filtered or unexported fields
}

func NewClientPool

func NewClientPool(tokens []string, proxies []string) (*ClientPool, error)

func (*ClientPool) AllClients

func (p *ClientPool) AllClients() []*ManagedClient

func (*ClientPool) DisplayPoolRateLimit

func (p *ClientPool) DisplayPoolRateLimit(ctx context.Context)

func (*ClientPool) GetClient

func (p *ClientPool) GetClient() *ManagedClient

func (*ClientPool) PrimaryToken

func (p *ClientPool) PrimaryToken() string

func (*ClientPool) Size

func (p *ClientPool) Size() int

type Config

type Config struct {
	MaxRepos              int
	MaxGists              int
	MaxCommits            int
	ShowInteresting       bool
	MaxConcurrentRequests int
	PerPage               int
	SkipNodeModules       bool
	QuickMode             bool
	TimestampAnalysis     bool
	IncludeForks          bool
}

Config holds configuration for GitHub operations

func DefaultConfig

func DefaultConfig() Config

DefaultConfig returns a default configuration

type EmailUpdate

type EmailUpdate struct {
	Email    string
	Details  *models.EmailDetails
	RepoName string
}

type ExternalCommit

type ExternalCommit struct {
	Email      string
	Name       string
	Repository string
	CommitInfo models.CommitInfo
}

type ManagedClient

type ManagedClient struct {
	Client *gh.Client
	Token  string
	Proxy  string
	// contains filtered or unexported fields
}

func (*ManagedClient) Remaining

func (mc *ManagedClient) Remaining() int

func (*ManagedClient) ResetAt

func (mc *ManagedClient) ResetAt() time.Time

func (*ManagedClient) UpdateRateLimit

func (mc *ManagedClient) UpdateRateLimit(remaining int, resetAt time.Time)

type RateLimit

type RateLimit struct {
	Limit     int
	Remaining int
	ResetTime time.Time
}

func GetRateLimit

func GetRateLimit(ctx context.Context, client *github.Client) (*RateLimit, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL