Tests for CLI (#6)
* Completed List cmd and added API calls * Minor comments and add delete code to pass linting * Typo in descriptions * Minor comments * Validations * Validations-1 * improved branch flag validation * removed build * working after refactory with bad names * Command working, test not working * Corrected creation of service * Finalized structure using service * Deleted tests * cleanup * cleanup * cleanup * removed space with tab * aligned types in model.go * Update model.go * resolved comments * Refactor * removed long descriptions * Working incomplete tests * Completed tests * cleanup * checks * PR comments * PR comments * minor comment issue * minor comment issue * updated tests to work with workflow * Updated tests to support new option service * Improved eror handling for list * Improved error handling * Upgraded go-gh * reusing rest client error
This commit is contained in:
@@ -1,9 +1,7 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
"math"
|
||||
"net/url"
|
||||
"strconv"
|
||||
@@ -15,10 +13,10 @@ import (
|
||||
)
|
||||
|
||||
type ArtifactCacheService interface {
|
||||
GetCacheUsage() float64
|
||||
ListCaches(queryParams url.Values) types.ListApiResponse
|
||||
DeleteCaches(queryParams url.Values) int
|
||||
ListAllCaches(queryParams url.Values, key string) []types.ActionsCache
|
||||
GetCacheUsage() (float64, error)
|
||||
ListCaches(queryParams url.Values) (types.ListApiResponse, error)
|
||||
DeleteCaches(queryParams url.Values) (int, error)
|
||||
ListAllCaches(queryParams url.Values, key string) ([]types.ActionsCache, error)
|
||||
}
|
||||
|
||||
type ArtifactCache struct {
|
||||
@@ -26,66 +24,69 @@ type ArtifactCache struct {
|
||||
repo ghRepo.Repository
|
||||
}
|
||||
|
||||
func NewArtifactCache(repo ghRepo.Repository, command string, version string) ArtifactCacheService {
|
||||
func NewArtifactCache(repo ghRepo.Repository, command string, version string) (ArtifactCacheService, error) {
|
||||
opts := api.ClientOptions{
|
||||
Host: repo.Host(),
|
||||
Headers: map[string]string{"User-Agent": fmt.Sprintf("gh-actions-cache/%s/%s", version, command)},
|
||||
}
|
||||
restClient, err := gh.RESTClient(&opts)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
return nil, err
|
||||
}
|
||||
return &ArtifactCache{HttpClient: restClient, repo: repo}
|
||||
return &ArtifactCache{HttpClient: restClient, repo: repo}, nil
|
||||
}
|
||||
|
||||
func (a *ArtifactCache) GetCacheUsage() float64 {
|
||||
func (a *ArtifactCache) GetCacheUsage() (float64, error) {
|
||||
pathComponent := fmt.Sprintf("repos/%s/%s/actions/cache/usage", a.repo.Owner(), a.repo.Name())
|
||||
var apiResults types.RepoLevelUsageApiResponse
|
||||
err := a.HttpClient.Get(pathComponent, &apiResults)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
return -1, err
|
||||
}
|
||||
|
||||
return apiResults.ActiveCacheSizeInBytes
|
||||
return apiResults.ActiveCacheSizeInBytes, nil
|
||||
}
|
||||
|
||||
func (a *ArtifactCache) ListCaches(queryParams url.Values) types.ListApiResponse {
|
||||
func (a *ArtifactCache) ListCaches(queryParams url.Values) (types.ListApiResponse, error) {
|
||||
pathComponent := fmt.Sprintf("repos/%s/%s/actions/caches", a.repo.Owner(), a.repo.Name())
|
||||
var apiResults types.ListApiResponse
|
||||
err := a.HttpClient.Get(pathComponent+"?"+queryParams.Encode(), &apiResults)
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
return types.ListApiResponse{}, err
|
||||
}
|
||||
|
||||
return apiResults
|
||||
return apiResults, nil
|
||||
}
|
||||
|
||||
func (a *ArtifactCache) DeleteCaches(queryParams url.Values) int {
|
||||
func (a *ArtifactCache) DeleteCaches(queryParams url.Values) (int, error) {
|
||||
pathComponent := fmt.Sprintf("repos/%s/%s/actions/caches", a.repo.Owner(), a.repo.Name())
|
||||
var apiResults types.DeleteApiResponse
|
||||
err := a.HttpClient.Delete(pathComponent+"?"+queryParams.Encode(), &apiResults)
|
||||
if err != nil {
|
||||
var httpError api.HTTPError
|
||||
if errors.As(err, &httpError) && httpError.StatusCode == 404 {
|
||||
return 0
|
||||
} else {
|
||||
log.Fatal(err)
|
||||
}
|
||||
return 0, err
|
||||
}
|
||||
return apiResults.TotalCount
|
||||
return apiResults.TotalCount, nil
|
||||
}
|
||||
|
||||
func (a *ArtifactCache) ListAllCaches(queryParams url.Values, key string) []types.ActionsCache {
|
||||
func (a *ArtifactCache) ListAllCaches(queryParams url.Values, key string) ([]types.ActionsCache, error) {
|
||||
var listApiResponse types.ListApiResponse
|
||||
listApiResponse = a.ListCaches(queryParams)
|
||||
listApiResponse, err := a.ListCaches(queryParams)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
caches := listApiResponse.ActionsCaches
|
||||
totalCaches := listApiResponse.TotalCount
|
||||
if totalCaches > 100 {
|
||||
for page := 2; page <= int(math.Ceil(float64(listApiResponse.TotalCount)/100)); page++ {
|
||||
queryParams.Set("page", strconv.Itoa(page))
|
||||
listApiResponse = a.ListCaches(queryParams)
|
||||
listApiResponse, err := a.ListCaches(queryParams)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
caches = append(caches, listApiResponse.ActionsCaches...)
|
||||
}
|
||||
}
|
||||
return caches
|
||||
return caches, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user