libRequest

package
v0.22.0 Latest Latest
Warning

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

Go to latest
Published: Dec 23, 2025 License: GPL-3.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const ErrorInGetRequest = "ERROR_IN_GET_REQUEST_%s"
View Source
const ModuleName = "RequestHandler"
View Source
const PaginationLocalTag string = "pagination"

Variables

This section is empty.

Functions

func InitGlobalHeaderConfig added in v0.18.0

func InitGlobalHeaderConfig(configPath string) error

InitGlobalHeaderConfig initializes the global header configuration

func TypeStrings added in v0.5.7

func TypeStrings() []string

TypeStrings returns a slice of all String values of the enum

Types

type DynamicHeaderConfig added in v0.18.0

type DynamicHeaderConfig struct {
	// Required headers that must be present
	RequiredHeaders map[string]HeaderConfig `yaml:"required"`
	// Optional headers that can be present
	OptionalHeaders map[string]HeaderConfig `yaml:"optional"`
	// Custom headers that can be dynamically added
	CustomHeaders map[string]HeaderConfig `yaml:"custom"`
}

DynamicHeaderConfig defines the configuration for dynamic headers

func GetGlobalHeaderConfig added in v0.18.0

func GetGlobalHeaderConfig() *DynamicHeaderConfig

GetGlobalHeaderConfig returns the global header configuration

type DynamicRequestHeader added in v0.18.0

type DynamicRequestHeader struct {
	// Core headers that are always present
	RequestId string `header:"Request-Id" reqHeader:"Request-Id" validate:"required,min=10,max=64"`
	Program   string `header:"Program-Id" reqHeader:"Program-Id"`
	Module    string `header:"Module-Id"  reqHeader:"Module-Id"`
	Method    string `header:"Method-Id"  reqHeader:"Method-Id"`
	User      string `header:"User-Id"    reqHeader:"User-Id"`

	// Dynamic headers stored as key-value pairs
	DynamicHeaders map[string]string `json:"dynamicHeaders"`

	// Configuration for header validation
	Config *DynamicHeaderConfig `json:"-"`
}

DynamicRequestHeader represents a dynamic header structure

func CreateDynamicRequestHeader added in v0.18.0

func CreateDynamicRequestHeader() *DynamicRequestHeader

CreateDynamicRequestHeader creates a new dynamic request header with global configuration

func NewDynamicRequestHeader added in v0.18.0

func NewDynamicRequestHeader(config *DynamicHeaderConfig) *DynamicRequestHeader

NewDynamicRequestHeader creates a new dynamic request header with configuration

func (DynamicRequestHeader) GetBank added in v0.18.0

func (r DynamicRequestHeader) GetBank() string

func (DynamicRequestHeader) GetBranch added in v0.18.0

func (r DynamicRequestHeader) GetBranch() string

func (*DynamicRequestHeader) GetDynamicHeader added in v0.18.0

func (r *DynamicRequestHeader) GetDynamicHeader(key string) string

GetDynamicHeader gets a dynamic header value

func (*DynamicRequestHeader) GetDynamicHeaderWithDefault added in v0.18.0

func (r *DynamicRequestHeader) GetDynamicHeaderWithDefault(key string) string

GetDynamicHeaderWithDefault gets a dynamic header value with default fallback

func (*DynamicRequestHeader) GetHeaderMap added in v0.18.0

func (r *DynamicRequestHeader) GetHeaderMap() map[string]string

GetHeaderMap returns all headers as a map for easy access

func (DynamicRequestHeader) GetId added in v0.18.0

func (r DynamicRequestHeader) GetId() string

Dynamic header compatibility methods

func (DynamicRequestHeader) GetMethod added in v0.18.0

func (r DynamicRequestHeader) GetMethod() string

func (DynamicRequestHeader) GetModule added in v0.18.0

func (r DynamicRequestHeader) GetModule() string

