func TestProjectFromName(t *testing.T) { var want = goship.Project{Name: "TestProject"} projects := []goship.Project{want} got, err := goship.ProjectFromName(projects, "TestProject") if err != nil { t.Fatal(err) } if !reflect.DeepEqual(got, &want) { t.Errorf("goship.GetProjectFromName = %v, want %v", got, want) } got, err = goship.ProjectFromName(projects, "BadProject") if err == nil { t.Errorf("goship.GetProjectFromName error case did not error") } }
func ProjCommitsHandler(w http.ResponseWriter, r *http.Request, projName string) { c, err := goship.ParseETCD(etcd.NewClient([]string{*ETCDServer})) if err != nil { log.Println("ERROR: Parsing etc ", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } u, err := getUser(r) if err != nil { log.Println("ERROR: Getting User", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } proj, err := goship.ProjectFromName(c.Projects, projName) if err != nil { log.Println("ERROR: Getting Project from name", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } // Remove projects that the user is not a collaborator on... fp := removeUnauthorizedProjects([]goship.Project{*proj}, r, u) p, err := retrieveCommits(r, fp[0], c.DeployUser) if err != nil { log.Println("ERROR: Retrieving Commits ", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } j, err := json.Marshal(p) if err != nil { log.Println("ERROR: Marshalling Retrieving Commits ", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } w.Header().Set("Content-Type", "application/json") _, err = w.Write(j) if err != nil { log.Println("ERROR: ", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } }
func (h ProjCommitsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request, projName string) { c, err := goship.ParseETCD(h.ecl) if err != nil { log.Println("ERROR: Parsing etc ", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } u, err := auth.CurrentUser(r) if err != nil { log.Println("ERROR: Getting User", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } proj, err := goship.ProjectFromName(c.Projects, projName) if err != nil { log.Println("ERROR: Getting Project from name", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } // Remove projects that the user is not a collaborator on... fp := acl.ReadableProjects(h.ac, []goship.Project{*proj}, u) p, err := retrieveCommits(h.gcl, h.ac, r, fp[0], c.DeployUser) if err != nil { log.Println("ERROR: Retrieving Commits ", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } j, err := json.Marshal(p) if err != nil { log.Println("ERROR: Marshalling Retrieving Commits ", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } w.Header().Set("Content-Type", "application/json") _, err = w.Write(j) if err != nil { log.Println("ERROR: ", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } }