Skip to main content

Shared library for microservice

Project description

FDC Shared Kernel

Shared Kernel is a lightweight, modular Python library designed to facilitate rapid development of microservices. It provides essential utilities for data manipulation, logging, configuration management, and database connectivity, making it an ideal foundation for building scalable and maintainable microservices.

Table of Contents

Getting Started

Prerequisites

  • Python 3.6+
  • Pip

Installation

To install Shared Kernel, clone the repository and install it using pip:

   pip install fdc-shared-kernel

Usage

Importing Modules

Import the required modules from Shared Kernel into your project:

from shared_kernel.logger import Logger
from shared_kernel.config import Config
from dotenv import find_dotenv


def main():
    logger = Logger(name="my_app")
    logger.configure_logger()

    # Specify the path to the .env file if it's not in the current directory
    config_manager = Config(env_path=find_dotenv())

    # Access environment variables
    api_key = config_manager.get("KEY", "default_api_key")

    # Example usage
    logger.logger.info("This is an info message.")
    logger.logger.error("This is an error message.")
    logger.logger.info(api_key)


if __name__ == "__main__":
    main()

Initializing Database Connection

Use the DB class to initialize a database connection:

from shared_kernel.DB import DB

db_instance = DB("postgresql://user:password@localhost/dbname") 
engine, SessionLocal = db_instance.init_db_connection()

Initializing NATS Connection

Use the NATSClient class to initialize:

from shared_kernel.messaging import NATSClient
import asyncio

def run():
  nats_instance = NATSClient("nats://localhost:4222") 
    await nc_interface.connect()

    async def message_callback(data):
        print(f"Received a message: {data}")

    await nc_interface.subscribe("example_subject", message_callback)
    await nc_interface.publish("example_subject", "Hello NATS!")
    
if __name__ == '__main__':
    asyncio.run(run())

Using Keyvault Manager

Use the KeyVaultManager class to initialize:

from shared_kernel.security import KeyVaultManager

def run():
    aws_vault = KeyVaultManager.create_key_vault('aws', {
        'region_name': 'us-east-1',
        'AWS_SERVER_PUBLIC_KEY': '<key here>',
        'AWS_SERVER_SECRET_KEY': '<secret here>'
    })
    # AWS Secrets Manager operations
    aws_vault.store_secret("fdc_api_key", "123456")
    
    print(aws_vault.retrieve_secret("fdc_api_key"))  # Output: 123456
    
    print(aws_vault.list_secrets())  # Output: ['fdc_api_key']
    
    aws_vault.delete_secret("api_key")
    print(aws_vault.list_secrets())  # Output: []
if __name__ == '__main__':
    run()

Using JWT Token handler

Use the JWTTokenHandler class to initialize:

from shared_kernel.security import JWTTokenHandler

def run():
  secret_key = 'your-secret-key'
  token_handler = JWTTokenHandler(secret_key)
  payload = token_handler.decode_token('your-jwt-token')

if __name__ == '__main__':
    run()

Using JWTTokenHandler

Use the JWTTokenHandler class to initialize:

from shared_kernel.auth import JWTTokenHandler

def run():
  secret_key = 'your-secret-key'
  token_handler = JWTTokenHandler(secret_key)
  payload = token_handler.decode_token('your-jwt-token')
if __name__ == '__main__':
    run()

In routes

from shared_kernel.auth import token_required

@app.route('/')
@token_required
def user(current_user):
  return jsonify(current_user)

Using HTTP Client

Use the HttpClient class to initialize:

from shared_kernel.http import HttpClient

def run():
  client = HttpClient()
  response_data = client.get("https://api.example.com/data")
  print(response_data)
if __name__ == '__main__':
    run()

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fdc_shared_kernel-0.0.174.tar.gz (93.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fdc_shared_kernel-0.0.174-py3-none-any.whl (164.7 kB view details)

Uploaded Python 3

File details

Details for the file fdc_shared_kernel-0.0.174.tar.gz.

File metadata

  • Download URL: fdc_shared_kernel-0.0.174.tar.gz
  • Upload date:
  • Size: 93.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.20

File hashes

Hashes for fdc_shared_kernel-0.0.174.tar.gz
Algorithm Hash digest
SHA256 ace61d15dcd3598d468e7e4cc1095ea5c4b6c90ac341388a750ed3a8f5fbbf80
MD5 b84bcfd7da26fd9dc10d8a9faf5c6c98
BLAKE2b-256 7412f773d1c1c6a0d154a3a780d2ffc3b610c91c36168bf94fad78aa319a4a8d

See more details on using hashes here.

File details

Details for the file fdc_shared_kernel-0.0.174-py3-none-any.whl.

File metadata

File hashes

Hashes for fdc_shared_kernel-0.0.174-py3-none-any.whl
Algorithm Hash digest
SHA256 a92202d3e63bdd91ad401d36e593fff6ad16101092aa62d3d9a7f566d44806d4
MD5 d077c453f87061355b2b4fc2d2845c0b
BLAKE2b-256 f639dfe247d7ab3a049d909606f8f20d1849ecf14a148fb097a1b1cab6174f00

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page