f56504de2a
Implemented project delete endpoint for REST API. Added project usage status check service method to indicate if project can be deleted. Updated project invoice status check method to indicate if project can be deleted. Change-Id: I57dc96efb072517144252001ab5405446c9cdeb4
89 lines
2.1 KiB
Go
89 lines
2.1 KiB
Go
// Copyright (C) 2022 Storj Labs, Inc.
|
|
// See LICENSE for copying information.
|
|
|
|
package apigen
|
|
|
|
import (
|
|
"net/http"
|
|
"reflect"
|
|
)
|
|
|
|
// Endpoint represents endpoint's configuration.
|
|
type Endpoint struct {
|
|
Name string
|
|
Description string
|
|
MethodName string
|
|
NoCookieAuth bool
|
|
NoAPIAuth bool
|
|
Request interface{}
|
|
Response interface{}
|
|
Params []Param
|
|
}
|
|
|
|
// CookieAuth returns endpoint's cookie auth status.
|
|
func (e *Endpoint) CookieAuth() bool {
|
|
return !e.NoCookieAuth
|
|
}
|
|
|
|
// APIAuth returns endpoint's API auth status.
|
|
func (e *Endpoint) APIAuth() bool {
|
|
return !e.NoAPIAuth
|
|
}
|
|
|
|
// PathMethod represents endpoint's path and method type.
|
|
type PathMethod struct {
|
|
Path string
|
|
Method string
|
|
}
|
|
|
|
// EndpointGroup represents endpoints group.
|
|
type EndpointGroup struct {
|
|
Name string
|
|
Prefix string
|
|
Endpoints map[PathMethod]*Endpoint
|
|
}
|
|
|
|
// Get adds new GET endpoint to endpoints group.
|
|
func (eg *EndpointGroup) Get(path string, endpoint *Endpoint) {
|
|
eg.addEndpoint(path, http.MethodGet, endpoint)
|
|
}
|
|
|
|
// Patch adds new PATCH endpoint to endpoints group.
|
|
func (eg *EndpointGroup) Patch(path string, endpoint *Endpoint) {
|
|
eg.addEndpoint(path, http.MethodPatch, endpoint)
|
|
}
|
|
|
|
// Post adds new POST endpoint to endpoints group.
|
|
func (eg *EndpointGroup) Post(path string, endpoint *Endpoint) {
|
|
eg.addEndpoint(path, http.MethodPost, endpoint)
|
|
}
|
|
|
|
// Delete adds new DELETE endpoint to endpoints group.
|
|
func (eg *EndpointGroup) Delete(path string, endpoint *Endpoint) {
|
|
eg.addEndpoint(path, http.MethodDelete, endpoint)
|
|
}
|
|
|
|
// addEndpoint adds new endpoint to endpoints list.
|
|
func (eg *EndpointGroup) addEndpoint(path, method string, endpoint *Endpoint) {
|
|
pathMethod := PathMethod{
|
|
Path: path,
|
|
Method: method,
|
|
}
|
|
|
|
eg.Endpoints[pathMethod] = endpoint
|
|
}
|
|
|
|
// Param represents string interpretation of param's name and type.
|
|
type Param struct {
|
|
Name string
|
|
Type reflect.Type
|
|
}
|
|
|
|
// NewParam constructor which creates new Param entity by given name and type.
|
|
func NewParam(name string, instance interface{}) Param {
|
|
return Param{
|
|
Name: name,
|
|
Type: reflect.TypeOf(instance),
|
|
}
|
|
}
|