__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
import uuid
from datetime import datetime, timezone
from typing import TYPE_CHECKING
from sentry_sdk.utils import format_timestamp
if TYPE_CHECKING:
from typing import Any, Dict, Optional, Union
from sentry_sdk._types import SessionStatus
def _minute_trunc(ts: "datetime") -> "datetime":
return ts.replace(second=0, microsecond=0)
def _make_uuid(
val: "Union[str, uuid.UUID]",
) -> "uuid.UUID":
if isinstance(val, uuid.UUID):
return val
return uuid.UUID(val)
class Session:
def __init__(
self,
sid: "Optional[Union[str, uuid.UUID]]" = None,
did: "Optional[str]" = None,
timestamp: "Optional[datetime]" = None,
started: "Optional[datetime]" = None,
duration: "Optional[float]" = None,
status: "Optional[SessionStatus]" = None,
release: "Optional[str]" = None,
environment: "Optional[str]" = None,
user_agent: "Optional[str]" = None,
ip_address: "Optional[str]" = None,
errors: "Optional[int]" = None,
user: "Optional[Any]" = None,
session_mode: str = "application",
) -> None:
if sid is None:
sid = uuid.uuid4()
if started is None:
started = datetime.now(timezone.utc)
if status is None:
status = "ok"
self.status = status
self.did: "Optional[str]" = None
self.started = started
self.release: "Optional[str]" = None
self.environment: "Optional[str]" = None
self.duration: "Optional[float]" = None
self.user_agent: "Optional[str]" = None
self.ip_address: "Optional[str]" = None
self.session_mode: str = session_mode
self.errors = 0
self.update(
sid=sid,
did=did,
timestamp=timestamp,
duration=duration,
release=release,
environment=environment,
user_agent=user_agent,
ip_address=ip_address,
errors=errors,
user=user,
)
@property
def truncated_started(self) -> "datetime":
return _minute_trunc(self.started)
def update(
self,
sid: "Optional[Union[str, uuid.UUID]]" = None,
did: "Optional[str]" = None,
timestamp: "Optional[datetime]" = None,
started: "Optional[datetime]" = None,
duration: "Optional[float]" = None,
status: "Optional[SessionStatus]" = None,
release: "Optional[str]" = None,
environment: "Optional[str]" = None,
user_agent: "Optional[str]" = None,
ip_address: "Optional[str]" = None,
errors: "Optional[int]" = None,
user: "Optional[Any]" = None,
) -> None:
# If a user is supplied we pull some data form it
if user:
if ip_address is None:
ip_address = user.get("ip_address")
if did is None:
did = user.get("id") or user.get("email") or user.get("username")
if sid is not None:
self.sid = _make_uuid(sid)
if did is not None:
self.did = str(did)
if timestamp is None:
timestamp = datetime.now(timezone.utc)
self.timestamp = timestamp
if started is not None:
self.started = started
if duration is not None:
self.duration = duration
if release is not None:
self.release = release
if environment is not None:
self.environment = environment
if ip_address is not None:
self.ip_address = ip_address
if user_agent is not None:
self.user_agent = user_agent
if errors is not None:
self.errors = errors
if status is not None:
self.status = status
def close(
self,
status: "Optional[SessionStatus]" = None,
) -> "Any":
if status is None and self.status == "ok":
status = "exited"
if status is not None:
self.update(status=status)
def get_json_attrs(
self,
with_user_info: "Optional[bool]" = True,
) -> "Any":
attrs = {}
if self.release is not None:
attrs["release"] = self.release
if self.environment is not None:
attrs["environment"] = self.environment
if with_user_info:
if self.ip_address is not None:
attrs["ip_address"] = self.ip_address
if self.user_agent is not None:
attrs["user_agent"] = self.user_agent
return attrs
def to_json(self) -> "Any":
rv: "Dict[str, Any]" = {
"sid": str(self.sid),
"init": True,
"started": format_timestamp(self.started),
"timestamp": format_timestamp(self.timestamp),
"status": self.status,
}
if self.errors:
rv["errors"] = self.errors
if self.did is not None:
rv["did"] = self.did
if self.duration is not None:
rv["duration"] = self.duration
attrs = self.get_json_attrs()
if attrs:
rv["attrs"] = attrs
return rv
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| ai | Folder | 0755 |
|
|
| crons | Folder | 0755 |
|
|
| integrations | Folder | 0755 |
|
|
| profiler | Folder | 0755 |
|
|
| __init__.py | File | 1.46 KB | 0644 |
|
| _batcher.py | File | 5.7 KB | 0644 |
|
| _compat.py | File | 3 KB | 0644 |
|
| _init_implementation.py | File | 2.43 KB | 0644 |
|
| _log_batcher.py | File | 1.88 KB | 0644 |
|
| _lru_cache.py | File | 1.14 KB | 0644 |
|
| _metrics_batcher.py | File | 1.21 KB | 0644 |
|
| _queue.py | File | 10.98 KB | 0644 |
|
| _span_batcher.py | File | 8.12 KB | 0644 |
|
| _types.py | File | 13.16 KB | 0644 |
|
| _werkzeug.py | File | 3.85 KB | 0644 |
|
| api.py | File | 15.59 KB | 0644 |
|
| attachments.py | File | 2.95 KB | 0644 |
|
| client.py | File | 49.95 KB | 0644 |
|
| consts.py | File | 61.95 KB | 0644 |
|
| debug.py | File | 959 B | 0644 |
|
| envelope.py | File | 9.37 KB | 0644 |
|
| feature_flags.py | File | 2.5 KB | 0644 |
|
| hub.py | File | 24.54 KB | 0644 |
|
| logger.py | File | 2.6 KB | 0644 |
|
| metrics.py | File | 1.42 KB | 0644 |
|
| monitor.py | File | 4.47 KB | 0644 |
|
| py.typed | File | 0 B | 0644 |
|
| scope.py | File | 74.09 KB | 0644 |
|
| scrubber.py | File | 5.99 KB | 0644 |
|
| serializer.py | File | 12.82 KB | 0644 |
|
| session.py | File | 5.08 KB | 0644 |
|
| sessions.py | File | 8.59 KB | 0644 |
|
| spotlight.py | File | 11.85 KB | 0644 |
|
| traces.py | File | 25.08 KB | 0644 |
|
| tracing.py | File | 50.33 KB | 0644 |
|
| tracing_utils.py | File | 54.36 KB | 0644 |
|
| transport.py | File | 44.41 KB | 0644 |
|
| types.py | File | 1.24 KB | 0644 |
|
| utils.py | File | 65.96 KB | 0644 |
|
| worker.py | File | 10.91 KB | 0644 |
|