update abfapi.AbfJson methods

This commit is contained in:
Sergey Zhemoytel 2024-12-13 23:00:48 +03:00
parent 6b0a21ce87
commit 747e7cb57f

View file

@ -44,9 +44,9 @@ type AbfJson struct {
client *http.Client client *http.Client
} }
func NewAbfJson(abfURL, fileStoreURL, login, password string, logger *log.Logger) (AbfJson, error) { func NewAbfJson(abfURL, fileStoreURL, login, password string, logger *log.Logger) (*AbfJson, error) {
if !strings.HasPrefix(fileStoreURL, "http://") && !strings.HasPrefix(fileStoreURL, "https://") { if !strings.HasPrefix(fileStoreURL, "http://") && !strings.HasPrefix(fileStoreURL, "https://") {
return AbfJson{}, errors.New("file-store URL has to start with \"http(s)://\"") return nil, errors.New("file-store URL has to start with \"http(s)://\"")
} }
cacheDir := filepath.Join(os.TempDir(), "abf_cache") cacheDir := filepath.Join(os.TempDir(), "abf_cache")
@ -62,7 +62,7 @@ func NewAbfJson(abfURL, fileStoreURL, login, password string, logger *log.Logger
lpw := fmt.Sprintf("%s:%s", login, password) lpw := fmt.Sprintf("%s:%s", login, password)
encodedLpw := base64.StdEncoding.EncodeToString([]byte(lpw)) encodedLpw := base64.StdEncoding.EncodeToString([]byte(lpw))
return AbfJson{ return &AbfJson{
login: login, login: login,
password: password, password: password,
abfURL: strings.TrimSuffix(abfURL, "/"), abfURL: strings.TrimSuffix(abfURL, "/"),
@ -106,7 +106,13 @@ func (a *AbfJson) bytesToHuman(n int64, format string, symbols string) string {
} }
func (a *AbfJson) getURLContents(path string, params url.Values, method string, body io.Reader) ([]byte, error) { func (a *AbfJson) getURLContents(path string, params url.Values, method string, body io.Reader) ([]byte, error) {
fullURL := path var fullURL string
if strings.HasPrefix(path, "/api/v1/upload") {
fullURL = a.fileStoreURL + path
} else {
fullURL = a.abfURL + path
}
if len(params) > 0 { if len(params) > 0 {
fullURL += "?" + params.Encode() fullURL += "?" + params.Encode()
} }
@ -141,7 +147,8 @@ func (a *AbfJson) getURLContents(path string, params url.Values, method string,
func (a *AbfJson) processResponse(data []byte) (map[string]interface{}, error) { func (a *AbfJson) processResponse(data []byte) (map[string]interface{}, error) {
var response map[string]interface{} var response map[string]interface{}
if err := json.Unmarshal(data, &response); err != nil { err := json.Unmarshal(data, &response)
if err != nil {
return nil, fmt.Errorf("internal server error: it has returned non-json data") return nil, fmt.Errorf("internal server error: it has returned non-json data")
} }
@ -162,7 +169,7 @@ func (a *AbfJson) processResponse(data []byte) (map[string]interface{}, error) {
} }
func (a *AbfJson) GetArchitectures() (map[string]interface{}, error) { func (a *AbfJson) GetArchitectures() (map[string]interface{}, error) {
data, err := a.getURLContents(a.abfURL+"/api/v1/arches.json", nil, http.MethodGet, nil) data, err := a.getURLContents("/api/v1/arches.json", nil, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -175,7 +182,7 @@ func (a *AbfJson) GetPlatforms(typ string) (map[string]interface{}, error) {
if typ != "" { if typ != "" {
params["type"] = []string{typ} params["type"] = []string{typ}
} }
data, err := a.getURLContents(a.abfURL+"/api/v1/platforms.json", params, http.MethodGet, nil) data, err := a.getURLContents("/api/v1/platforms.json", params, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -185,7 +192,7 @@ func (a *AbfJson) GetPlatforms(typ string) (map[string]interface{}, error) {
func (a *AbfJson) GetPlatformByID(plID int) (map[string]interface{}, error) { func (a *AbfJson) GetPlatformByID(plID int) (map[string]interface{}, error) {
path := fmt.Sprintf("/api/v1/platforms/%d.json", plID) path := fmt.Sprintf("/api/v1/platforms/%d.json", plID)
data, err := a.getURLContents(a.abfURL+path, nil, http.MethodGet, nil) data, err := a.getURLContents(path, nil, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -195,7 +202,7 @@ func (a *AbfJson) GetPlatformByID(plID int) (map[string]interface{}, error) {
func (a *AbfJson) GetUserID(username string) (map[string]interface{}, error) { func (a *AbfJson) GetUserID(username string) (map[string]interface{}, error) {
path := fmt.Sprintf("/api/v1/users/%s.json", username) path := fmt.Sprintf("/api/v1/users/%s.json", username)
data, err := a.getURLContents(a.abfURL+path, nil, http.MethodGet, nil) data, err := a.getURLContents(path, nil, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -204,7 +211,7 @@ func (a *AbfJson) GetUserID(username string) (map[string]interface{}, error) {
} }
func (a *AbfJson) GetBuildPlatforms() (map[string]interface{}, error) { func (a *AbfJson) GetBuildPlatforms() (map[string]interface{}, error) {
data, err := a.getURLContents(a.abfURL+"/api/v1/platforms/platforms_for_build.json", nil, http.MethodGet, nil) data, err := a.getURLContents("/api/v1/platforms/platforms_for_build.json", nil, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -214,7 +221,7 @@ func (a *AbfJson) GetBuildPlatforms() (map[string]interface{}, error) {
func (a *AbfJson) GetRepositoryByID(repID int) (map[string]interface{}, error) { func (a *AbfJson) GetRepositoryByID(repID int) (map[string]interface{}, error) {
path := fmt.Sprintf("/api/v1/repositories/%d.json", repID) path := fmt.Sprintf("/api/v1/repositories/%d.json", repID)
data, err := a.getURLContents(a.abfURL+path, nil, http.MethodGet, nil) data, err := a.getURLContents(path, nil, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -224,7 +231,7 @@ func (a *AbfJson) GetRepositoryByID(repID int) (map[string]interface{}, error) {
func (a *AbfJson) GetBuildListByID(blID int) (map[string]interface{}, error) { func (a *AbfJson) GetBuildListByID(blID int) (map[string]interface{}, error) {
path := fmt.Sprintf("/api/v1/build_lists/%d.json", blID) path := fmt.Sprintf("/api/v1/build_lists/%d.json", blID)
data, err := a.getURLContents(a.abfURL+path, nil, http.MethodGet, nil) data, err := a.getURLContents(path, nil, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -236,7 +243,7 @@ func (a *AbfJson) GetListBuildLists(prjID int, filterQuery url.Values, page int)
filterQuery.Set("page", fmt.Sprintf("%d", page)) filterQuery.Set("page", fmt.Sprintf("%d", page))
filterQuery.Set("per_page", "10") filterQuery.Set("per_page", "10")
path := fmt.Sprintf("/api/v1/build_lists.json") path := fmt.Sprintf("/api/v1/build_lists.json")
data, err := a.getURLContents(a.abfURL+path, filterQuery, http.MethodGet, nil) data, err := a.getURLContents(path, filterQuery, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -248,7 +255,7 @@ func (a *AbfJson) GetProjectBuildLists(prjID int, filterQuery url.Values, page i
filterQuery.Set("page", fmt.Sprintf("%d", page)) filterQuery.Set("page", fmt.Sprintf("%d", page))
filterQuery.Set("per_page", "10") filterQuery.Set("per_page", "10")
path := fmt.Sprintf("/api/v1/projects/%d/build_lists.json", prjID) path := fmt.Sprintf("/api/v1/projects/%d/build_lists.json", prjID)
data, err := a.getURLContents(a.abfURL+path, filterQuery, http.MethodGet, nil) data, err := a.getURLContents(path, filterQuery, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -258,7 +265,7 @@ func (a *AbfJson) GetProjectBuildLists(prjID int, filterQuery url.Values, page i
func (a *AbfJson) GetProjectByID(pID int) (map[string]interface{}, error) { func (a *AbfJson) GetProjectByID(pID int) (map[string]interface{}, error) {
path := fmt.Sprintf("/api/v1/projects/%d.json", pID) path := fmt.Sprintf("/api/v1/projects/%d.json", pID)
data, err := a.getURLContents(a.abfURL+path, nil, http.MethodGet, nil) data, err := a.getURLContents(path, nil, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -268,7 +275,7 @@ func (a *AbfJson) GetProjectByID(pID int) (map[string]interface{}, error) {
func (a *AbfJson) GetProjectIDByName(key [2]string) (map[string]interface{}, error) { func (a *AbfJson) GetProjectIDByName(key [2]string) (map[string]interface{}, error) {
params := url.Values{"name": {key[1]}, "owner": {key[0]}} params := url.Values{"name": {key[1]}, "owner": {key[0]}}
data, err := a.getURLContents(a.abfURL+"/api/v1/projects/get_id.json", params, http.MethodGet, nil) data, err := a.getURLContents("/api/v1/projects/get_id.json", params, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -282,7 +289,7 @@ func (a *AbfJson) NewBuildTask(data map[string]interface{}) (map[string]interfac
return nil, err return nil, err
} }
dataBytes, err := a.getURLContents(a.abfURL+"/api/v1/build_lists.json", nil, http.MethodPost, bytes.NewBuffer(jsonData)) dataBytes, err := a.getURLContents("/api/v1/build_lists.json", nil, http.MethodPost, bytes.NewBuffer(jsonData))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -297,7 +304,7 @@ func (a *AbfJson) Publish(taskID int) (map[string]interface{}, error) {
return nil, err return nil, err
} }
dataBytes, err := a.getURLContents(a.abfURL+path, nil, http.MethodPut, bytes.NewBuffer(jsonData)) dataBytes, err := a.getURLContents(path, nil, http.MethodPut, bytes.NewBuffer(jsonData))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -312,7 +319,7 @@ func (a *AbfJson) NewPullRequest(data map[string]interface{}, pID int) (map[stri
return nil, err return nil, err
} }
dataBytes, err := a.getURLContents(a.abfURL+path, nil, http.MethodPost, bytes.NewBuffer(jsonData)) dataBytes, err := a.getURLContents(path, nil, http.MethodPost, bytes.NewBuffer(jsonData))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -327,7 +334,7 @@ func (a *AbfJson) UpdateProject(data map[string]interface{}, pID int) (map[strin
return nil, err return nil, err
} }
dataBytes, err := a.getURLContents(a.abfURL+path, nil, http.MethodPut, bytes.NewBuffer(jsonData)) dataBytes, err := a.getURLContents(path, nil, http.MethodPut, bytes.NewBuffer(jsonData))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -342,7 +349,7 @@ func (a *AbfJson) RemoveProjectFromRepo(data map[string]interface{}, repoID int)
return nil, err return nil, err
} }
dataBytes, err := a.getURLContents(a.abfURL+path, nil, http.MethodDelete, bytes.NewBuffer(jsonData)) dataBytes, err := a.getURLContents(path, nil, http.MethodDelete, bytes.NewBuffer(jsonData))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -357,7 +364,7 @@ func (a *AbfJson) ForkProject(data map[string]interface{}, projID int) (map[stri
return nil, err return nil, err
} }
dataBytes, err := a.getURLContents(a.abfURL+path, nil, http.MethodPost, bytes.NewBuffer(jsonData)) dataBytes, err := a.getURLContents(path, nil, http.MethodPost, bytes.NewBuffer(jsonData))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -372,7 +379,7 @@ func (a *AbfJson) AliasProject(data map[string]interface{}, projID int) (map[str
return nil, err return nil, err
} }
dataBytes, err := a.getURLContents(a.abfURL+path, nil, http.MethodPost, bytes.NewBuffer(jsonData)) dataBytes, err := a.getURLContents(path, nil, http.MethodPost, bytes.NewBuffer(jsonData))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -387,7 +394,7 @@ func (a *AbfJson) DestroyProject(data map[string]interface{}, projID int) (map[s
return nil, err return nil, err
} }
dataBytes, err := a.getURLContents(a.abfURL+path, nil, http.MethodDelete, bytes.NewBuffer(jsonData)) dataBytes, err := a.getURLContents(path, nil, http.MethodDelete, bytes.NewBuffer(jsonData))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -402,7 +409,7 @@ func (a *AbfJson) AddProjectToRepo(data map[string]interface{}, repoID int) (map
return nil, err return nil, err
} }
dataBytes, err := a.getURLContents(a.abfURL+path, nil, http.MethodPut, bytes.NewBuffer(jsonData)) dataBytes, err := a.getURLContents(path, nil, http.MethodPut, bytes.NewBuffer(jsonData))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -416,7 +423,7 @@ func (a *AbfJson) NewProject(data map[string]interface{}) (map[string]interface{
return nil, err return nil, err
} }
dataBytes, err := a.getURLContents(a.abfURL+"/api/v1/projects.json", nil, http.MethodPost, bytes.NewBuffer(jsonData)) dataBytes, err := a.getURLContents("/api/v1/projects.json", nil, http.MethodPost, bytes.NewBuffer(jsonData))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -426,7 +433,7 @@ func (a *AbfJson) NewProject(data map[string]interface{}) (map[string]interface{
func (a *AbfJson) GetGitRefsList(projID int) (map[string]interface{}, error) { func (a *AbfJson) GetGitRefsList(projID int) (map[string]interface{}, error) {
path := fmt.Sprintf("/api/v1/projects/%d/refs_list.json", projID) path := fmt.Sprintf("/api/v1/projects/%d/refs_list.json", projID)
data, err := a.getURLContents(a.abfURL+path, nil, http.MethodGet, nil) data, err := a.getURLContents(path, nil, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -436,7 +443,7 @@ func (a *AbfJson) GetGitRefsList(projID int) (map[string]interface{}, error) {
func (a *AbfJson) GetUserByID(userID int) (map[string]interface{}, error) { func (a *AbfJson) GetUserByID(userID int) (map[string]interface{}, error) {
path := fmt.Sprintf("/api/v1/users/%d.json", userID) path := fmt.Sprintf("/api/v1/users/%d.json", userID)
data, err := a.getURLContents(a.abfURL+path, nil, http.MethodGet, nil) data, err := a.getURLContents(path, nil, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -446,7 +453,7 @@ func (a *AbfJson) GetUserByID(userID int) (map[string]interface{}, error) {
func (a *AbfJson) GetGroupByID(groupID int) (map[string]interface{}, error) { func (a *AbfJson) GetGroupByID(groupID int) (map[string]interface{}, error) {
path := fmt.Sprintf("/api/v1/groups/%d.json", groupID) path := fmt.Sprintf("/api/v1/groups/%d.json", groupID)
data, err := a.getURLContents(a.abfURL+path, nil, http.MethodGet, nil) data, err := a.getURLContents(path, nil, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -456,7 +463,7 @@ func (a *AbfJson) GetGroupByID(groupID int) (map[string]interface{}, error) {
func (a *AbfJson) GetSearchResults(searchType, query string) (map[string]interface{}, error) { func (a *AbfJson) GetSearchResults(searchType, query string) (map[string]interface{}, error) {
params := url.Values{"type": {searchType}, "query": {query}, "per_page": {"100"}} params := url.Values{"type": {searchType}, "query": {query}, "per_page": {"100"}}
data, err := a.getURLContents(a.abfURL+"/api/v1/search.json", params, http.MethodGet, nil) data, err := a.getURLContents("/api/v1/search.json", params, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -467,7 +474,7 @@ func (a *AbfJson) GetSearchResults(searchType, query string) (map[string]interfa
func (a *AbfJson) GetList(listType string, page int) (map[string]interface{}, error) { func (a *AbfJson) GetList(listType string, page int) (map[string]interface{}, error) {
params := url.Values{"page": {fmt.Sprintf("%d", page)}, "per_page": {"100"}} params := url.Values{"page": {fmt.Sprintf("%d", page)}, "per_page": {"100"}}
path := fmt.Sprintf("/api/v1/%s.json", listType) path := fmt.Sprintf("/api/v1/%s.json", listType)
data, err := a.getURLContents(a.abfURL+path, params, http.MethodGet, nil) data, err := a.getURLContents(path, params, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -478,7 +485,7 @@ func (a *AbfJson) GetList(listType string, page int) (map[string]interface{}, er
func (a *AbfJson) GetProjectsSingle(repoID, page int) (map[string]interface{}, error) { func (a *AbfJson) GetProjectsSingle(repoID, page int) (map[string]interface{}, error) {
params := url.Values{"page": {fmt.Sprintf("%d", page)}, "per_page": {"100"}} params := url.Values{"page": {fmt.Sprintf("%d", page)}, "per_page": {"100"}}
path := fmt.Sprintf("/api/v1/repositories/%d/projects.json", repoID) path := fmt.Sprintf("/api/v1/repositories/%d/projects.json", repoID)
data, err := a.getURLContents(a.abfURL+path, params, http.MethodGet, nil) data, err := a.getURLContents(path, params, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -586,7 +593,7 @@ func (a *AbfJson) UploadFile(filePath string, silent bool) (string, error) {
func (a *AbfJson) GetFileInfoByHash(shaHash string) ([]map[string]interface{}, error) { func (a *AbfJson) GetFileInfoByHash(shaHash string) ([]map[string]interface{}, error) {
params := url.Values{"hash": {shaHash}} params := url.Values{"hash": {shaHash}}
data, err := a.getURLContents(a.abfURL+"/api/v1/file_stores.json", params, http.MethodGet, nil) data, err := a.getURLContents("/api/v1/file_stores.json", params, http.MethodGet, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }