rkmux

package
v0.0.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 30, 2022 License: Apache-2.0 Imports: 42 Imported by: 1

Documentation

Overview

Package rkmux an implementation of rkentry.Entry which could be used start restful server with rkmux framework

Index

Constants

View Source
const (
	// MuxEntryType type of entry
	MuxEntryType = "Mux"
	// MuxEntryDescription description of entry
	MuxEntryDescription = "Internal RK entry which helps to bootstrap with mux framework."
)

Variables

This section is empty.

Functions

func RegisterMuxEntriesWithConfig

func RegisterMuxEntriesWithConfig(configFilePath string) map[string]rkentry.Entry

RegisterMuxEntriesWithConfig register Mux entries with provided config file (Must YAML file).

Currently, support two ways to provide config file path. 1: With function parameters 2: With command line flag "--rkboot" described in rkcommon.BootConfigPathFlagKey (Will override function parameter if exists) Command line flag has high priority which would override function parameter

Error handling: Process will shutdown if any errors occur with rkcommon.ShutdownWithError function

Override elements in config file: We learned from HELM source code which would override elements in YAML file with "--set" flag followed with comma separated key/value pairs.

We are using "--rkset" described in rkcommon.BootConfigOverrideKey in order to distinguish with user flags Example of common usage: ./binary_file --rkset "key1=val1,key2=val2" Example of nested map: ./binary_file --rkset "outer.inner.key=val" Example of slice: ./binary_file --rkset "outer[0].key=val"

Types

type BootConfig added in v0.0.3

type BootConfig struct {
	Mux []struct {
		Enabled       bool                            `yaml:"enabled" json:"enabled"`
		Name          string                          `yaml:"name" json:"name"`
		Port          uint64                          `yaml:"port" json:"port"`
		Description   string                          `yaml:"description" json:"description"`
		CertEntry     string                          `yaml:"certEntry" json:"certEntry"`
		SW            rkentry.BootConfigSw            `yaml:"sw" json:"sw"`
		CommonService rkentry.BootConfigCommonService `yaml:"commonService" json:"commonService"`
		TV            rkentry.BootConfigTv            `yaml:"tv" json:"tv"`
		Prom          rkentry.BootConfigProm          `yaml:"prom" json:"prom"`
		Static        rkentry.BootConfigStaticHandler `yaml:"static" json:"static"`
		Interceptors  struct {
			LoggingZap       rkmidlog.BootConfig     `yaml:"loggingZap" json:"loggingZap"`
			MetricsProm      rkmidmetrics.BootConfig `yaml:"metricsProm" json:"metricsProm"`
			Auth             rkmidauth.BootConfig    `yaml:"auth" json:"auth"`
			Cors             rkmidcors.BootConfig    `yaml:"cors" json:"cors"`
			Meta             rkmidmeta.BootConfig    `yaml:"meta" json:"meta"`
			Jwt              rkmidjwt.BootConfig     `yaml:"jwt" json:"jwt"`
			Secure           rkmidsec.BootConfig     `yaml:"secure" json:"secure"`
			RateLimit        rkmidlimit.BootConfig   `yaml:"rateLimit" json:"rateLimit"`
			Csrf             rkmidcsrf.BootConfig    `yaml:"csrf" yaml:"csrf"`
			TracingTelemetry rkmidtrace.BootConfig   `yaml:"tracingTelemetry" json:"tracingTelemetry"`
		} `yaml:"interceptors" json:"interceptors"`
		Logger struct {
			ZapLogger   string `yaml:"zapLogger" json:"zapLogger"`
			EventLogger string `yaml:"eventLogger" json:"eventLogger"`
		} `yaml:"logger" json:"logger"`
	} `yaml:"mux" json:"mux"`
}

BootConfig boot config which is for Mux entry.

type MuxEntry

type MuxEntry struct {
	EntryName          string                          `json:"entryName" yaml:"entryName"`
	EntryType          string                          `json:"entryType" yaml:"entryType"`
	EntryDescription   string                          `json:"-" yaml:"-"`
	ZapLoggerEntry     *rkentry.ZapLoggerEntry         `json:"-" yaml:"-"`
	EventLoggerEntry   *rkentry.EventLoggerEntry       `json:"-" yaml:"-"`
	Port               uint64                          `json:"port" yaml:"port"`
	CertEntry          *rkentry.CertEntry              `json:"-" yaml:"-"`
	SwEntry            *rkentry.SwEntry                `json:"-" yaml:"-"`
	CommonServiceEntry *rkentry.CommonServiceEntry     `json:"-" yaml:"-"`
	Router             *mux.Router                     `json:"-" yaml:"-"`
	Server             *http.Server                    `json:"-" yaml:"-"`
	TlsConfig          *tls.Config                     `json:"-" yaml:"-"`
	Interceptors       []mux.MiddlewareFunc            `json:"-" yaml:"-"`
	PromEntry          *rkentry.PromEntry              `json:"-" yaml:"-"`
	TvEntry            *rkentry.TvEntry                `json:"-" yaml:"-"`
	StaticFileEntry    *rkentry.StaticFileHandlerEntry `json:"-" yaml:"-"`
}

MuxEntry implements rkentry.Entry interface.