func (DynamicRequestHeader) GetPerson added in v0.18.0

func (r DynamicRequestHeader) GetPerson() string

func (DynamicRequestHeader) GetProgram added in v0.18.0

func (r DynamicRequestHeader) GetProgram() string

func (DynamicRequestHeader) GetUser added in v0.18.0

func (r DynamicRequestHeader) GetUser() string

func (*DynamicRequestHeader) SetBank added in v0.18.0

func (r *DynamicRequestHeader) SetBank(bank string)

func (*DynamicRequestHeader) SetBranch added in v0.18.0

func (r *DynamicRequestHeader) SetBranch(branch string)

func (*DynamicRequestHeader) SetDynamicHeader added in v0.18.0

func (r *DynamicRequestHeader) SetDynamicHeader(key, value string)

SetDynamicHeader sets a dynamic header value

func (*DynamicRequestHeader) SetMethod added in v0.18.0

func (r *DynamicRequestHeader) SetMethod(method string)

func (*DynamicRequestHeader) SetModule added in v0.18.0

func (r *DynamicRequestHeader) SetModule(module string)

func (*DynamicRequestHeader) SetPerson added in v0.18.0

func (r *DynamicRequestHeader) SetPerson(person string)

func (*DynamicRequestHeader) SetProgram added in v0.18.0

func (r *DynamicRequestHeader) SetProgram(program string)

func (*DynamicRequestHeader) SetUser added in v0.18.0

func (r *DynamicRequestHeader) SetUser(user string)

func (*DynamicRequestHeader) ValidateDynamicHeaders added in v0.18.0

func (r *DynamicRequestHeader) ValidateDynamicHeaders() error

ValidateDynamicHeaders validates all dynamic headers against their configuration

type EventData

type EventData struct {
	Time time.Time         `json:"dt"`
	Tags map[string]string `json:"tags"`
	Logs []LogData         `json:"logs"`
}

type HeaderConfig added in v0.18.0

type HeaderConfig struct {
	HeaderName     string `yaml:"headerName"`     // The actual HTTP header name
	Required       bool   `yaml:"required"`       // Whether this header is required
	MinLength      int    `yaml:"minLength"`      // Minimum length validation
	MaxLength      int    `yaml:"maxLength"`      // Maximum length validation
	DefaultValue   string `yaml:"defaultValue"`   // Default value if not provided
	ValidationRule string `yaml:"validationRule"` // Custom validation rule
	Description    string `yaml:"description"`    // Description for documentation
}

HeaderConfig defines the configuration for a single header

type HeaderConfigLoader added in v0.18.0

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

HeaderConfigLoader handles loading and managing dynamic header configurations

func NewHeaderConfigLoader added in v0.18.0

func NewHeaderConfigLoader(configPath string) *HeaderConfigLoader

NewHeaderConfigLoader creates a new header configuration loader

func (*HeaderConfigLoader) GetConfig added in v0.18.0

func (h *HeaderConfigLoader) GetConfig() *DynamicHeaderConfig

GetConfig returns the loaded configuration

func (*HeaderConfigLoader) GetHeaderConfig added in v0.18.0

func (h *HeaderConfigLoader) GetHeaderConfig(headerName string) (HeaderConfig, bool)

GetHeaderConfig returns the configuration for a specific header

func (*HeaderConfigLoader) GetHeaderNames added in v0.18.0

func (h *HeaderConfigLoader) GetHeaderNames() []string

GetHeaderNames returns all configured header names

func (*HeaderConfigLoader) IsHeaderRequired added in v0.18.0

func (h *HeaderConfigLoader) IsHeaderRequired(headerName string) bool

IsHeaderRequired checks if a header is required

func (*HeaderConfigLoader) LoadConfig added in v0.18.0

func (h *HeaderConfigLoader) LoadConfig() error

LoadConfig loads the header configuration from the specified file

func (*HeaderConfigLoader) LoadConfigFromEnv added in v0.18.0

func (h *HeaderConfigLoader) LoadConfigFromEnv() error

LoadConfigFromEnv loads configuration from environment variables

func (*HeaderConfigLoader) ValidateConfig added in v0.18.0

func (h *HeaderConfigLoader) ValidateConfig() error

ValidateConfig validates the loaded configuration

type HeaderMigration added in v0.18.0

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

HeaderMigration provides utilities for migrating from fixed headers to dynamic headers

func GetGlobalMigration added in v0.18.0

func GetGlobalMigration() *HeaderMigration

GetGlobalMigration returns the global migration instance

func NewHeaderMigration added in v0.18.0

func NewHeaderMigration() *HeaderMigration

NewHeaderMigration creates a new header migration utility

func (*HeaderMigration) AddLegacyMapping added in v0.18.0

func (m *HeaderMigration) AddLegacyMapping(legacyName, newName string)

AddLegacyMapping adds a new legacy mapping

func (*HeaderMigration) ConvertLegacyHeaderName added in v0.18.0

func (m *HeaderMigration) ConvertLegacyHeaderName(legacyName string) string

ConvertLegacyHeaderName converts legacy header names to new format

func (*HeaderMigration) CreateDynamicHeaderFromMap added in v0.18.0

func (m *HeaderMigration) CreateDynamicHeaderFromMap(headers map[string]string) *DynamicRequestHeader

CreateDynamicHeaderFromMap creates a DynamicRequestHeader from a map of headers

func (*HeaderMigration) GetHeaderDifferences added in v0.18.0

func (m *HeaderMigration) GetHeaderDifferences(header1, header2 interface{}) []string

GetHeaderDifferences compares two header structures and returns differences

func (*HeaderMigration) GetLegacyMappings added in v0.18.0

func (m *HeaderMigration) GetLegacyMappings() map[string]string

GetLegacyMappings returns all legacy mappings

func (*HeaderMigration) MigrateFromLegacyHeader added in v0.18.0

func (m *HeaderMigration) MigrateFromLegacyHeader(legacy *RequestHeader) *DynamicRequestHeader

MigrateFromLegacyHeader migrates a legacy RequestHeader to DynamicRequestHeader

func (*HeaderMigration) MigrateToLegacyHeader added in v0.18.0

func (m *HeaderMigration) MigrateToLegacyHeader(dynamic *DynamicRequestHeader) *RequestHeader

MigrateToLegacyHeader migrates a DynamicRequestHeader to legacy RequestHeader

func (*HeaderMigration) ValidateMigration added in v0.18.0

func (m *HeaderMigration) ValidateMigration(legacy *RequestHeader, dynamic *DynamicRequestHeader) error

ValidateMigration validates that a migration was successful

type LogData

type LogData struct {
	Time    time.Time `json:"dt"`
	Program string    `json:"program"`
	Module  string    `json:"module"`
	Method  string    `json:"method"`
	LogText string    `json:"log_text"`
}

type LogRequest added in v0.11.19

type LogRequest struct {
}

func (LogRequest) CheckDuplicateRequest added in v0.11.19

func (l LogRequest) CheckDuplicateRequest(request RequestPtr) error

func (LogRequest) InitRequest added in v0.11.19

func (l LogRequest) InitRequest(c webFramework.WebFramework, method, url string) error

func (LogRequest) Initialize added in v0.11.19

func (l LogRequest) Initialize(c webFramework.WebFramework, method, url string, req RequestPtr, args ...any) (int, map[string]string, error)

func (LogRequest) InitializeNoLog added in v0.11.19

func (l LogRequest) InitializeNoLog(c webFramework.WebFramework, method, url string, req RequestPtr, args ...any) (int, map[string]string, error)

func (LogRequest) InsertRequest added in v0.11.19

func (l LogRequest) InsertRequest(req RequestPtr) error

