Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(442)

Unified Diff: milo/appengine/common/gitiles/gitiles.go

Issue 2949783002: [milo] appengine/* -> * (Closed)
Patch Set: rebase Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « milo/appengine/common/funcs_test.go ('k') | milo/appengine/common/middleware.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: milo/appengine/common/gitiles/gitiles.go
diff --git a/milo/appengine/common/gitiles/gitiles.go b/milo/appengine/common/gitiles/gitiles.go
deleted file mode 100644
index fc05a12237b5f6fd242b33621f61ea93b5f3a11f..0000000000000000000000000000000000000000
--- a/milo/appengine/common/gitiles/gitiles.go
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright 2016 The LUCI Authors. All rights reserved.
-// Use of this source code is governed under the Apache License, Version 2.0
-// that can be found in the LICENSE file.
-
-package gitiles
-
-import (
- "encoding/json"
- "fmt"
- "net/http"
- "net/url"
- "strings"
-
- "github.com/luci/luci-go/milo/api/resp"
- "github.com/luci/luci-go/server/auth"
- "golang.org/x/net/context"
-)
-
-// Repo defines a git repository.
-type Repo struct {
- // Server is the full path to a git repository. Server must start with https://
- // and should not end with .git.
- Server string
- // Branch specifies a treeish of a git repository. This is generally a branch.
- Branch string
-}
-
-// Author is the author returned from a gitiles log request.
-type Author struct {
- Name string `json:"name"`
- Email string `json:"email"`
- Time string `json:"time"`
-}
-
-// Committer is the committer information returned from a gitiles log request.
-type Committer struct {
- Name string `json:"name"`
- Email string `json:"email"`
- Time string `json:"time"`
-}
-
-// Log is the Log information of a commit returned from a gitiles log request.
-type Log struct {
- Commit string `json:"commit"`
- Tree string `json:"tree"`
- Parents []string `json:"parents"`
- Author Author `json:"author"`
- Committer Committer `json:"committer"`
- Message string `json:"message"`
-}
-
-// Commit is the JSON response from querying gitiles for a log request.
-type Commit struct {
- Log []Log `json:"log"`
- Next string `json:"next"`
-}
-
-// fixURL validates and normalizes a repoURL and treeish, and returns the
-// log JSON gitiles URL.
-func fixURL(repoURL, treeish string) (string, error) {
- u, err := url.Parse(repoURL)
- if err != nil {
- return "", err
- }
- if u.Scheme != "https" {
- return "", fmt.Errorf("%s should start with https://", repoURL)
- }
- if !strings.HasSuffix(u.Host, ".googlesource.com") {
- return "", fmt.Errorf("Only .googlesource.com repos supported")
- }
- // Use the authenticated URL
- u.Path = "a/" + u.Path
- URL := fmt.Sprintf("%s/+log/%s?format=JSON", u.String(), treeish)
- return URL, nil
-}
-
-// GetCommits returns a list of commits based on a repo and treeish (usually
-// a branch). This should be equivilent of a "git log <treeish>" call in
-// that repository.
-func GetCommits(c context.Context, repoURL, treeish string, limit int) ([]resp.Commit, error) {
- // TODO(hinoka): Respect the limit.
- URL, err := fixURL(repoURL, treeish)
- if err != nil {
- return nil, err
- }
- t, err := auth.GetRPCTransport(c, auth.NoAuth)
- if err != nil {
- return nil, err
- }
- client := http.Client{Transport: t}
- r, err := client.Get(URL)
- if err != nil {
- return nil, err
- }
- if r.StatusCode != 200 {
- return nil, fmt.Errorf("Failed to fetch %s, status code %d", URL, r.StatusCode)
- }
- defer r.Body.Close()
- // Strip out the jsonp header, which is ")]}'"
- trash := make([]byte, 4)
- r.Body.Read(trash) // Read the jsonp header
- commits := Commit{}
- if err := json.NewDecoder(r.Body).Decode(&commits); err != nil {
- return nil, err
- }
- // TODO(hinoka): If there is a page and we have gotten less than the limit,
- // keep making requests for the next page until we have enough commits.
-
- // Move things into our own datastructure.
- result := make([]resp.Commit, len(commits.Log))
- for i, log := range commits.Log {
- result[i] = resp.Commit{
- AuthorName: log.Author.Name,
- AuthorEmail: log.Author.Email,
- Repo: repoURL,
- Revision: resp.NewLink(log.Commit, repoURL+"/+/"+log.Commit),
- Description: log.Message,
- Title: strings.SplitN(log.Message, "\n", 2)[0],
- // TODO(hinoka): Fill in the rest of resp.Commit and add those details
- // in the html.
- }
- }
- return result, nil
-}
« no previous file with comments | « milo/appengine/common/funcs_test.go ('k') | milo/appengine/common/middleware.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698