| @ -0,0 +1,63 @@ | |||||
| // Copyright 2013 The go-github AUTHORS. All rights reserved. | |||||
| // | |||||
| // Use of this source code is governed by a BSD-style | |||||
| // license that can be found in the LICENSE file. | |||||
| package github | |||||
| import "fmt" | |||||
| // GitignoresService provides access to the gitignore related functions in the | |||||
| // GitHub API. | |||||
| // | |||||
| // GitHub API docs: http://developer.github.com/v3/gitignore/ | |||||
| type GitignoresService struct { | |||||
| client *Client | |||||
| } | |||||
| // Represents a .gitignore file as returned by the GitHub API. | |||||
| type Gitignore struct { | |||||
| Name *string `json:"name,omitempty"` | |||||
| Source *string `json:"source,omitempty"` | |||||
| } | |||||
| func (g Gitignore) String() string { | |||||
| return Stringify(g) | |||||
| } | |||||
| // Fetches a list of all available Gitignore templates. | |||||
| // | |||||
| // http://developer.github.com/v3/gitignore/#listing-available-templates | |||||
| func (s GitignoresService) List() ([]string, *Response, error) { | |||||
| req, err := s.client.NewRequest("GET", "gitignore/templates", nil) | |||||
| if err != nil { | |||||
| return nil, nil, err | |||||
| } | |||||
| availableTemplates := new([]string) | |||||
| resp, err := s.client.Do(req, availableTemplates) | |||||
| if err != nil { | |||||
| return nil, resp, err | |||||
| } | |||||
| return *availableTemplates, resp, err | |||||
| } | |||||
| // Fetches a Gitignore by name. | |||||
| // | |||||
| // http://developer.github.com/v3/gitignore/#get-a-single-template | |||||
| func (s GitignoresService) Get(name string) (*Gitignore, *Response, error) { | |||||
| u := fmt.Sprintf("gitignore/templates/%v", name) | |||||
| req, err := s.client.NewRequest("GET", u, nil) | |||||
| if err != nil { | |||||
| return nil, nil, err | |||||
| } | |||||
| gitignore := new(Gitignore) | |||||
| resp, err := s.client.Do(req, gitignore) | |||||
| if err != nil { | |||||
| return nil, resp, err | |||||
| } | |||||
| return gitignore, resp, err | |||||
| } | |||||
| @ -0,0 +1,58 @@ | |||||
| // Copyright 2013 The go-github AUTHORS. All rights reserved. | |||||
| // | |||||
| // Use of this source code is governed by a BSD-style | |||||
| // license that can be found in the LICENSE file. | |||||
| package github | |||||
| import ( | |||||
| "fmt" | |||||
| "net/http" | |||||
| "reflect" | |||||
| "testing" | |||||
| ) | |||||
| func TestGitignoresService_List(t *testing.T) { | |||||
| setup() | |||||
| defer teardown() | |||||
| mux.HandleFunc("/gitignore/templates", func(w http.ResponseWriter, r *http.Request) { | |||||
| testMethod(t, r, "GET") | |||||
| fmt.Fprint(w, `["C", "Go"]`) | |||||
| }) | |||||
| available, _, err := client.Gitignores.List() | |||||
| if err != nil { | |||||
| t.Errorf("Gitignores.List returned error: %v", err) | |||||
| } | |||||
| want := []string{"C", "Go"} | |||||
| if !reflect.DeepEqual(available, want) { | |||||
| t.Errorf("Gitignores.List returned %+v, want %+v", available, want) | |||||
| } | |||||
| } | |||||
| func TestGitignoresService_Get(t *testing.T) { | |||||
| setup() | |||||
| defer teardown() | |||||
| mux.HandleFunc("/gitignore/templates/name", func(w http.ResponseWriter, r *http.Request) { | |||||
| testMethod(t, r, "GET") | |||||
| fmt.Fprint(w, `{"name":"Name","source":"template source"}`) | |||||
| }) | |||||
| gitignore, _, err := client.Gitignores.Get("name") | |||||
| if err != nil { | |||||
| t.Errorf("Gitignores.List returned error: %v", err) | |||||
| } | |||||
| want := &Gitignore{Name: String("Name"), Source: String("template source")} | |||||
| if !reflect.DeepEqual(gitignore, want) { | |||||
| t.Errorf("Gitignores.Get returned %+v, want %+v", gitignore, want) | |||||
| } | |||||
| } | |||||
| func TestGitignoresService_Get_invalidTemplate(t *testing.T) { | |||||
| _, _, err := client.Gitignores.Get("%") | |||||
| testURLParseError(t, err) | |||||
| } | |||||