gosrvlib

module
v1.90.1 Latest Latest
Warning

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

Go to latest
Published: May 3, 2024 License: MIT

README

gosrvlib

Go Service Library

This Open Source project contains a collection of high-quality GO (golang) packages.

Each package follows common conventions and they can be individually imported in any project.

This package collection forms the base structure for fully-fledged production-ready web-services.

A new Web service can be generated by using the command make project CONFIG=project.cfg. The new generated project name, description, etc..., can be set in the file specified via the CONFIG parameter.

The packages documentation is available at: https://pkg.golang.ir/github.com/Vonage/gosrvlib/

Go Reference
check Coverage Status Coverage Lines of Code
Go Report Card Quality Gate Status Reliability Rating Maintainability Rating Security Rating
Bugs Vulnerabilities Technical Debt Code Smells


TOC


Developers' Quick Start

To quickly get started with this project, follow these steps:

  1. Ensure you have installed the latest Go version and Python3 for some extra tests.
  2. Clone the repository: git clone https://github.com/Vonage/gosrvlib.git.
  3. Change into the project directory: cd gosrvlib.
  4. Install the required dependencies and test everything: DEVMODE=LOCAL make x.

Now you are ready to start developing with gosrvlib!

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.

Alternatively, everything can be built inside a Docker container using the command make dbuild that uses the environment defined at resources/docker/Dockerfile.dev.

To see all available options:

make help

Running all tests

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

DEVMODE=LOCAL make x

Examples

