// GetCC accepts a request to retrieve the latest build // status for the given repository from the datastore and // in CCTray XML format. // // GET /api/badge/:host/:owner/:name/cc.xml // func GetCC(c web.C, w http.ResponseWriter, r *http.Request) { var ctx = context.FromC(c) var ( host = c.URLParams["host"] owner = c.URLParams["owner"] name = c.URLParams["name"] ) w.Header().Set("Content-Type", "application/xml") repo, err := datastore.GetRepoName(ctx, host, owner, name) if err != nil { w.WriteHeader(http.StatusNotFound) return } commits, err := datastore.GetCommitList(ctx, repo, 1, 0) if err != nil || len(commits) == 0 { w.WriteHeader(http.StatusNotFound) return } var link = httputil.GetURL(r) + "/" + repo.Host + "/" + repo.Owner + "/" + repo.Name var cc = model.NewCC(repo, commits[0], link) xml.NewEncoder(w).Encode(cc) }
// GetCommitList accepts a request to retrieve a list // of recent commits by Repo, and retur in JSON format. // // GET /api/repos/:host/:owner/:name/commits?limit=:limit&offset=:offset // func GetCommitList(c web.C, w http.ResponseWriter, r *http.Request) { var ctx = context.FromC(c) var repo = ToRepo(c) var limit = ToLimit(r) var offset = ToOffset(r) commits, err := datastore.GetCommitList(ctx, repo, limit, offset) if err != nil { w.WriteHeader(http.StatusNotFound) return } json.NewEncoder(w).Encode(commits) }