|
Packit |
63bb0d |
// Package client - projects contains functions for the projects API
|
|
Packit |
63bb0d |
// Copyright (C) 2020 by Red Hat, Inc.
|
|
Packit |
63bb0d |
package client
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
import (
|
|
Packit |
63bb0d |
"encoding/json"
|
|
Packit |
63bb0d |
"fmt"
|
|
Packit |
63bb0d |
"net/http"
|
|
Packit |
63bb0d |
// "strings"
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
"github.com/osbuild/osbuild-composer/internal/rpmmd"
|
|
Packit |
63bb0d |
"github.com/osbuild/osbuild-composer/internal/weldr"
|
|
Packit |
63bb0d |
)
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// ListAllProjectsV0 returns a list of all the available project names
|
|
Packit |
63bb0d |
func ListAllProjectsV0(socket *http.Client) ([]rpmmd.PackageInfo, *APIResponse, error) {
|
|
Packit |
63bb0d |
body, resp, err := GetJSONAll(socket, "/api/v0/projects/list")
|
|
Packit |
63bb0d |
if resp != nil || err != nil {
|
|
Packit |
63bb0d |
return nil, resp, err
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
var list weldr.ProjectsListV0
|
|
Packit |
63bb0d |
err = json.Unmarshal(body, &list)
|
|
Packit |
63bb0d |
if err != nil {
|
|
Packit |
63bb0d |
return nil, nil, err
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
return list.Projects, nil, nil
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// ListSomeProjectsV0 returns a list of all the available project names
|
|
Packit |
63bb0d |
func ListSomeProjectsV0(socket *http.Client, offset, limit int) ([]rpmmd.PackageInfo, *APIResponse, error) {
|
|
Packit |
63bb0d |
path := fmt.Sprintf("/api/v0/projects/list?offset=%d&limit=%d", offset, limit)
|
|
Packit |
63bb0d |
body, resp, err := GetRaw(socket, "GET", path)
|
|
Packit |
63bb0d |
if resp != nil || err != nil {
|
|
Packit |
63bb0d |
return nil, resp, err
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
var list weldr.ProjectsListV0
|
|
Packit |
63bb0d |
err = json.Unmarshal(body, &list)
|
|
Packit |
63bb0d |
if err != nil {
|
|
Packit |
63bb0d |
return nil, nil, err
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
return list.Projects, nil, nil
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// GetProjectsInfoV0 returns detailed project info on the named projects
|
|
Packit |
63bb0d |
func GetProjectsInfoV0(socket *http.Client, projNames string) ([]rpmmd.PackageInfo, *APIResponse, error) {
|
|
Packit |
63bb0d |
body, resp, err := GetRaw(socket, "GET", "/api/v0/projects/info/"+projNames)
|
|
Packit |
63bb0d |
if resp != nil || err != nil {
|
|
Packit |
63bb0d |
return nil, resp, err
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
var list weldr.ProjectsInfoV0
|
|
Packit |
63bb0d |
err = json.Unmarshal(body, &list)
|
|
Packit |
63bb0d |
if err != nil {
|
|
Packit |
63bb0d |
return nil, nil, err
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
return list.Projects, nil, nil
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
//DepsolveProjectsV0 returns the dependencies of the names projects
|
|
Packit |
63bb0d |
func DepsolveProjectsV0(socket *http.Client, projNames string) ([]rpmmd.PackageSpec, *APIResponse, error) {
|
|
Packit |
63bb0d |
body, resp, err := GetRaw(socket, "GET", "/api/v0/projects/depsolve/"+projNames)
|
|
Packit |
63bb0d |
if resp != nil || err != nil {
|
|
Packit |
63bb0d |
return nil, resp, err
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
var deps weldr.ProjectsDependenciesV0
|
|
Packit |
63bb0d |
err = json.Unmarshal(body, &deps)
|
|
Packit |
63bb0d |
if err != nil {
|
|
Packit |
63bb0d |
return nil, nil, err
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
return deps.Projects, nil, nil
|
|
Packit |
63bb0d |
}
|