o
    
>h/                     @   s  d dl Z d dlZd dlZd dlZd dlmZ d dlmZ ddlmZm	Z	m
Z
 ddlmZmZ ddlmZmZmZ dd	 Zi Zej D ]\ZZeeer\eeejv r\ejee ee< qCi Zej D ]\ZZeeer}e ejv r}eje  ee< qdG d
d dZdS )    N)DistributionNotFound)
ModuleType   )HTTP_STATUS_CODE
ERROR_CODEURL)	resourcesutility)BadRequestErrorGatewayErrorServerErrorc                 C   s   d ttj| dS )N _)joinmapstr
capitalizesplit)string r   o/var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/razorpay/client.pycapitalize_camel_case   s   r   c                   @   s   e Zd ZdZdejiZd"ddZdd Zdd	 Z	d
d Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! ZdS )#ClientzRazorpay client classbase_urlNc                 K   s   |pt  | _|| _tjt}|d | _| j	di || _
g | _t D ]\}}t| |||  q%t D ]\}}t| |||  q6dS )ze
        Initialize a Client object with session,
        optional auth handler, and options
        z/ca-bundle.crtNr   )requestsSessionsessionauthospathdirname__file__	cert_path_set_base_urlr   app_detailsRESOURCE_CLASSESitemssetattrUTILITY_CLASSES)selfr   r   optionsfile_dirnameKlassr   r   r   __init__*   s   
zClient.__init__c                 K   s$   | j d }d|v r|d }|d= |S )Nr   )DEFAULTS)r)   r*   r   r   r   r   r#   @   s
   
zClient._set_base_urlc                 C   s>   d d|  |  }d|v r||d d< |S d|i|d< |S )Nz{}{} {}zRazorpay-Python/headersz
User-Agent)format_get_version_get_app_details_ua)r)   r*   
user_agentr   r   r   _update_user_agent_headerI   s   z Client._update_user_agent_headerc                 C   s0   d}zt dd j}W |S  ty   Y |S w )Nr   razorpayr   )pkg_resourcesrequireversionr   )r)   r9   r   r   r   r2   T   s   zClient._get_versionc                 C   sR   d}|   }|D ]}d|v r&|d }d|v r|d|d 7 }|d|7 }q|S )Nr   titler9   z/{}z{} )get_app_detailsr1   )r)   app_details_uar$   appapp_uar   r   r   r3   \   s   zClient._get_app_details_uac                 C   s   | j | d S N)r$   append)r)   r$   r   r   r   set_app_detailsj   s   zClient.set_app_detailsc                 C   s   | j S r?   )r$   )r)   r   r   r   r;   m   s   zClient.get_app_detailsc           	      K   s
  |  |}d| j|}t| j||f| j| jd|}|jtj	kr7|jtj
k r7|jdkr3ti S | S d}d}| }d|v r]d|d v rO|d d }d|d v r]t|d d }t|tjkrit|t|tjkrut|t|tjkrt|t|)z?
        Dispatches a request to the Razorpay HTTP API
        z{}{})r   verify   r   errordescriptioncode)r5   r1   r   getattrr   r   r"   status_coder   OKREDIRECTjsondumpsr   upperr   BAD_REQUEST_ERRORr
   GATEWAY_ERRORr   SERVER_ERRORr   )	r)   methodr   r*   urlresponsemsgrF   json_responser   r   r   requestp   s2   
zClient.requestc                 K   s   | j d|fd|i|S )zE
        Parses GET request options and dispatches a request
        getparams)rV   )r)   r   rX   r*   r   r   r   rW      s   z
Client.getc                 K   (   |  ||\}}| jd|fd|i|S )zF
        Parses POST request options and dispatches a request
        postdata_update_requestrV   r)   r   r[   r*   r   r   r   rZ         zClient.postc                 K   rY   )zG
        Parses PATCH request options and dispatches a request
        patchr[   r\   r^   r   r   r   r`      r_   zClient.patchc                 K   rY   )zH
        Parses DELETE request options and dispatches a request
        deleter[   r\   r^   r   r   r   ra      r_   zClient.deletec                 K   rY   )zE
        Parses PUT request options and dispatches a request
        putr[   r\   r^   r   r   r   rb      r_   z
Client.putc                 K   s`   i }i }d|vrd|d< |d |d< |D ]}|dkr"|| |t |< q| jd|f||d|S )Nfiler   rZ   )filesr[   )r   rV   )r)   r   r[   r*   fileDict	fieldDictfieldsr   r   r   rc      s   zClient.filec                 C   s4   t |}d|vri |d< |d ddi ||fS )z>
        Updates The resource data and header options
        r0   zContent-typezapplication/json)rK   rL   update)r)   r[   r*   r   r   r   r]      s
   
zClient._update_request)NN)__name__
__module____qualname____doc__r   BASE_URLr/   r.   r#   r5   r2   r3   rA   r;   rV   rW   rZ   r`   ra   rb   rc   r]   r   r   r   r   r   #   s&    
	!r   )r   rK   r   r7   r   typesr   	constantsr   r   r   r   r   r	   errorsr
   r   r   r   r%   __dict__r&   r,   module
isinstancer(   r   r   r   r   r   r   <module>   s,    
