U
    ^g%ii	                     @   sX   d dl mZmZmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ G dd	 d	eZd
S )    )AnyDictOptional   )Resource   )URL)
DeviceMode)BadRequestErrorc                       s~   e Zd Zd fdd	Zee ee dddZdeeef ee eeef ddd	Z	deee eeef d
ddZ
  ZS )DeviceActivityNc                    s"   t t| | tjtj | _d S )N)superr   __init__r   ZV1ZDEVICE_ACTIVITY_URLbase_url)selfclient	__class__ a/var/www/html/api-medvista/venv/lib/python3.8/site-packages/razorpay/resources/device_activity.pyr   
   s    zDeviceActivity.__init__)device_modereturnc                 C   s(   |dk	r$|t jt jfkr td|S dS )aE  
        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
        Nz?Invalid device mode. Allowed values are 'wired' and 'wireless'.)r	   ZWIREDZWIRELESSr
   )r   r   r   r   r   _validate_device_mode   s
    z$DeviceActivity._validate_device_mode)datar   r   c                 K   s*   |  |}| j}| j||f|dd|S )aC  
        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
        Tr   Zuse_public_auth)r   r   Zpost_url)r   r   r   kwargsvalidated_modeurlr   r   r   create!   s    
zDeviceActivity.create)activity_idr   r   c                 K   s@   |st d| |}| j d| }| j|i f|dd|S )a   
        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
        zActivity ID must be provided/Tr   )r
   r   r   get_url)r   r   r   r   r   r   r   r   r   
get_status1   s
    
zDeviceActivity.get_status)N)N)N)__name__
__module____qualname__r   r   strr   r   r   r   r!   __classcell__r   r   r   r   r   	   s   (r   N)typingr   r   r   baser   Zconstants.urlr   Zconstants.devicer	   errorsr
   r   r   r   r   r   <module>   s
   