Metadata-Version: 2.4
Name: multiplayer-session-recorder
Version: 0.1.0
Summary: Multiplayer Session Recorder
Project-URL: Homepage, https://github.com/multiplayer-app/multiplayer-session-recorder-python
Project-URL: Repository, https://github.com/multiplayer-app/multiplayer-session-recorder-python
Author-email: Multiplayer Authors <hello@multiplayer.app>
License: Apache-2.0
License-File: LICENSE
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: OpenTelemetry
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Typing :: Typed
Requires-Python: >=3.8
Requires-Dist: opentelemetry-api>=1.29.0
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.29.0
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.29.0
Requires-Dist: opentelemetry-sdk>=1.29.0
Provides-Extra: django
Requires-Dist: django>=3.2; extra == 'django'
Provides-Extra: flask
Requires-Dist: flask>=2.0; extra == 'flask'
Requires-Dist: opentelemetry-instrumentation-flask>=0.43b0; extra == 'flask'
Description-Content-Type: text/markdown

# Session Recorder python
============================================================================
##  Introduction
The `multiplayer-session-recorder` module integrates OpenTelemetry with the Multiplayer platform to enable seamless trace collection and analysis. This library helps developers monitor, debug, and document application performance with detailed trace data. It supports flexible trace ID generation, sampling strategies.

## Installation

To install the `multiplayer-session-recorder` module, use the following command:

```bash
pip install multiplayer-session-recorder
```

## Session Recorder Initialization

```python
from multiplayer.session_recorder import session_recorder

session_recorder.init({
  apiKey: "{YOUR_API_KEY}",
  traceIdGenerator: idGenerator,
  resourceAttributes: {
    serviceName: "{YOUR_APPLICATION_NAME}",
    version: "{YOUR_APPLICATION_VERSION}",
    environment: "{YOUR_APPLICATION_ENVIRONMENT}",
  }
})
```

## Example Usage

```python
from multiplayer.session_recorder import session_recorder, SessionType
// Session recorder trace id generator which is used during opentelemetry initialization
from .opentelemetry import id_generator

session_recorder.init({
  apiKey: "{YOUR_API_KEY}",
  traceIdGenerator: id_generator,
  resourceAttributes: {
    serviceName: "{YOUR_APPLICATION_NAME}",
    version: "{YOUR_APPLICATION_VERSION}",
    environment: "{YOUR_APPLICATION_ENVIRONMENT}",
  }
})

# ...

session_recorder.start(
    SessionType.PLAIN,
    {
      name: "This is test session",
      sessionAttributes: {
        accountId: "687e2c0d3ec8ef6053e9dc97",
        accountName: "Acme Corporation"
      }
    }
  )

  # do something here

  session_recorder.stop()
```

## Session Recorder trace Id generator

```python
from multiplayer.session_recorder import SessionRecorderTraceIdRatioBasedSampler

sampler = SessionRecorderTraceIdRatioBasedSampler(rate = 1/2)
```

## Session Recorder trace id ratio based sampler

```python
from multiplayer.session_recorder import SessionRecorderRandomIdGenerator

id_generator = SessionRecorderRandomIdGenerator(autoDocTracesRatio = 1/1000)
```

## Django http payload recorder middleware

```python
from multiplayer.session_recorder import DjangoOtelHttpPayloadRecorderMiddleware

DjangoOtelHttpPayloadRecorderMiddleware({
    "captureBody": True,
    "captureHeaders": True,
    "maxPayloadSizeBytes": 10000,
    "isMaskBodyEnabled": True,
    "maskBodyFieldsList": ["password", "token"],
    "isMaskHeadersEnabled": True,
    "maskHeadersList": ["authorization"],
})

```

## Flask http payload recorder middleware

```python
from flask import Flask
from multiplayer.session_recorder import FlaskOtelHttpPayloadRecorderMiddleware

app = Flask(__name__)

# Add middleware BEFORE request handlers run
@app.before_request
def before_request():
    FlaskOtelHttpPayloadRecorderMiddleware.capture_request_body(
        maxPayloadSizeBytes=10000,
        captureBody=True,
        captureHeaders=True,
        isMaskBodyEnabled=True,
        maskBodyFieldsList=["password", "secret"],
        isMaskHeadersEnabled=True,
        maskHeadersList=["authorization"],
    )

# Add middleware AFTER request finishes
@app.after_request
def after_request(response):
    FlaskOtelHttpPayloadRecorderMiddleware.capture_response_body(
        response,
        maxPayloadSizeBytes=10000,
        captureBody=True,
        captureHeaders=True,
        isMaskBodyEnabled=True,
        maskBodyFieldsList=["token"],
        isMaskHeadersEnabled=True,
        maskHeadersList=["set-cookie"],
    )
    return response
```
