Documentation
      ¶
    
    
  
    
  
    Overview ¶
Package core provides the core interfaces and types for the HTTP server abstraction.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Context ¶
type Context interface {
	// Request returns the underlying HTTP request.
	Request() *http.Request
	// Writer returns the underlying ResponseWriter.
	Writer() http.ResponseWriter
	// Param returns the value of the URL param.
	Param(key string) string
	// Query returns the value of the URL query parameter.
	Query(key string) string
	// DefaultQuery returns the value of the URL query parameter or the default value.
	DefaultQuery(key, defaultValue string) string
	// GetHeader returns the value of the request header.
	GetHeader(key string) string
	// SetHeader sets a response header.
	SetHeader(key, value string)
	// SetStatus sets the HTTP response status code.
	SetStatus(code int)
	// JSON serializes the given struct as JSON into the response body.
	JSON(code int, obj interface{})
	// String writes the given string into the response body.
	String(code int, format string, values ...interface{})
	// Bind binds the request body into the given struct.
	Bind(obj interface{}) error
	// BindJSON binds the JSON request body into the given struct.
	BindJSON(obj interface{}) error
	// ShouldBindJSON binds the JSON request body into the given struct.
	// If there is an error, it returns the error without aborting the request.
	ShouldBindJSON(obj interface{}) error
	// File serves a file.
	File(filepath string)
	// Redirect redirects the request to the given URL.
	Redirect(code int, location string)
	// Error adds an error to the context.
	// This is used by the error handler middleware to handle errors.
	Error(err error) error
	// Errors returns all errors added to the context.
	// This is used to retrieve all errors that occurred during request processing.
	Errors() []error
	// Next calls the next handler in the chain.
	// This is used for middleware flow control.
	Next()
	// Abort prevents pending handlers in the chain from being called.
	// This is used to stop the middleware chain execution.
	Abort()
	// Get returns the value for the given key and a boolean indicating whether the key exists.
	// This is used to retrieve values stored in the context.
	Get(key string) (interface{}, bool)
	// Set stores a value in the context for the given key.
	// This is used to store values in the context.
	Set(key string, value interface{})
}
    Context represents the context of an HTTP request. It abstracts away the underlying framework's context.
type Controller ¶
type Controller interface {
	// GetHttpMethod returns the HTTP method for the route
	GetHttpMethod() HttpMethod
	// GetPath returns the path for the route
	GetPath() string
	// Handler returns handler functions for the route
	Handler() []HandlerFunc
	// SkipLogging returns whether to skip logging for this controller
	SkipLogging() bool
	// SkipAuthCheck returns whether to skip authentication checks for this controller
	SkipAuthCheck() bool
}
    Controller is an interface for defining routes.
type ErrorHandlerConfig ¶
type ErrorHandlerConfig struct {
	// DefaultErrorMessage is the message to use for non-HTTP errors.
	DefaultErrorMessage string
	// DefaultStatusCode is the status code to use for non-HTTP errors.
	DefaultStatusCode int
}
    ErrorHandlerConfig holds configuration for the error handler middleware.
