1
0
mirror of https://github.com/Jguer/yay synced 2024-07-08 20:36:24 +00:00

chore(http): use client for pkg completions

This commit is contained in:
jguer 2021-05-16 22:45:36 +02:00 committed by J Guerreiro
parent c7cf7baa48
commit a37f4efd73
4 changed files with 23 additions and 12 deletions

6
cmd.go
View File

@ -245,9 +245,11 @@ func handlePrint(cmdArgs *settings.Arguments, dbExecutor db.Executor) error {
quiet := cmdArgs.ExistsArg("q", "quiet")
return news.PrintNewsFeed(config.Runtime.HTTPClient, dbExecutor.LastBuildTime(), config.SortMode, double, quiet)
case cmdArgs.ExistsDouble("c", "complete"):
return completion.Show(dbExecutor, config.AURURL, config.Runtime.CompletionPath, config.CompletionInterval, true)
return completion.Show(config.Runtime.HTTPClient, dbExecutor,
config.AURURL, config.Runtime.CompletionPath, config.CompletionInterval, true)
case cmdArgs.ExistsArg("c", "complete"):
return completion.Show(dbExecutor, config.AURURL, config.Runtime.CompletionPath, config.CompletionInterval, false)
return completion.Show(config.Runtime.HTTPClient, dbExecutor,
config.AURURL, config.Runtime.CompletionPath, config.CompletionInterval, false)
case cmdArgs.ExistsArg("s", "stats"):
return localStatistics(dbExecutor)
}

View File

@ -351,7 +351,8 @@ func install(cmdArgs *settings.Arguments, dbExecutor db.Executor, ignoreProvider
}
go func() {
_ = completion.Update(dbExecutor, config.AURURL, config.Runtime.CompletionPath, config.CompletionInterval, false)
_ = completion.Update(config.Runtime.HTTPClient, dbExecutor,
config.AURURL, config.Runtime.CompletionPath, config.CompletionInterval, false)
}()
err = downloadPkgbuildsSources(do.Aur, incompatible)

View File

@ -2,6 +2,7 @@ package completion
import (
"bufio"
"context"
"fmt"
"io"
"net/http"
@ -20,8 +21,8 @@ type PkgSynchronizer interface {
}
// Show provides completion info for shells
func Show(dbExecutor PkgSynchronizer, aurURL, completionPath string, interval int, force bool) error {
err := Update(dbExecutor, aurURL, completionPath, interval, force)
func Show(httpClient *http.Client, dbExecutor PkgSynchronizer, aurURL, completionPath string, interval int, force bool) error {
err := Update(httpClient, dbExecutor, aurURL, completionPath, interval, force)
if err != nil {
return err
}
@ -37,7 +38,7 @@ func Show(dbExecutor PkgSynchronizer, aurURL, completionPath string, interval in
}
// Update updates completion cache to be used by Complete
func Update(dbExecutor PkgSynchronizer, aurURL, completionPath string, interval int, force bool) error {
func Update(httpClient *http.Client, dbExecutor PkgSynchronizer, aurURL, completionPath string, interval int, force bool) error {
info, err := os.Stat(completionPath)
if os.IsNotExist(err) || (interval != -1 && time.Since(info.ModTime()).Hours() >= float64(interval*24)) || force {
@ -50,7 +51,7 @@ func Update(dbExecutor PkgSynchronizer, aurURL, completionPath string, interval
return errf
}
if createAURList(aurURL, out) != nil {
if createAURList(httpClient, aurURL, out) != nil {
defer os.Remove(completionPath)
}
@ -64,13 +65,19 @@ func Update(dbExecutor PkgSynchronizer, aurURL, completionPath string, interval
}
// CreateAURList creates a new completion file
func createAURList(aurURL string, out io.Writer) error {
func createAURList(client *http.Client, aurURL string, out io.Writer) error {
u, err := url.Parse(aurURL)
if err != nil {
return err
}
u.Path = path.Join(u.Path, "packages.gz")
resp, err := http.Get(u.String())
req, err := http.NewRequestWithContext(context.Background(), "GET", u.String(), nil)
if err != nil {
return err
}
resp, err := client.Do(req)
if err != nil {
return err
}

View File

@ -3,6 +3,7 @@ package completion
import (
"bytes"
"errors"
"net/http"
"testing"
"github.com/stretchr/testify/assert"
@ -39,7 +40,7 @@ func Test_createAURList(t *testing.T) {
Reply(200).
BodyString(samplePackageResp)
out := &bytes.Buffer{}
err := createAURList("https://aur.archlinux.org", out)
err := createAURList(&http.Client{}, "https://aur.archlinux.org", out)
assert.NoError(t, err)
gotOut := out.String()
assert.Equal(t, expectPackageCompletion, gotOut)
@ -52,7 +53,7 @@ func Test_createAURListHTTPError(t *testing.T) {
Get("/packages.gz").
ReplyError(errors.New("Not available"))
out := &bytes.Buffer{}
err := createAURList("https://aur.archlinux.org", out)
err := createAURList(&http.Client{}, "https://aur.archlinux.org", out)
assert.EqualError(t, err, "Get \"https://aur.archlinux.org/packages.gz\": Not available")
}
@ -64,6 +65,6 @@ func Test_createAURListStatusError(t *testing.T) {
Reply(503).
BodyString(samplePackageResp)
out := &bytes.Buffer{}
err := createAURList("https://aur.archlinux.org", out)
err := createAURList(&http.Client{}, "https://aur.archlinux.org", out)
assert.EqualError(t, err, "invalid status code: 503")
}