func (LogRequest) UpdateRequestWithContext added in v0.11.19

func (l LogRequest) UpdateRequestWithContext(ctx context.Context, req RequestPtr) error

type PaginationData added in v0.10.29

type PaginationData struct {
	Start   int    `form:"_start" query:"_start" validate:"omitempty"`
	End     int    `form:"_end" query:"_end" validate:"omitempty"`
	Filters string `form:"_filters" query:"_filters" validate:"omitempty"`
	Sort    string `form:"_sort" query:"_sort" validate:"omitempty"`
	Order   string `form:"_order" query:"_order" validate:"omitempty,oneof=asc desc"`
}

type ParseParams added in v0.15.0

type ParseParams struct {
	W              webFramework.WebFramework
	Mode           Type
	ValidateHeader bool
	Header         webFramework.HeaderInterface
	Name           string
	StoreTags      []string
	StoreHeaders   []string
}

type ParseResult added in v0.15.0

type ParseResult[Req any] struct {
	Request    Req
	RequestPtr RequestPtr
}

func GetRequest

func GetRequest[Q any](w webFramework.WebFramework, isJson bool) (*ParseResult[Q], error)

func Req added in v0.2.0

func Req[Req any, Header any, PT interface {
	webFramework.HeaderInterface
	*Header
}](params ParseParams) (*ParseResult[Req], error)

type Request

type Request struct {
	Header    webFramework.HeaderInterface `json:"header"`
	Id        string                       `json:"id"`
	RequestId string                       `json:"request_id"`
	Time      time.Time                    `json:"dt"`
	Incoming  any                          `json:"incoming"`
	Req       string                       `json:"req"`
	Resp      string                       `json:"resp"`
	Outgoing  any                          `json:"outgoing"`
	Tags      map[string]string            `json:"tags"`
	Result    string                       `json:"result"`
	// Tracing fields
	TraceID string `json:"trace_id"`
	SpanID  string `json:"span_id"`
	Sampled bool   `json:"sampled"`
}

func (*Request) GetTraceContext added in v0.18.0

func (r *Request) GetTraceContext() trace.SpanContext

func (*Request) HasTraceContext added in v0.18.0

func (r *Request) HasTraceContext() bool

func (*Request) SetTraceContext added in v0.18.0

func (r *Request) SetTraceContext(spanCtx trace.SpanContext)

Tracing methods for Request

type RequestHeader

type RequestHeader struct {
	RequestId string `header:"Request-Id" reqHeader:"Request-Id" validate:"required,min=10,max=64"`
	Program   string `header:"Program-Id" reqHeader:"Program-Id"`
	Module    string `header:"Module-Id"  reqHeader:"Module-Id"`
	Method    string `header:"Method-Id"  reqHeader:"Method-Id"`
	User      string `header:"User-Id"    reqHeader:"User-Id"`
	Branch    string `header:"Branch-Id"  reqHeader:"Branch-Id"`
	Bank      string `header:"Bank-Id"    reqHeader:"Bank-Id"`
	Person    string `header:"Person-Id"  reqHeader:"Person-Id"`
}

func ParseRequest added in v0.9.0

func ParseRequest[Req any](
	w webFramework.WebFramework,
	mode Type,
	validateHeader bool,
) (*Req, *RequestHeader, error)

func (RequestHeader) GetBank added in v0.4.7

func (r RequestHeader) GetBank() string

func (RequestHeader) GetBranch added in v0.4.7

func (r RequestHeader) GetBranch() string

func (RequestHeader) GetId added in v0.2.0

func (r RequestHeader) GetId() string

func (RequestHeader) GetMethod added in v0.2.0

func (r RequestHeader) GetMethod() string

func (RequestHeader) GetModule added in v0.2.0

func (r RequestHeader) GetModule() string

func (RequestHeader) GetPerson added in v0.4.7

func (r RequestHeader) GetPerson() string

func (RequestHeader) GetProgram added in v0.2.0

