mirror of
https://github.com/onepanelio/onepanel.git
synced 2025-10-05 05:36:50 +08:00
37 lines
974 B
Go
37 lines
974 B
Go
package router
|
|
|
|
import "fmt"
|
|
|
|
// API provides methods to generate urls for the API
|
|
type API interface {
|
|
UpdateWorkspaceStatus(namespace, uid string) string
|
|
}
|
|
|
|
// api is a basic implementation of router.API
|
|
type api struct {
|
|
protocol string
|
|
fqdn string
|
|
}
|
|
|
|
// UpdateWorkspaceStatus generates a url to update the status of a workspace
|
|
func (a *api) UpdateWorkspaceStatus(namespace, uid string) string {
|
|
// <protocol><fqdn>/apis/v1beta1/{namespace}/workspaces/{uid}/status
|
|
return fmt.Sprintf("%v%v/apis/v1beta1/%v/workspaces/%v/status", a.protocol, a.fqdn, namespace, uid)
|
|
}
|
|
|
|
// NewAPIRouter creates a new api router used to generate urls for the api
|
|
func NewAPIRouter(protocol, fqdn string) (API, error) {
|
|
return &api{
|
|
protocol: protocol,
|
|
fqdn: fqdn,
|
|
}, nil
|
|
}
|
|
|
|
// NewRelativeAPIRouter creates an api router that does relative routes, with no protocol or fqdn
|
|
func NewRelativeAPIRouter() (API, error) {
|
|
return &api{
|
|
protocol: "",
|
|
fqdn: "",
|
|
}, nil
|
|
}
|