Please check the examples/service 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
awsopt
Package awsopt provides functions to configure common AWS options for the official aws-sdk-go-v2 library.
Package awsopt provides functions to configure common AWS options for the official aws-sdk-go-v2 library.
bootstrap
Package bootstrap provides a simple way to bootstrap an application with managed configuration, logging, metrics, application context, and shutdown signals.
Package bootstrap provides a simple way to bootstrap an application with managed configuration, logging, metrics, application context, and shutdown signals.
config
Package config handles the configuration of a program.
Package config handles the configuration of a program.
decint
Package decint provides utility functions to parse and represent decimal values as integers with a set precision.
Package decint provides utility functions to parse and represent decimal values as integers with a set precision.
dnscache
Package dnscache provides a local DNS cache for LookupHost.
Package dnscache provides a local DNS cache for LookupHost.
encode
Package encode provides serialization and deserialization functions to safely transmit, store and retrieve data between different systems (e.g., databases, queues, caches, etc.).
Package encode provides serialization and deserialization functions to safely transmit, store and retrieve data between different systems (e.g., databases, queues, caches, etc.).
encrypt
Package encrypt contains a collection of utility functions to encrypt and decrypt data.
Package encrypt contains a collection of utility functions to encrypt and decrypt data.
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.
enumcache
Package enumcache provides simple thread-safe methods to store and retrieve enumeration sets with an integer ID and string name.
Package enumcache provides simple thread-safe methods to store and retrieve enumeration sets with an integer ID and string name.
enumdb
Package enumdb allows to load enumeration sets (enumcache) from multiple database tables.
Package enumdb allows to load enumeration sets (enumcache) from multiple database tables.
errtrace
Package errtrace provides a function to automatically trace errors.
Package errtrace provides a function to automatically trace errors.
filter
Package filter provides generic rule-based filtering capabilities for struct slices.
Package filter provides generic rule-based filtering capabilities for struct slices.
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 a configurable and instrumented HTTP client with common options.
Package httpclient provides a configurable and instrumented HTTP client with common options.
httpretrier
Package httpretrier provides the ability to automatically repeat HTTP requests based on user-defined conditions.
Package httpretrier provides the ability to automatically repeat HTTP requests based on user-defined conditions.
httpreverseproxy
Package httpreverseproxy provides an HTTP Reverse Proxy that takes an incoming request and sends it to another server, proxying the response back to the client.
Package httpreverseproxy provides an HTTP Reverse Proxy that takes an incoming request and sends it to another server, proxying the response back to the client.
httpserver
Package httpserver defines a default configurable HTTP server with common routes and options.
Package httpserver defines a default configurable HTTP server with common routes and options.
httpserver/route
Package route is deprecated.
Package route is deprecated.
httputil
Package httputil contains a collection of common HTTP Request and Response utility functions.
Package httputil contains a collection of common HTTP Request and Response utility functions.
httputil/jsendx
Package jsendx implements a custom JSend model to wrap all HTTP responses in a consistent JSON object with default fields.
Package jsendx implements a custom JSend model to wrap all HTTP responses in a consistent 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 simple wrapper functions to manage basic JWT Auth with username/password credentials.
Package jwt provides simple wrapper functions to manage basic JWT Auth with username/password credentials.
kafka
Package kafka provides a simple high-level API for producing and consuming Apache Kafka messages.
Package kafka provides a simple high-level API for producing and consuming Apache Kafka messages.
kafkacgo
Package kafkacgo provides a simple high-level API for producing and consuming Apache Kafka messages.
Package kafkacgo provides a simple high-level API for producing and consuming Apache Kafka messages.
logging
Package logging implements a structured-log model with common functionalities and utility functions.
Package logging implements a structured-log model with common functionalities and utility functions.
maputil
Package maputil provides a collection of map utility functions.
Package maputil provides a collection of map utility functions.
metrics
Package metrics defines a common interface for instrumenting applications and components to collect metrics.
Package metrics defines a common interface for instrumenting applications and components to collect metrics.
metrics/prometheus
Package prometheus implements the metrics interface for Prometheus.
Package prometheus implements the metrics interface for Prometheus.
metrics/statsd
Package statsd implements the metrics interface for StatsD.
Package statsd implements the metrics interface for 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.
passwordhash
Package passwordhash provides functions to create and verify a password hash using a strong one-way hashing algorithm.
Package passwordhash provides functions to create and verify a password hash using a strong one-way hashing algorithm.
periodic
Package periodic provides a way to execute a given function periodically at a specified interval.
Package periodic provides a way to execute a given function periodically at a specified interval.
profiling
Package profiling provides an HTTP handler that can be registered to a router to expose pprof profiling data.
Package profiling provides an HTTP handler that can be registered to a router to expose pprof profiling data.
randkey
Package randkey provides utility functions to generate random uint64 keys in different formats.
Package randkey provides utility functions to generate random uint64 keys in different formats.
random
Package random contains a collection of utility functions to generate random numbers and strings.
Package random contains a collection of utility functions to generate random numbers and strings.
redact
Package redact contains utility functions to obscure sensitive data.
Package redact contains utility functions to obscure sensitive data.
retrier
Package retrier provides the ability to automatically repeat a user-defined function based on the error status.
Package retrier provides the ability to automatically repeat a user-defined function based on the error status.
s3
Package s3 provides a simple client to interact with a AWS S3 bucket, including the ability to upload, download, and delete objects.
Package s3 provides a simple client to interact with a AWS S3 bucket, including the ability to upload, download, and delete objects.
slack
Package slack is a basic client for the official Slack API to send messages via a Webhook.
Package slack is a basic client for the official Slack API to send messages via a Webhook.
sleuth
Package sleuth is a basic client for the official Sleuth.io API to register deployments, manual changes, custom incident impact, and custom metric impact.
Package sleuth is a basic client for the official Sleuth.io API to register deployments, manual changes, custom incident impact, and custom metric impact.
sliceutil
Package sliceutil provides a collection of slice utility functions, including descriptive statistics functions for numerical slices.
Package sliceutil provides a collection of slice utility functions, including descriptive statistics functions for numerical slices.
sqlconn
Package sqlconn provides a simple way to connect to a SQL database and manage the connection.
Package sqlconn provides a simple way to connect to a SQL database and manage the connection.
sqltransaction
Package sqltransaction provides a simple way to execute a function inside an SQL transaction.
Package sqltransaction provides a simple way to execute a function inside an SQL transaction.
sqlutil
Package sqlutil provides SQL utilities.
Package sqlutil provides SQL utilities.
sqlxtransaction
Package sqlxtransaction provides a simple way to execute a function inside an SQLX transaction.
Package sqlxtransaction provides a simple way to execute a function inside an SQLX transaction.
sqs
Package sqs provides a simple client to interact with a AWS SQS (Amazon Simple Queue Service), including the ability to send, receive, and delete messages.
Package sqs provides a simple client to interact with a AWS SQS (Amazon Simple Queue Service), including the ability to send, receive, and delete messages.
stringkey
Package stringkey provides the ability to create a simple unique key from multiple strings.
Package stringkey provides the ability to create a simple unique key from multiple strings.
testutil
Package testutil provides common testing utility functions.
Package testutil provides common testing utility functions.
threadsafe
Package threadsafe provides an interface for thread-safe functions that can be safely used between multiple goroutines.
Package threadsafe provides an interface for thread-safe functions that can be safely used between multiple goroutines.
threadsafe/tsmap
Package tsmap provides a collection of generic thread-safe map utility functions that can be safely used between multiple goroutines.
Package tsmap provides a collection of generic thread-safe map utility functions that can be safely used between multiple goroutines.
threadsafe/tsslice
Package tsslice provides a collection of generic thread-safe slice utility functions that can be safely used between multiple goroutines.
Package tsslice provides a collection of generic thread-safe slice utility functions that can be safely used between multiple goroutines.
timeutil
Package timeutil adds utility functions to the standard time library.
Package timeutil adds utility functions to the standard time library.
traceid
Package traceid allows to store and retrieve a trace ID value associated with a context.Context and an HTTP request.
Package traceid allows to store and retrieve a trace ID value associated with a context.Context and an HTTP request.
typeutil
Package typeutil contains a collection of type-related utility functions.
Package typeutil contains a collection of type-related utility functions.
uid
Package uid provides functions to generate simple time-and-random-based unique identifiers.
Package uid provides functions to generate simple time-and-random-based unique identifiers.
uidc
Package uidc provides functions to generate simple time-and-random-based unique identifiers.
Package uidc provides functions to generate simple time-and-random-based unique identifiers.
validator
Package validator provides a simple and extensible fields validation mechanism for structs and individual fields based on tags.
Package validator provides a simple and extensible fields validation mechanism 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