Browse Source

Add RepositoriesService.GetByID method.

Note: GetByID uses the undocumented GitHub API endpoint /repositories/:id.

Include license preview Accept header.

Helps #329.
Quinn Slack 12 years ago
committed by Dmitri Shuralyov
parent
commit
8f139c86ab
2 changed files with 44 additions and 0 deletions
  1. +23
    -0
      github/repos.go
  2. +21
    -0
      github/repos_test.go

+ 23
- 0
github/repos.go View File

@ -277,6 +277,29 @@ func (s *RepositoriesService) Get(owner, repo string) (*Repository, *Response, e
return repository, resp, err
}
// GetByID fetches a repository.
//
// Note: GetByID uses the undocumented GitHub API endpoint /repositories/:id.
func (s *RepositoriesService) GetByID(id int) (*Repository, *Response, error) {
u := fmt.Sprintf("repositories/%d", id)
req, err := s.client.NewRequest("GET", u, nil)
if err != nil {
return nil, nil, err
}
// TODO: remove custom Accept header when the license support fully launches
// https://developer.github.com/v3/licenses/#get-a-repositorys-license
req.Header.Set("Accept", mediaTypeLicensesPreview)
repository := new(Repository)
resp, err := s.client.Do(req, repository)
if err != nil {
return nil, resp, err
}
return repository, resp, err
}
// Edit updates a repository.
//
// GitHub API docs: http://developer.github.com/v3/repos/#edit


+ 21
- 0
github/repos_test.go View File

@ -222,6 +222,27 @@ func TestRepositoriesService_Get(t *testing.T) {
}
}
func TestRepositoriesService_GetByID(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/repositories/1", func(w http.ResponseWriter, r *http.Request) {
testMethod(t, r, "GET")
testHeader(t, r, "Accept", mediaTypeLicensesPreview)
fmt.Fprint(w, `{"id":1,"name":"n","description":"d","owner":{"login":"l"},"license":{"key":"mit"}}`)
})
repo, _, err := client.Repositories.GetByID(1)
if err != nil {
t.Errorf("Repositories.GetByID returned error: %v", err)
}
want := &Repository{ID: Int(1), Name: String("n"), Description: String("d"), Owner: &User{Login: String("l")}, License: &License{Key: String("mit")}}
if !reflect.DeepEqual(repo, want) {
t.Errorf("Repositories.GetByID returned %+v, want %+v", repo, want)
}
}
func TestRepositoriesService_Edit(t *testing.T) {
setup()
defer teardown()


Loading…
Cancel
Save