type FrameworkType ¶
type FrameworkType string
FrameworkType represents the type of HTTP framework to use.
const ( // FrameworkGin represents the Gin framework. FrameworkGin FrameworkType = "gin" // FrameworkStdHTTP represents the standard net/http package. FrameworkStdHTTP FrameworkType = "std" )
type HandlerFunc ¶
type HandlerFunc func(c Context)
HandlerFunc is a function that handles an HTTP request.
type HttpMethod ¶
type HttpMethod string
HttpMethod represents an HTTP method.
const ( // GET represents the HTTP GET method. GET HttpMethod = "GET" // POST represents the HTTP POST method. POST HttpMethod = "POST" // PUT represents the HTTP PUT method. PUT HttpMethod = "PUT" // DELETE represents the HTTP DELETE method. DELETE HttpMethod = "DELETE" // PATCH represents the HTTP PATCH method. PATCH HttpMethod = "PATCH" )
type IErrorHandlerMiddleware ¶
type IErrorHandlerMiddleware interface {
	// Middleware returns a middleware function that handles errors.
	Middleware(config *ErrorHandlerConfig) HandlerFunc
}
    IErrorHandlerMiddleware is an interface for error handler middleware implementations. Each framework (Gin, StdHTTP) provides its own implementation of this interface: - Gin implementation: github.com/mythofleader/go-http-server/core/gin.ErrorHandlerMiddleware - Standard HTTP implementation: github.com/mythofleader/go-http-server/core/std.ErrorHandlerMiddleware
type ILoggingMiddleware ¶
type ILoggingMiddleware interface {
	// Middleware returns a middleware function that logs API requests.
	Middleware(config *LoggingConfig) HandlerFunc
}
    ILoggingMiddleware is an interface for logging middleware implementations. Each framework (Gin, StdHTTP) provides its own implementation of this interface: - Gin implementation: github.com/mythofleader/go-http-server/core/gin.LoggingMiddleware - Standard HTTP implementation: github.com/mythofleader/go-http-server/core/std.LoggingMiddleware
type LoggingConfig ¶
type LoggingConfig struct {
	RemoteURL        string
	CustomFields     map[string]string
	LoggingToConsole bool     // Whether to log to console
	LoggingToRemote  bool     // Whether to log to remote
	SkipPaths        []string // List of paths to ignore for logging
}
    LoggingConfig holds configuration for the logging middleware.
type RouterGroup ¶
type RouterGroup interface {
	// GET registers a route for GET requests
	GET(path string, handlers ...HandlerFunc)
	// POST registers a route for POST requests
	POST(path string, handlers ...HandlerFunc)
	// PUT registers a route for PUT requests
	PUT(path string, handlers ...HandlerFunc)
	// DELETE registers a route for DELETE requests
	DELETE(path string, handlers ...HandlerFunc)
	// PATCH registers a route for PATCH requests
	PATCH(path string, handlers ...HandlerFunc)
	// Group creates a new router group
	Group(path string) RouterGroup
	// Use adds middleware to the group
	Use(middleware ...HandlerFunc)
	// RegisterRouter registers routes from Controller objects
	RegisterRouter(controllers ...Controller)
}
    RouterGroup is a group of routes.
type Server ¶
type Server interface {
	// GET registers a route for GET requests
	GET(path string, handlers ...HandlerFunc)
	// POST registers a route for POST requests
	POST(path string, handlers ...HandlerFunc)
	// PUT registers a route for PUT requests
	PUT(path string, handlers ...HandlerFunc)
	// DELETE registers a route for DELETE requests
	DELETE(path string, handlers ...HandlerFunc)
	// PATCH registers a route for PATCH requests
	PATCH(path string, handlers ...HandlerFunc)
	// Group creates a new router group
	Group(path string) RouterGroup
	// Use adds middleware to the server
	Use(middleware ...HandlerFunc)
	// RegisterRouter registers routes from Controller objects
	RegisterRouter(controllers ...Controller)
	// NoRoute registers handlers for 404 Not Found errors
	NoRoute(handlers ...HandlerFunc)
	// NoMethod registers handlers for 405 Method Not Allowed errors
	NoMethod(handlers ...HandlerFunc)
	// Run starts the server
	Run() error
	// Stop stops the server immediately
	Stop() error
	// RunTLS starts the server with TLS
	RunTLS(addr, certFile, keyFile string) error
	// Shutdown gracefully shuts down the server
	Shutdown(ctx context.Context) error
	// GetLoggingMiddleware returns a framework-specific logging middleware
	GetLoggingMiddleware() ILoggingMiddleware
	// GetErrorHandlerMiddleware returns a framework-specific error handler middleware
	GetErrorHandlerMiddleware() IErrorHandlerMiddleware
	// StartLambda starts the server in AWS Lambda mode.
	// This method should be called instead of Run or RunTLS when running in AWS Lambda.
	// It returns an error if the framework does not support Lambda.
	StartLambda() error
	// GetPort returns the port the server is configured to run on.
	// This is useful when using random ports.
	GetPort() string
}
    Server is an interface for HTTP servers. It abstracts away the underlying framework.
      
      Directories
      ¶
    
    | Path | Synopsis | 
|---|---|
| 
       Package gin provides a Gin implementation of the HTTP server abstraction. 
         | 
      Package gin provides a Gin implementation of the HTTP server abstraction. | 
| 
       Package middleware provides common middleware functionality for HTTP servers. 
         | 
      Package middleware provides common middleware functionality for HTTP servers. | 
| 
         
          
            errors
            
            
          
           
      Package errors provides error classes for HTTP status codes. 
         | 
      Package errors provides error classes for HTTP status codes. | 
| 
       Package std provides a standard HTTP implementation of the HTTP server abstraction. 
         | 
      Package std provides a standard HTTP implementation of the HTTP server abstraction. |