frame

package module
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Jun 26, 2021 License: Apache-2.0 Imports: 38 Imported by: 29

README

frame Build Status

A simple bootstrap for quickly starting a simple server based on gocloud framework

development

To run tests start the docker compose file in ./tests then run : go test -json -cover ./...

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AuthenticationMiddleware added in v1.0.7

func AuthenticationMiddleware(next http.Handler, audience string, issuer string) http.Handler

AuthenticationMiddleware Simple http middleware function to verify and extract authentication data supplied in a jwt as authorization bearer token

func AuthorizationControlListHasAccess added in v1.0.5

func AuthorizationControlListHasAccess(ctx context.Context, action string, subject string) (error, bool)

func DBErrorIsRecordNotFound added in v1.2.6

func DBErrorIsRecordNotFound(err error) bool

func DBPropertiesFromMap added in v1.2.6

func DBPropertiesFromMap(propsMap map[string]string) datatypes.JSONMap

func DBPropertiesToMap added in v1.2.6

func DBPropertiesToMap(props datatypes.JSONMap) map[string]string

func GetEnv

func GetEnv(key, fallback string) string

GetEnv Obtains the environment key or returns the default value

func GetIp

func GetIp(r *http.Request) string

func GetLocalIP

func GetLocalIP() string

func GetMacAddress

func GetMacAddress() string

func StreamAuthInterceptor added in v1.0.7

func StreamAuthInterceptor(audience string, issuer string) grpc.StreamServerInterceptor

StreamAuthInterceptor An authentication claims extractor that will always verify the information flowing in the streams as true jwt claims

func ToContext

func ToContext(ctx context.Context, service *Service) context.Context

func UnaryAuthInterceptor added in v1.0.7

func UnaryAuthInterceptor(audience string, issuer string) grpc.UnaryServerInterceptor

Types

type AuthenticationClaims added in v1.0.7

type AuthenticationClaims struct {
	ProfileID   string   `json:"sub,omitempty"`
	TenantID    string   `json:"tenant_id,omitempty"`
	PartitionID string   `json:"partition_id,omitempty"`
	AccessID    string   `json:"access_id,omitempty"`
	Roles       []string `json:"roles,omitempty"`
	jwt.StandardClaims
}

AuthenticationClaims Create a struct that will be encoded to a JWT. We add jwt.StandardClaims as an embedded type, to provide fields like expiry time

func ClaimsFromContext added in v1.0.7

func ClaimsFromContext(ctx context.Context) *AuthenticationClaims

ClaimsFromContext extracts authentication claims from the supplied context if any exist

func ClaimsFromMap added in v1.1.0

func ClaimsFromMap(m map[string]string) *AuthenticationClaims

ClaimsFromMap extracts authentication claims from the supplied map if they exist

func (*AuthenticationClaims) AsMetadata added in v1.0.7

func (a *AuthenticationClaims) AsMetadata() map[string]string

AsMetadata Creates a string map to be used as metadata in queue data

func (*AuthenticationClaims) ClaimsToContext added in v1.0.7

func (a *AuthenticationClaims) ClaimsToContext(ctx context.Context) context.Context

ClaimsToContext adds authentication claims to the current supplied context

type BaseModel

type BaseModel struct {
	ID          string `gorm:"type:varchar(50);primary_key"`
	CreatedAt   time.Time
	ModifiedAt  time.Time
	Version     uint32         `gorm:"DEFAULT 0"`
	TenantID    string         `gorm:"type:varchar(50);"`
	PartitionID string         `gorm:"type:varchar(50);"`
	DeletedAt   gorm.DeletedAt `sql:"index"`
}

BaseModel Our simple table holding all the migration data

func (*BaseModel) BeforeCreate

func (model *BaseModel) BeforeCreate(db *gorm.DB) error

func (*BaseModel) BeforeSave added in v1.2.9

func (model *BaseModel) BeforeSave(db *gorm.DB) error

BeforeSave Ensures we update a migrations time stamps

func (*BaseModel) BeforeUpdate

func (model *BaseModel) BeforeUpdate(db *gorm.DB) error

BeforeUpdate Updates time stamp every time we update status of a migration

