57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
|
// Copyright (C) 2022 Storj Labs, Inc.
|
||
|
// See LICENSE for copying information.
|
||
|
|
||
|
package apigen
|
||
|
|
||
|
import "net/http"
|
||
|
|
||
|
// Endpoint represents endpoint's configuration.
|
||
|
type Endpoint struct {
|
||
|
Name string
|
||
|
Description string
|
||
|
MethodName string
|
||
|
NoCookieAuth bool
|
||
|
NoAPIAuth bool
|
||
|
Request interface{}
|
||
|
Response interface{}
|
||
|
Params []string
|
||
|
}
|
||
|
|
||
|
// 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)
|
||
|
}
|
||
|
|
||
|
// 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
|
||
|
}
|