From 63e4038a28098994c9c49d8a08343dcd89c97b8a Mon Sep 17 00:00:00 2001 From: Ronmi Ren Date: Tue, 7 Jan 2025 22:17:16 +0800 Subject: [PATCH] rename and move related codes together --- cmd/serve.go | 2 +- lib/get_file.go | 49 ------------------------------------------------- lib/web.go | 45 ++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 45 insertions(+), 51 deletions(-) delete mode 100644 lib/get_file.go diff --git a/cmd/serve.go b/cmd/serve.go index fd63a8e..37fbfb8 100644 --- a/cmd/serve.go +++ b/cmd/serve.go @@ -47,7 +47,7 @@ var serveCmd = &cobra.Command{ Branch: branch, } - s, err := lib.Run(bind, f) + s, err := lib.UseAPI(bind, f) if err != nil { fmt.Println("cannot create server: ", err) return diff --git a/lib/get_file.go b/lib/get_file.go deleted file mode 100644 index 33c0081..0000000 --- a/lib/get_file.go +++ /dev/null @@ -1,49 +0,0 @@ -package lib - -import ( - "context" - "errors" - "fmt" - "net/http" - "net/url" -) - -type Forgejo struct { - Server url.URL - Token string - Branch string -} - -var ErrNotFound = errors.New("404 not found") - -// headers must ot be nil -func (f *Forgejo) GetFile(ctx context.Context, headers map[string]string, user, repo, branch, file string) (ret *http.Response, err error) { - u := f.Server - u.Path = "/api/v1/repos/" + user + "/" + repo + "/raw/" + file - p := u.Query() - p.Set("ref", branch) - u.RawQuery = p.Encode() - fmt.Println(u.String()) - req, err := http.NewRequestWithContext(ctx, http.MethodGet, u.String(), nil) - if err != nil { - return - } - - for k, v := range headers { - if v == "" { - continue - } - req.Header.Set(k, v) - } - req.Header.Set("Authorization", "token "+f.Token) - resp, err := http.DefaultClient.Do(req) - if err != nil { - return - } - if resp.StatusCode == http.StatusNotFound { - err = ErrNotFound - return - } - - return resp, nil -} diff --git a/lib/web.go b/lib/web.go index bc36158..891ce4d 100644 --- a/lib/web.go +++ b/lib/web.go @@ -1,13 +1,56 @@ package lib import ( + "context" "errors" + "fmt" "io" "net/http" + "net/url" "strings" ) -func Run(bind string, f *Forgejo) (*http.Server, error) { +type Forgejo struct { + Server url.URL + Token string + Branch string +} + +var ErrNotFound = errors.New("404 not found") + +// headers must ot be nil +func (f *Forgejo) GetFile(ctx context.Context, headers map[string]string, user, repo, branch, file string) (ret *http.Response, err error) { + u := f.Server + u.Path = "/api/v1/repos/" + user + "/" + repo + "/raw/" + file + p := u.Query() + p.Set("ref", branch) + u.RawQuery = p.Encode() + fmt.Println(u.String()) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, u.String(), nil) + if err != nil { + return + } + + for k, v := range headers { + if v == "" { + continue + } + req.Header.Set(k, v) + } + req.Header.Set("Authorization", "token "+f.Token) + resp, err := http.DefaultClient.Do(req) + if err != nil { + return + } + if resp.StatusCode == http.StatusNotFound { + err = ErrNotFound + return + } + + return resp, nil +} + +func UseAPI(bind string, f *Forgejo) (*http.Server, error) { if f == nil { return nil, errors.New("forgejo is nil") }