storj/private/apigen/endpoint.go
Vitalii f56504de2a apigen: project delete endpoint
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
2022-06-07 12:23:24 +03:00

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),
}
}