From 5808c118ea0eb4644063a57915d96bd79ca6f049 Mon Sep 17 00:00:00 2001 From: Glenn Lewis Date: Fri, 4 Mar 2016 14:24:19 -0800 Subject: [PATCH] go-github: add support for getting content of a repository's license Fixes #228 Fixes #301 Change-Id: I43d414332baa87b430487ea03d125633f8e40bd5 --- github/repos.go | 19 +++++++++++++++++++ github/repos_test.go | 25 +++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/github/repos.go b/github/repos.go index cba160c..e039aca 100644 --- a/github/repos.go +++ b/github/repos.go @@ -538,3 +538,22 @@ func (s *RepositoriesService) EditBranch(owner, repo, branchName string, branch return b, resp, err } + +// License gets the contents of a repository's license if one is detected. +// +// GitHub API docs: https://developer.github.com/v3/licenses/#get-the-contents-of-a-repositorys-license +func (s *RepositoriesService) License(owner, repo string) (*License, *Response, error) { + u := fmt.Sprintf("repos/%v/%v/license", owner, repo) + req, err := s.client.NewRequest("GET", u, nil) + if err != nil { + return nil, nil, err + } + + r := &Repository{} + resp, err := s.client.Do(req, r) + if err != nil { + return nil, resp, err + } + + return r.License, resp, err +} diff --git a/github/repos_test.go b/github/repos_test.go index daecf0a..3265149 100644 --- a/github/repos_test.go +++ b/github/repos_test.go @@ -456,3 +456,28 @@ func TestRepositoriesService_ListLanguages_invalidOwner(t *testing.T) { _, _, err := client.Repositories.ListLanguages("%", "%") testURLParseError(t, err) } + +func TestRepositoriesService_License(t *testing.T) { + setup() + defer teardown() + + mux.HandleFunc("/repos/o/r/license", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + fmt.Fprint(w, `{"license":{"key":"mit","name":"MIT License","url":"https://api.github.com/licenses/mit","featured":true}}`) + }) + + got, _, err := client.Repositories.License("o", "r") + if err != nil { + t.Errorf("Repositories.License returned error: %v", err) + } + + want := &License{ + Name: String("MIT License"), + Key: String("mit"), + URL: String("https://api.github.com/licenses/mit"), + Featured: Bool(true), + } + if !reflect.DeepEqual(got, want) { + t.Errorf("Repositories.License returned %+v, want %+v", got, want) + } +}