func GetMuxEntry

func GetMuxEntry(name string) *MuxEntry

GetMuxEntry Get MuxEntry from rkentry.GlobalAppCtx.

func RegisterMuxEntry

func RegisterMuxEntry(opts ...MuxEntryOption) *MuxEntry

RegisterMuxEntry register MuxEntry with options.

func (*MuxEntry) AddInterceptor

func (entry *MuxEntry) AddInterceptor(inters ...mux.MiddlewareFunc)

AddInterceptor Add interceptors. This function should be called before Bootstrap() called.

func (*MuxEntry) Apis added in v0.0.3

func (entry *MuxEntry) Apis(writer http.ResponseWriter, req *http.Request)

Apis list apis

func (*MuxEntry) Bootstrap

func (entry *MuxEntry) Bootstrap(ctx context.Context)

Bootstrap MuxEntry.

func (*MuxEntry) GetDescription

func (entry *MuxEntry) GetDescription() string

GetDescription Get description of entry.

func (*MuxEntry) GetName

func (entry *MuxEntry) GetName() string

GetName Get entry name.

func (*MuxEntry) GetType

func (entry *MuxEntry) GetType() string

GetType Get entry type.

func (*MuxEntry) Interrupt

func (entry *MuxEntry) Interrupt(ctx context.Context)

Interrupt MuxEntry.

func (*MuxEntry) IsCommonServiceEnabled

func (entry *MuxEntry) IsCommonServiceEnabled() bool

IsCommonServiceEnabled Is common service entry enabled?

func (*MuxEntry) IsPromEnabled

func (entry *MuxEntry) IsPromEnabled() bool

IsPromEnabled Is prometheus entry enabled?

func (*MuxEntry) IsStaticFileHandlerEnabled added in v0.0.3

func (entry *MuxEntry) IsStaticFileHandlerEnabled() bool

IsStaticFileHandlerEnabled Is static file handler entry enabled?

func (*MuxEntry) IsSwEnabled

func (entry *MuxEntry) IsSwEnabled() bool

IsSwEnabled Is swagger entry enabled?

func (*MuxEntry) IsTlsEnabled

func (entry *MuxEntry) IsTlsEnabled() bool

IsTlsEnabled Is TLS enabled?

func (*MuxEntry) IsTvEnabled

func (entry *MuxEntry) IsTvEnabled() bool

IsTvEnabled Is TV entry enabled?

func (*MuxEntry) MarshalJSON

func (entry *MuxEntry) MarshalJSON() ([]byte, error)

MarshalJSON Marshal entry.

func (*MuxEntry) Req added in v0.0.3

func (entry *MuxEntry) Req(writer http.ResponseWriter, req *http.Request)

Req handler

func (*MuxEntry) String

func (entry *MuxEntry) String() string

String Stringfy entry.

func (*MuxEntry) TV added in v0.0.3

func (entry *MuxEntry) TV(writer http.ResponseWriter, req *http.Request)

TV handler

func (*MuxEntry) UnmarshalJSON

func (entry *MuxEntry) UnmarshalJSON([]byte) error

UnmarshalJSON Not supported.

type MuxEntryOption

type MuxEntryOption func(*MuxEntry)

MuxEntryOption Mux entry option.

func WithCertEntry added in v0.0.3

func WithCertEntry(certEntry *rkentry.CertEntry) MuxEntryOption

WithCertEntry provide rkentry.CertEntry.

func WithCommonServiceEntry added in v0.0.3

func WithCommonServiceEntry(commonServiceEntry *rkentry.CommonServiceEntry) MuxEntryOption

WithCommonServiceEntry provide CommonServiceEntry.

func WithDescription added in v0.0.3

func WithDescription(description string) MuxEntryOption

WithDescription provide name.

func WithEventLoggerEntry added in v0.0.3

func WithEventLoggerEntry(eventLogger *rkentry.EventLoggerEntry) MuxEntryOption

WithEventLoggerEntry provide rkentry.EventLoggerEntry.

func WithName added in v0.0.3

func WithName(name string) MuxEntryOption

WithName provide name.

func WithPort added in v0.0.3

func WithPort(port uint64) MuxEntryOption

WithPort provide port.

func WithPromEntry added in v0.0.3

func WithPromEntry(prom *rkentry.PromEntry) MuxEntryOption

WithPromEntry provide PromEntry.

func WithStaticFileHandlerEntry added in v0.0.3

func WithStaticFileHandlerEntry(staticEntry *rkentry.StaticFileHandlerEntry) MuxEntryOption

WithStaticFileHandlerEntry provide StaticFileHandlerEntry.

func WithSwEntry added in v0.0.3

func WithSwEntry(sw *rkentry.SwEntry) MuxEntryOption

WithSwEntry provide SwEntry.

func WithTvEntry added in v0.0.3

func WithTvEntry(tvEntry *rkentry.TvEntry) MuxEntryOption

WithTvEntry provide TvEntry.

func WithZapLoggerEntry added in v0.0.3

func WithZapLoggerEntry(zapLogger *rkentry.ZapLoggerEntry) MuxEntryOption

WithZapLoggerEntry provide rkentry.ZapLoggerEntry.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL