ifixkart-backend/venv/lib/python3.12/site-packages/razorpay/resources/device_activity.py

66 lines
No EOL
2.4 KiB
Python

from typing import Any, Dict, Optional
from .base import Resource
from ..constants.url import URL
from ..constants.device import DeviceMode
from ..errors import BadRequestError
class DeviceActivity(Resource):
def __init__(self, client=None):
super(DeviceActivity, self).__init__(client)
self.base_url = URL.V1 + URL.DEVICE_ACTIVITY_URL
def _validate_device_mode(self, device_mode: Optional[str]) -> Optional[str]:
"""
Validate device communication mode
Args:
device_mode: Device communication mode ("wired" or "wireless")
Returns:
Validated device_mode or None if device_mode is None
Raises:
BadRequestError: If device_mode is invalid
"""
if device_mode is not None:
if device_mode not in (DeviceMode.WIRED, DeviceMode.WIRELESS):
raise BadRequestError("Invalid device mode. Allowed values are 'wired' and 'wireless'.")
return device_mode
return None
def create(self, data: Dict[str, Any], device_mode: Optional[str] = None, **kwargs) -> Dict[str, Any]:
"""
Create a new device activity for POS gateway
Args:
data: Dictionary containing device activity data in the format expected by rzp-pos-gateway
device_mode: Device communication mode ("wired" or "wireless")
Returns:
DeviceActivity object
"""
validated_mode = self._validate_device_mode(device_mode)
url = self.base_url
return self.post_url(url, data, device_mode=validated_mode, use_public_auth=True, **kwargs)
def get_status(self, activity_id: str, device_mode: Optional[str] = None, **kwargs) -> Dict[str, Any]:
"""
Get the status of a device activity
Args:
activity_id: Activity ID to fetch status for
device_mode: Device communication mode ("wired" or "wireless")
Returns:
DeviceActivity object with current status
"""
if not activity_id:
raise BadRequestError("Activity ID must be provided")
validated_mode = self._validate_device_mode(device_mode)
url = f"{self.base_url}/{activity_id}"
return self.get_url(url, {}, device_mode=validated_mode, use_public_auth=True, **kwargs)