You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
169 lines
4.3 KiB
169 lines
4.3 KiB
package dao |
|
|
|
import ( |
|
"context" |
|
"fmt" |
|
"net/http" |
|
"strconv" |
|
|
|
"go-common/app/admin/ep/merlin/model" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
) |
|
|
|
const ( |
|
_projectURI = "/api/projects" |
|
_repositoryURI = "/api/repositories" |
|
_authHubURI = "/api/platformUsers?role=2&session=" |
|
) |
|
|
|
// AuthHub Auth Hub. |
|
func (d *Dao) AuthHub(c context.Context, sessionID string) (err error) { |
|
var ( |
|
req *http.Request |
|
res interface{} |
|
) |
|
url := d.c.BiliHub.Host + _authHubURI + sessionID |
|
if req, err = d.newRequest(http.MethodGet, url, nil); err != nil { |
|
return |
|
} |
|
|
|
req.SetBasicAuth(d.c.BiliHub.Username, d.c.BiliHub.Password) |
|
|
|
if err = d.httpClient.Do(c, req, &res); err != nil { |
|
err = ecode.MerlinNoHubAccount |
|
log.Error("d.AuthHub url(%s) err(%v)", url, err) |
|
} |
|
return |
|
} |
|
|
|
// HubProjects Get Hub Projects. |
|
func (d *Dao) HubProjects(c context.Context, projectName string) (projects []*model.HubProject, err error) { |
|
var req *http.Request |
|
|
|
url := d.c.BiliHub.Host + _projectURI + "?page=1&page_size=15&name=" + projectName |
|
if req, err = d.newRequest(http.MethodGet, url, nil); err != nil { |
|
return |
|
} |
|
|
|
req.SetBasicAuth(d.c.BiliHub.Username, d.c.BiliHub.Password) |
|
|
|
if err = d.httpClient.Do(c, req, &projects); err != nil { |
|
log.Error("d.HubProjects url(%s) err(%v)", url, err) |
|
err = ecode.MerlinHubRequestErr |
|
return |
|
} |
|
|
|
return |
|
} |
|
|
|
// ProjectRepoCount Get Project RepoCount. |
|
func (d *Dao) ProjectRepoCount(c context.Context, projectID int) (total int, err error) { |
|
|
|
var ( |
|
req *http.Request |
|
res = &model.GetHubProjectDetailResponse{} |
|
) |
|
|
|
url := d.c.BiliHub.Host + _projectURI + "/" + strconv.Itoa(projectID) |
|
if req, err = d.newRequest(http.MethodGet, url, nil); err != nil { |
|
return |
|
} |
|
req.SetBasicAuth(d.c.BiliHub.Username, d.c.BiliHub.Password) |
|
|
|
if err = d.httpClient.Do(c, req, &res); err != nil { |
|
log.Error("d.ProjectRepoCount url(%s) err(%v)", url, err) |
|
err = ecode.MerlinHubRequestErr |
|
return |
|
} |
|
|
|
return res.RepoCount, err |
|
} |
|
|
|
// ProjectRepos Get Project Repos. |
|
func (d *Dao) ProjectRepos(c context.Context, projectID, pageNum, pageSize int, keyWord string) (projectRepos []*model.ProjectRepository, err error) { |
|
var req *http.Request |
|
|
|
host := d.c.BiliHub.Host + _repositoryURI + "?project_id=%s&page=%s&page_size=%s&q=%s" |
|
url := fmt.Sprintf(host, strconv.Itoa(projectID), strconv.Itoa(pageNum), strconv.Itoa(pageSize), keyWord) |
|
if req, err = d.newRequest(http.MethodGet, url, nil); err != nil { |
|
return |
|
} |
|
|
|
req.SetBasicAuth(d.c.BiliHub.Username, d.c.BiliHub.Password) |
|
|
|
if err = d.httpClient.Do(c, req, &projectRepos); err != nil { |
|
log.Error("d.ProjectRepos url(%s) err(%v)", url, err) |
|
err = ecode.MerlinHubRequestErr |
|
} |
|
|
|
return |
|
} |
|
|
|
// RepoTags Get Repo Tags. |
|
func (d *Dao) RepoTags(c context.Context, repoName string) (repoTags []*model.RepositoryTagResponse, err error) { |
|
var req *http.Request |
|
|
|
host := d.c.BiliHub.Host + _repositoryURI + "/%s/tags" |
|
url := fmt.Sprintf(host, repoName) |
|
if req, err = d.newRequest(http.MethodGet, url, nil); err != nil { |
|
return |
|
} |
|
|
|
req.SetBasicAuth(d.c.BiliHub.Username, d.c.BiliHub.Password) |
|
|
|
if err = d.httpClient.Do(c, req, &repoTags); err != nil { |
|
log.Error("d.RepoTags url(%s) err(%v)", url, err) |
|
err = ecode.MerlinHubRequestErr |
|
} |
|
|
|
return |
|
} |
|
|
|
// DeleteRepoTag Delete Repo Tag. |
|
func (d *Dao) DeleteRepoTag(c context.Context, repoName, tagName string) (err error) { |
|
var req *http.Request |
|
|
|
host := d.c.BiliHub.Host + _repositoryURI + "/%s/tags/%s" |
|
url := fmt.Sprintf(host, repoName, tagName) |
|
|
|
if req, err = d.newRequest(http.MethodDelete, url, nil); err != nil { |
|
return |
|
} |
|
|
|
req.SetBasicAuth(d.c.BiliHub.Username, d.c.BiliHub.Password) |
|
|
|
if err = d.httpClient.Do(c, req, nil); err != nil { |
|
log.Error("d.DeleteRepoTag url(%s) err(%v)", url, err) |
|
err = ecode.MerlinHubRequestErr |
|
} |
|
|
|
return |
|
} |
|
|
|
// DeleteRepo Delete Repo. |
|
func (d *Dao) DeleteRepo(c context.Context, repoName string) (err error) { |
|
var req *http.Request |
|
|
|
url := d.c.BiliHub.Host + _repositoryURI + "/" + repoName |
|
|
|
if req, err = d.newRequest(http.MethodDelete, url, nil); err != nil { |
|
return |
|
} |
|
|
|
req.SetBasicAuth(d.c.BiliHub.Username, d.c.BiliHub.Password) |
|
|
|
if err = d.httpClient.Do(c, req, nil); err != nil { |
|
log.Error("d.DeleteRepo url(%s) err(%v)", url, err) |
|
err = ecode.MerlinHubRequestErr |
|
} |
|
|
|
return |
|
} |
|
|
|
// ImageTask Image Task. |
|
func (d *Dao) ImageTask(imageTask func()) { |
|
d.hubCache.Do(context.Background(), func(c context.Context) { |
|
imageTask() |
|
}) |
|
}
|
|
|