gosrvlib

module
v1.8.1 Latest Latest
Warning

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

Go to latest
Published: Jul 12, 2021 License: MIT

README

gosrvlib

Go Service Library

This Open Source project contains a collection of common GO packages that forms the base structure of a service.

check whitesource Go Report Card Go Reference


TOC


Quick Start

This project includes a Makefile that allows you to test and build the project in a Linux-compatible system with simple commands.
All the artifacts and reports produced using this Makefile are stored in the target folder.

All the packages listed in the resources/docker/Dockerfile file are required in order to build and test all the library options in the current environment. Alternatively, everything can be built inside a Docker container using the command "make dbuild".

To see all available options:

make help

To build the project inside a Docker container (requires Docker):

make dbuild

An arbitrary make target can be executed inside a Docker container by specifying the "MAKETARGET" parameter:

MAKETARGET='deps mod qa example' make dbuild

The list of make targets can be obtained by typing make

The base Docker building environment is defined in the following Dockerfile:

resources/docker/Dockerfile.dev

To download all dependencies:

make deps

To update the mod file:

make mod

To execute all the default test builds and generate reports in the current environment:

make qa

To format the code (please use this command before submitting any pull request):

make format

Running all tests

Before committing the code, please format it and check if it passes all tests using

DEVMODE=LOCAL make format clean mod deps generate qa example

Examples

Please check the examples folder for an example of a service based on this library.

The following command generates a new project from the example using the data set in the project.cfg file:

make project CONFIG=project.cfg

Directories

Path Synopsis
pkg
bootstrap
Package bootstrap provides a simple way to bootstrap an application with a managed logging framework, metrics and application context.
Package bootstrap provides a simple way to bootstrap an application with a managed logging framework, metrics and application context.
config
Package config handles the configuration of the program.
Package config handles the configuration of the program.
decint
Package decint provides utility functions to parse and represent decimal values as integer with a set precision.
Package decint provides utility functions to parse and represent decimal values as integer with a set precision.
enumbitmap
Package enumbitmap provides functions to encode slices of enumeration strings into integer bitmap values and vice versa.
Package enumbitmap provides functions to encode slices of enumeration strings into integer bitmap values and vice versa.
errtrace
Package errtrace provides utilities to annotate errors.
Package errtrace provides utilities to annotate errors.
healthcheck
Package healthcheck provides a simple way to define health checks for external services or components.
Package healthcheck provides a simple way to define health checks for external services or components.
httpclient
Package httpclient provides an instrumented HTTP client with the addition of the traceID header and logging.
Package httpclient provides an instrumented HTTP client with the addition of the traceID header and logging.
httpretrier
Package httpretrier allow to retry HTTP requests based on HTTP status code boolean conditions.
Package httpretrier allow to retry HTTP requests based on HTTP status code boolean conditions.
httpserver
Package httpserver defines a default HTTP server with common routes.
Package httpserver defines a default HTTP server with common routes.
httpserver/route
Package route defines the endpoints for the HTTP server.
Package route defines the endpoints for the HTTP server.
httputil
Package httputil contains a collection of HTTP request and response utility functions.
Package httputil contains a collection of HTTP request and response utility functions.
httputil/jsendx
Package jsendx implements a custom JSEND model to wrap HTTP responses in a JSON object with default fields.
Package jsendx implements a custom JSEND model to wrap HTTP responses in a JSON object with default fields.
ipify
Package ipify allows to get the public IP address of this service instance via the ipify API (https://www.ipify.org/).
Package ipify allows to get the public IP address of this service instance via the ipify API (https://www.ipify.org/).
jwt
Package jwt provides JWT Auth handlers.
Package jwt provides JWT Auth handlers.
logging
Package logging provides an interface to configure and use the logging framework in a consistent way across multiple applications.
Package logging provides an interface to configure and use the logging framework in a consistent way across multiple applications.
metrics
Package metrics defines a general interface for metrics instrumentation.
Package metrics defines a general interface for metrics instrumentation.
metrics/prometheus
Package prometheus implements the metrics interface with Prometheus.
Package prometheus implements the metrics interface with Prometheus.
metrics/statsd
Package statsd implements the metrics interface with StatsD.
Package statsd implements the metrics interface with StatsD.
mysqllock
Package mysqllock provides a distributed locking mechanism leveraging MySQL internal functions.
Package mysqllock provides a distributed locking mechanism leveraging MySQL internal functions.
paging
Package paging contains utilities to handle pagination.
Package paging contains utilities to handle pagination.
profiling
Package profiling is used to expose runtime profiling data (pprof).
Package profiling is used to expose runtime profiling data (pprof).
redact
Package redact contains utilities functions to obscure sensitive data.
Package redact contains utilities functions to obscure sensitive data.
slack
Package slack is a basic Slack API client to send messages via a Webhook.
Package slack is a basic Slack API client to send messages via a Webhook.
sqlconn
Package sqlconn provides a simple way to manage a SQL-based database connection.
Package sqlconn provides a simple way to manage a SQL-based database connection.
sqlutil
Package sqlutil provides SQL utilities.
Package sqlutil provides SQL utilities.
testutil
Package testutil provides common testing utility functions.
Package testutil provides common testing utility functions.
traceid
Package traceid provide a simple mechanism to save/extract a Trace ID HTTP header to/from a context.Context and http.Request.
Package traceid provide a simple mechanism to save/extract a Trace ID HTTP header to/from a context.Context and http.Request.
uid
Package uid provides fast functions to generate simple time-and-random-based unique identifiers.
Package uid provides fast functions to generate simple time-and-random-based unique identifiers.
uidc
Package uidc provides cryptographic-grade functions to generate simple time-and-random-based unique identifiers.
Package uidc provides cryptographic-grade functions to generate simple time-and-random-based unique identifiers.
validator
Package validator wraps https://github.com/go-playground/validator to provide value validations for structs and individual fields based on tags.
Package validator wraps https://github.com/go-playground/validator to provide value validations for structs and individual fields based on tags.

Jump to

Keyboard shortcuts

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