Documentation ¶
Index ¶
- Constants
- Variables
- func AddDomainWhiteList(domain string)
- func GetRequestRemoteAddr(ctx context.Context) (string, bool)
- func NewClient(address string, opts ...ClientOpt) cmds.Executor
- func NewHandler(env cmds.Environment, root *cmds.Command, cfg *ServerConfig) http.Handler
- type ClientOpt
- type Response
- type ResponseEmitter
- type ResponseEmitterOption
- type ServerConfig
- func (cfg *ServerConfig) AllowedMethods() []string
- func (cfg *ServerConfig) AllowedOrigins() []string
- func (cfg *ServerConfig) AppendAllowedOrigins(origins ...string)
- func (cfg *ServerConfig) SetAllowCredentials(flag bool)
- func (cfg *ServerConfig) SetAllowedMethods(methods ...string)
- func (cfg *ServerConfig) SetAllowedOrigins(origins ...string)
Constants ¶
const ( ACAOrigin = "Access-Control-Allow-Origin" ACAMethods = "Access-Control-Allow-Methods" ACACredentials = "Access-Control-Allow-Credentials" )
const (
ApiUrlFormat = "%s%s/%s?%s"
)
const (
DomainKey = "domain"
)
const (
// StreamErrHeader is used as trailer when stream errors happen.
StreamErrHeader = "X-Stream-Error"
)
Variables ¶
var ( // AllowedExposedHeadersArr defines the default Access-Control-Expose-Headers. AllowedExposedHeadersArr = []string{streamHeader, channelHeader, extraContentLengthHeader} // AllowedExposedHeaders is the list of defaults Access-Control-Expose-Headers separated by comma. AllowedExposedHeaders = strings.Join(AllowedExposedHeadersArr, ", ") )
var ( // ErrNotFound is returned when the endpoint does not exist. ErrNotFound = errors.New("404 page not found") )
var (
MIMEEncodings = map[string]cmds.EncodingType{
"application/json": cmds.JSON,
"application/xml": cmds.XML,
"text/plain": cmds.Text,
}
)
var OptionSkipMap = map[string]bool{ "api": true, }
var RemoteAccessible = func() func(c *cmds.Command, addr string) bool { enabled := strings.ToLower(os.Getenv("ENABLE_WALLET_REMOTE")) == "true" return func(c *cmds.Command, addr string) bool { inWhiteList := false if domain, b := c.Extra.GetValue(DomainKey); b { for _, d := range domainWhitelist { if d == domain { inWhiteList = true break } } } isLocal, err := network.IsLocalIp(strings.Split(addr, ":")[0]) return (err == nil && isLocal) || !c.NoRemote || (enabled && inWhiteList) } }()
Functions ¶
func AddDomainWhiteList ¶
func AddDomainWhiteList(domain string)
func GetRequestRemoteAddr ¶
GetRequestRemoteAddr extracts the remote address value from an existing context
func NewHandler ¶
func NewHandler(env cmds.Environment, root *cmds.Command, cfg *ServerConfig) http.Handler
NewHandler creates the http.Handler for the given commands.
Types ¶
type ClientOpt ¶
type ClientOpt func(*client)
ClientOpt is an option that can be passed to the HTTP client constructor.
func ClientWithAPIPrefix ¶
ClientWithAPIPrefix specifies an API URL prefix.
func ClientWithFallback ¶
func ClientWithFallback(exe cmds.Executor) ClientOpt
ClientWithFallback adds a fallback executor to the client.
Note: This may run the PreRun function twice.
func ClientWithHTTPClient ¶
ClientWithHTTPClient specifies a custom http.Client. Defaults to http.DefaultClient.
func ClientWithUserAgent ¶
ClientWithUserAgent specifies the HTTP user agent for the client.
type ResponseEmitter ¶
type ResponseEmitter interface { cmds.ResponseEmitter http.Flusher }
ResponseEmitter interface defines the components that can care of sending the response to HTTP Requests.
func NewFlushForwarder ¶
func NewFlushForwarder(r cmds.ResponseEmitter, f http.Flusher) ResponseEmitter
func NewResponseEmitter ¶
func NewResponseEmitter(w http.ResponseWriter, method string, req *cmds.Request, opts ...ResponseEmitterOption) (ResponseEmitter, error)
NewResponseEmitter returns a new ResponseEmitter.
type ResponseEmitterOption ¶
type ResponseEmitterOption func(*responseEmitter)
ResponseEmitterOption is the type describing options to the NewResponseEmitter function.
type ServerConfig ¶
type ServerConfig struct { // APIPath is the prefix of all request paths. // Example: host:port/api/v0/add. Here the APIPath is /api/v0 APIPath string // RedirectPaths contain the redirect prefixes to the same handler RedirectPaths []string // Headers is an optional map of headers that is written out. Headers map[string][]string // AllowGet indicates whether or not this server accepts GET requests. // When unset, the server only accepts POST, HEAD, and OPTIONS. // // This is different from CORS AllowedMethods. The API may allow GET // requests in general, but reject them in CORS. That will allow // websites to include resources from the API but not _read_ them. AllowGet bool // contains filtered or unexported fields }
func NewServerConfig ¶
func NewServerConfig() *ServerConfig
func (*ServerConfig) AllowedMethods ¶
func (cfg *ServerConfig) AllowedMethods() []string
func (*ServerConfig) AllowedOrigins ¶
func (cfg *ServerConfig) AllowedOrigins() []string
func (*ServerConfig) AppendAllowedOrigins ¶
func (cfg *ServerConfig) AppendAllowedOrigins(origins ...string)
func (*ServerConfig) SetAllowCredentials ¶
func (cfg *ServerConfig) SetAllowCredentials(flag bool)
func (*ServerConfig) SetAllowedMethods ¶
func (cfg *ServerConfig) SetAllowedMethods(methods ...string)
func (*ServerConfig) SetAllowedOrigins ¶
func (cfg *ServerConfig) SetAllowedOrigins(origins ...string)