func (*BaseModel) GenID added in v1.2.5

func (model *BaseModel) GenID(ctx context.Context)

GenID creates a new id for model if its not existent

func (*BaseModel) GetID

func (model *BaseModel) GetID() string

type BaseModelI

type BaseModelI interface {
	GetID() string
}

type JSONWebKeys added in v1.1.7

type JSONWebKeys struct {
	Kty string   `json:"kty"`
	Kid string   `json:"kid"`
	Use string   `json:"use"`
	N   string   `json:"n"`
	E   string   `json:"e"`
	X5c []string `json:"x5c"`
}

type Jwks added in v1.1.7

type Jwks struct {
	Keys []JSONWebKeys `json:"keys"`
}

type Migration

type Migration struct {
	BaseModel

	Name      string `gorm:"type:varchar(50);uniqueIndex"`
	Patch     string `gorm:"type:text"`
	AppliedAt sql.NullTime
}

Migration Our simple table holding all the migration data

type Option

type Option func(service *Service)

func Datastore

func Datastore(ctx context.Context, postgresqlConnection string, readOnly bool) Option

func GrpcServer

func GrpcServer(grpcServer *grpc.Server) Option

func HttpHandler

func HttpHandler(h http.Handler) Option

func HttpOptions

func HttpOptions(httpOpts *server.Options) Option

func NoopHttpOptions added in v1.2.15

func NoopHttpOptions() Option

func RegisterPublisher

func RegisterPublisher(reference string, queueUrl string) Option

func RegisterSubscriber

func RegisterSubscriber(reference string, queueUrl string, concurrency int,
	handler SubscribeWorker) Option

func ServerListener

func ServerListener(listener net.Listener) Option

func Translations added in v1.0.5

func Translations(translationsFolder string, languages ...string) Option

type Queue

type Queue struct {
	// contains filtered or unexported fields
}

type Service

type Service struct {
	// contains filtered or unexported fields
}

func FromContext

func FromContext(ctx context.Context) *Service

func NewService

func NewService(name string, opts ...Option) *Service

func (*Service) AddCleanupMethod

func (s *Service) AddCleanupMethod(f func())

func (*Service) AddHealthCheck

func (s *Service) AddHealthCheck(checker health.Checker)

func (*Service) AddPreStartMethod added in v1.1.3

func (s *Service) AddPreStartMethod(f func(s *Service))

func (*Service) Bundle added in v1.0.6

func (s *Service) Bundle() *i18n.Bundle

func (*Service) DB

func (s *Service) DB(ctx context.Context, readOnly bool) *gorm.DB

func (*Service) Init added in v1.0.4

func (s *Service) Init(opts ...Option)

func (*Service) InvokeRestService added in v1.0.15

func (s *Service) InvokeRestService(ctx context.Context, method string, authorizationUrl string, payload map[string]interface{}, headers map[string][]string) (int, []byte, error)

func (*Service) MigrateDatastore

func (s *Service) MigrateDatastore(ctx context.Context, migrationsDirPath string, migrations ...interface{}) error

MigrateDatastore finds missing migrations and records them in the database

func (Service) Publish

func (s Service) Publish(ctx context.Context, reference string, payload interface{}) error

func (Service) QID

func (s Service) QID(ctx context.Context, payload []byte) (string, error)

func (Service) QObject

func (s Service) QObject(ctx context.Context, model BaseModelI) ([]byte, map[string]string, error)

func (*Service) Run

func (s *Service) Run(ctx context.Context, address string) error

func (*Service) Stop

func (s *Service) Stop()

func (*Service) Translate added in v1.1.9

func (s *Service) Translate(request interface{}, messageId string) string

func (*Service) TranslateWithMap added in v1.1.9

func (s *Service) TranslateWithMap(request interface{}, messageId string, variables map[string]interface{}) string

func (*Service) TranslateWithMapAndCount added in v1.1.9

func (s *Service) TranslateWithMapAndCount(request interface{}, messageId string, variables map[string]interface{}, count int) string

type SubscribeWorker

type SubscribeWorker interface {
	Handle(ctx context.Context, message []byte) error
}

Jump to

Keyboard shortcuts

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