aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/google/go-github/github/search.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/google/go-github/github/search.go')
-rw-r--r--vendor/github.com/google/go-github/github/search.go41
1 files changed, 39 insertions, 2 deletions
diff --git a/vendor/github.com/google/go-github/github/search.go b/vendor/github.com/google/go-github/github/search.go
index 579a57d..8fd9430 100644
--- a/vendor/github.com/google/go-github/github/search.go
+++ b/vendor/github.com/google/go-github/github/search.go
@@ -21,6 +21,7 @@ type SearchService service
type SearchOptions struct {
// How to sort the search results. Possible values are:
// - for repositories: stars, fork, updated
+ // - for commits: author-date, committer-date
// - for code: indexed
// - for issues: comments, created, updated
// - for users: followers, repositories, joined
@@ -54,6 +55,37 @@ func (s *SearchService) Repositories(query string, opt *SearchOptions) (*Reposit
return result, resp, err
}
+// CommitsSearchResult represents the result of a commits search.
+type CommitsSearchResult struct {
+ Total *int `json:"total_count,omitempty"`
+ IncompleteResults *bool `json:"incomplete_results,omitempty"`
+ Commits []*CommitResult `json:"items,omitempty"`
+}
+
+// CommitResult represents a commit object as returned in commit search endpoint response.
+type CommitResult struct {
+ Hash *string `json:"hash,omitempty"`
+ Message *string `json:"message,omitempty"`
+ AuthorID *int `json:"author_id,omitempty"`
+ AuthorName *string `json:"author_name,omitempty"`
+ AuthorEmail *string `json:"author_email,omitempty"`
+ AuthorDate *Timestamp `json:"author_date,omitempty"`
+ CommitterID *int `json:"committer_id,omitempty"`
+ CommitterName *string `json:"committer_name,omitempty"`
+ CommitterEmail *string `json:"committer_email,omitempty"`
+ CommitterDate *Timestamp `json:"committer_date,omitempty"`
+ Repository *Repository `json:"repository,omitempty"`
+}
+
+// Commits searches commits via various criteria.
+//
+// GitHub API Docs: https://developer.github.com/v3/search/#search-commits
+func (s *SearchService) Commits(query string, opt *SearchOptions) (*CommitsSearchResult, *Response, error) {
+ result := new(CommitsSearchResult)
+ resp, err := s.search("commits", query, opt, result)
+ return result, resp, err
+}
+
// IssuesSearchResult represents the result of an issues search.
type IssuesSearchResult struct {
Total *int `json:"total_count,omitempty"`
@@ -136,7 +168,7 @@ func (s *SearchService) Code(query string, opt *SearchOptions) (*CodeSearchResul
}
// Helper function that executes search queries against different
-// GitHub search types (repositories, code, issues, users)
+// GitHub search types (repositories, commits, code, issues, users)
func (s *SearchService) search(searchType string, query string, opt *SearchOptions, result interface{}) (*Response, error) {
params, err := qs.Values(opt)
if err != nil {
@@ -150,7 +182,12 @@ func (s *SearchService) search(searchType string, query string, opt *SearchOptio
return nil, err
}
- if opt != nil && opt.TextMatch {
+ switch {
+ case searchType == "commits":
+ // Accept header for search commits preview endpoint
+ // TODO: remove custom Accept header when this API fully launches.
+ req.Header.Set("Accept", mediaTypeCommitSearchPreview)
+ case opt != nil && opt.TextMatch:
// Accept header defaults to "application/vnd.github.v3+json"
// We change it here to fetch back text-match metadata
req.Header.Set("Accept", "application/vnd.github.v3.text-match+json")