5d6ee506b0
Initial typings and methods for the future API Management implementation. Blueprint - https://review.dev.storj.io/c/storj/storj/+/6341 Change-Id: I9afe66a7610a3a80e764b317ddd211f125b1ea43
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
|
|
}
|