func (r RequestHeader) GetProgram() string

func (RequestHeader) GetUser added in v0.2.0

func (r RequestHeader) GetUser() string

func (*RequestHeader) SetBank added in v0.4.7

func (r *RequestHeader) SetBank(bank string)

func (*RequestHeader) SetBranch added in v0.4.7

func (r *RequestHeader) SetBranch(branch string)

func (*RequestHeader) SetMethod added in v0.2.0

func (r *RequestHeader) SetMethod(method string)

func (*RequestHeader) SetModule added in v0.2.0

func (r *RequestHeader) SetModule(module string)

func (*RequestHeader) SetPerson added in v0.4.7

func (r *RequestHeader) SetPerson(person string)

func (*RequestHeader) SetProgram added in v0.2.0

func (r *RequestHeader) SetProgram(program string)

func (*RequestHeader) SetUser added in v0.2.0

func (r *RequestHeader) SetUser(user string)

type RequestInterface

type RequestInterface interface {
	Initialize(c webFramework.WebFramework, method, url string, req RequestPtr, args ...any) (int, map[string]string, error)
	InitRequest(c webFramework.WebFramework, method, url string) error
	InitializeNoLog(c webFramework.WebFramework, method, url string, req RequestPtr, args ...any) (int, map[string]string, error)
	InsertRequest(request RequestPtr) error
	CheckDuplicateRequest(request RequestPtr) error
	UpdateRequestWithContext(ctx context.Context, request RequestPtr) error
}

type RequestModel

type RequestModel struct {
	QueryInterface libQuery.QueryRunnerInterface
	InsertInDb     string
	UpdateInDb     string
	QueryInDb      string
}

func (RequestModel) CheckDuplicateRequest

func (m RequestModel) CheckDuplicateRequest(request RequestPtr) error

func (RequestModel) InitRequest added in v0.9.1

func (m RequestModel) InitRequest(w webFramework.WebFramework, method, url string) error

func (RequestModel) Initialize

func (m RequestModel) Initialize(w webFramework.WebFramework, method, url string, req RequestPtr, args ...any) (int, map[string]string, error)

func (RequestModel) InitializeNoLog

func (m RequestModel) InitializeNoLog(w webFramework.WebFramework, method, url string, req RequestPtr, args ...any) (int, map[string]string, error)

func (RequestModel) InsertRequest

func (m RequestModel) InsertRequest(request RequestPtr) error

func (RequestModel) InsertRequestWithContext added in v0.6.10

func (m RequestModel) InsertRequestWithContext(ctx context.Context, request RequestPtr) error

func (RequestModel) UpdateRequest

func (m RequestModel) UpdateRequest(request RequestPtr) error

func (RequestModel) UpdateRequestWithContext added in v0.6.10

func (m RequestModel) UpdateRequestWithContext(ctx context.Context, request RequestPtr) error

type RequestPtr added in v0.9.0

type RequestPtr *Request

type Type added in v0.5.7

type Type int
const (
	NoBinding Type = iota
	JSON
	JSONWithURI
	Query
	QueryWithURI
	QueryWithPagination
	URI
	URIAndPagination
)

func TypeString added in v0.5.7

func TypeString(s string) (Type, error)

TypeString retrieves an enum value from the enum constants string name. Throws an error if the param is not part of the enum.

func TypeValues added in v0.5.7

func TypeValues() []Type

TypeValues returns all values of the enum

func (Type) IsAType added in v0.5.7

func (i Type) IsAType() bool

IsAType returns "true" if the value is listed in the enum definition. "false" otherwise

func (Type) MarshalJSON added in v0.5.7

func (i Type) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface for Type

func (Type) String added in v0.5.7

func (i Type) String() string

func (*Type) UnmarshalJSON added in v0.5.7

func (i *Type) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the json.Unmarshaler interface for Type

Jump to

Keyboard shortcuts

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