This project includes a series of tools and libraries applicable to OpenIM, along with some other project-provided tool supports, aimed at supporting efficient solution development. Below is an introduction to the functionalities of each module:
api2rpc.go: A tool for converting API to RPC, used for converting HTTP API requests into RPC calls.
format.go,gin.go,http.go,resp.go: Handles the formatting, encapsulation, and sending of API responses, supporting different web frameworks.
check.go: Provides service health checks and dependency verification functions.
config.go,config_parser.go,config_source.go,manager.go,path.go: Configuration management module, supporting the parsing, loading, and dynamic updating of configurations.validation: Provides tools and libraries for configuration validation.
mongo,pagination,redis,tx.go: Database operation-related tools, including support for MongoDB, Redis, and transaction management.
discovery_register.go: Service discovery and registration functions.zookeeper: Service discovery implementation based on Zookeeper.
env.go,env_test.go: Environment variable management tools, including loading and parsing environment variables.
code.go,coderr.go,error.go,predefine.go,relation.go: Error code management and custom error types.
file.go,path.go: Utilities for file operations and path generation.- Related test files.
color.go,encoder.go,logger.go,sql_logger.go,zap.go,zk_logger.go: Log management module, supporting multiple log formats and outputs.
Important
For more information about OpenIM log, please read https://github.com/openimsdk/open-im-server/blob/main/docs/contrib/logging.md
ctx.go: Context management tool, used for passing request-related information between middleware and services.
kafka: Support for message queues based on Kafka.
gin.go,intercept_chain.go,rpc_client_interceptor.go,rpc_server_interceptor.go: Middleware and interceptors, used for preprocessing and postprocessing of requests.specialerror: Special error handling module.
jwt_token.go,jwt_token_test.go: JWT token verification and testing.
The utils contain multiple utility libraries, such as encoding, encrypt, httputil, jsonutil, network, splitter, stringutil, timeutil: Providing various common functionalities, such as encryption, encoding, network operations, etc.
base64.go&base64_test.go: Provides utility functions for Base64 encoding and decoding, and their unit tests.
encryption.go&encryption_test.go: Contains functionalities for encryption and decryption, supporting common encryption algorithms, and related unit tests.
jsonutils.go&jsonutils_test.go: Provides utility functions for handling JSON data, such as parsing and generating JSON, and related unit tests.
http_client.go&http_client_test.go: Encapsulates HTTP client operations, providing convenient methods for sending HTTP requests, and their unit tests.
interface.go,json.go&json_test.go: Focuses on JSON data handling, including more advanced JSON operations and customized JSON parsing methods, and their unit tests.
ip.go&ip_test.go: Provides network-related utility functions, such as parsing and validating IP addresses, and related unit tests.
splitter.go&splitter_test.go: Provides tools for splitting strings, supporting various splitting strategies and complex splitting scenarios, and their unit tests.
strings.go&strings_test.go: Contains a series of utility functions for string operations, such as modifying, searching, comparing strings, and their unit tests.
time_format.go&time_format_test.go: Provides utility functions related to time, including parsing and formatting time formats, and related unit tests.
base.go,doc.go,types.go,version.go: Version management tool, used for defining and managing project version information.