
    %i-                        d dl Z d dlZ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	m
Z
mZ ddlmZmZ ddlmZmZmZ d Zi Zej*                  j-                         D ]<  \  ZZ eee      s ee      ej*                  v s%ej*                   ee         ee<   > i Zej*                  j-                         D ]L  \  ZZ eee      sej7                         ej*                  v s-ej*                  ej7                            ee<   N  G d d	      Zy)
    N)
ModuleType   )HTTP_STATUS_CODE
ERROR_CODEURL)	resourcesutility)BadRequestErrorGatewayErrorServerErrorc                 r    dj                  t        t        j                  | j	                  d                  S )N _)joinmapstr
capitalizesplit)strings    m/var/www/html/navyabakers_fullstack/navyabakers_prod/venv_new/lib/python3.12/site-packages/razorpay/client.pycapitalize_camel_caser      s%    773s~~v||C'89::    c                       e Zd ZdZej
                  dddddZddZd	 Zd
 Z	d Z
d Zd Zd ZddZd Zd Zd Zd Zd Zd Zd Zd Zy)ClientzRazorpay client class   r   <   g      ?)base_urlmax_retriesinitial_delay	max_delayjitterNc                    |xs t        j                         | _        || _        t        j
                  j                  t              }|dz   | _         | j                  di || _
        |j                  d| j                  d         | _        |j                  d| j                  d         | _        |j                  d| j                  d         | _        |j                  d| j                  d         | _        d| _        g | _        t&        j)                         D ]  \  }}t+        | | ||               t,        j)                         D ]  \  }}t+        | | ||               y)	ze
        Initialize a Client object with session,
        optional auth handler, and options
        z/ca-bundle.crtr   r   r    r!   FN )requestsSessionsessionauthospathdirname__file__	cert_path_set_base_urlr   getDEFAULTSr   r   r    r!   retry_enabledapp_detailsRESOURCE_CLASSESitemssetattrUTILITY_CLASSES)selfr&   r'   optionsfile_dirnameKlasss          r   __init__zClient.__init__.   s0   
 4("2"2"4	77??8,!$44***5W5";;}dmmM6RS$[[$--:XY [$--2LMkk(DMM(,CD" ,113 	-KD%D$d,	- +002 	-KD%D$d,	-r   c                     | j                   d   }d|v r|d   }|d= |j                  dd        |j                  dd        |j                  dd        |j                  dd        |S )Nr   r   r   r    r!   )r/   pop)r6   r7   r   s      r   r-   zClient._set_base_urlI   si    ==, z*H
# 	M4(OT*K&Hd#r   c                     dj                  d| j                         | j                               }d|v r
||d   d<   |S d|i|d<   |S )Nz{}{} {}zRazorpay-Python/headersz
User-Agent)format_get_version_get_app_details_ua)r6   r7   
user_agents      r   _update_user_agent_headerz Client._update_user_agent_headerX   sc    %%&8$:K:K:M&*&>&>&@B
 /9GI|,  #/
!;GIr   c                 *   d}	 	 dd l }ddl m} |j                  j                  d      }|S # t        $ r, dd l}ddlm} |j                  d      d   j                  }Y |S w xY w# t        f$ r" d}t        j                  dt        d	       Y |S w xY w)
Nr   r   )PackageNotFoundErrorrazorpay)DistributionNotFoundz1.4.3zjCould not detect razorpay package version. Using fallback version.This may indicate an installation issue.   )
stacklevel)importlib.metadatarF   metadataversionImportErrorpkg_resourcesrH   require	NameErrorwarningswarnUserWarning)r6   rM   	importlibrF   rO   rH   s         r   rA   zClient._get_versionc   s    	G)C#,,44Z@( '  G$>'//
;A>FF 'G
 %&:IF 	 GMM9	 	s'   %, 1A!A$  A!!A$ $*BBc                     d}| j                         }|D ];  }d|v s|d   }d|v r|dj                  |d         z  }|dj                  |      z  }= |S )Nr   titlerM   z/{}z{} )get_app_detailsr@   )r6   app_details_uar1   appapp_uas        r   rB   zClient._get_app_details_ua   sn    **, 	7C#~W#ell3y>::F%,,v"66	7 r   c                 :    | j                   j                  |       y N)r1   append)r6   r1   s     r   set_app_detailszClient.set_app_details   s    ,r   c                     | j                   S r]   )r1   )r6   s    r   rX   zClient.get_app_details   s    r   c                     || _         y r]   )r0   )r6   r0   s     r   enable_retryzClient.enable_retry   s
    *r   c                    | j                  |      }|j                  dd      }| j                  }|rO| j                  rCt        | j                  t              r)t        | j                        dk\  r| j                  d   df}|j                  dd      }|d|vri |d<   ||d   d	<   d
j                  | j                  |      }| j                  }| j                  r| j                  nd}	t        |	      D ]{  }
	  t        | j                  |      |f|| j                  d|}|j                  t         j"                  k\  rU|j                  t         j$                  k  r8|j                  dk(  rt'        j(                  i       c S |j'                         c S d}d}|j'                         }d|v r'd|d   v r|d   d   }d|d   v rt+        |d   d         }t*        j-                  |      t.        j0                  k(  rt3        |      t*        j-                  |      t.        j4                  k(  rt7        |      t*        j-                  |      t.        j8                  k(  rt;        |      t;        |       y# t<        j>                  j@                  $ r}| j                  r|
|	dz
  k  rtC        jD                  | jF                   | jF                        }|d|z   z  }tI        || jJ                        }tM        d| d|dd|
dz    d|	 d	       tO        jP                  |       |dz  }n(tM        d| j                  rd|	 dz           dz           Y d}~_d}~wt<        j>                  jR                  $ r}| j                  r|
|	dz
  k  rtC        jD                  | jF                   | jF                        }|d|z   z  }tI        || jJ                        }tM        d| d|dd|
dz    d|	 d	       tO        jP                  |       |dz  }n(tM        d| j                  rd|	 dz           dz           Y d}~Ad}~wt<        j>                  jT                  $ r}tM        d|         d}~ww xY w)zT
        Dispatches a request to the Razorpay HTTP API with retry mechanism
        use_public_authFr   r   r   device_modeNr?   zX-Razorpay-Device-Modez{}{})r'   verify   errordescriptioncodezConnectionError: z. Retrying in z.2fz seconds... (Attempt /)   zConnection failed.z Max retries (z) exceeded.z	Timeout: zRequest timed out.zRequest error occurred: )+rD   r=   r'   
isinstancetuplelenr@   r   r   r0   r   rangegetattrr&   r,   status_coder   OKREDIRECTjsondumpsr   upperr   BAD_REQUEST_ERRORr
   GATEWAY_ERRORr   SERVER_ERRORr   r$   
exceptionsConnectionErrorrandomuniformr!   minr    printtimesleepTimeoutRequestException)r6   methodr)   r7   rd   auth_to_usere   urldelay_secondsmax_attemptsattemptresponsemsgrj   json_responseejitter_valuejittered_delayactual_delays                      r   requestzClient.request   sP    009 "++&7?iiyyZ		59c$))nPQ>Q#yy|R0 kk-6"'%'	";FGI78mmDMM40** ,0+=+=t''1\* ;	G:874<<8 D;@DD;BD ))-=-@-@@!--0@0I0II-5-A-A3-F4::b>\X]]_\CD$,MMOM-/(M',BB"/"8"GC!]7%;;#&}W'=f'E#FDyy**F*FF-c224J,D,DD*3//4J,C,CC)#..)#..5;	8 &&66 %%'L14D*D#)>>4;;,#LL%2a,6F%GN#&~t~~#FL-aS|C>PPefmpqfqerrs  uA  tB  BC  D  EJJ|,!Q&M.aeasas^L>Q\3]|} z||} " &&.. %%'L14D*D#)>>4;;,#LL%2a,6F%GN#&~t~~#FLIaS|C6HH]^ehi^i]jjklxkyyz{|JJ|,!Q&M.aeasas^L>Q\3]|} z||} " &&77 045s@   8BI3I3CI33Q(B<M Q(2B<P44 Q(Q##Q(c                 .     | j                   d|fd|i|S )zE
        Parses GET request options and dispatches a request
        r.   params)r   )r6   r)   r   r7   s       r   r.   z
Client.get   s!     t||E4BB'BBr   c                 X    | j                  ||      \  }} | j                  d|fd|i|S )zF
        Parses POST request options and dispatches a request
        postdata_update_requestr   r6   r)   r   r7   s       r   r   zClient.post   s7     ,,T7;gt||FD?t?w??r   c                 X    | j                  ||      \  }} | j                  d|fd|i|S )zG
        Parses PATCH request options and dispatches a request
        patchr   r   r   s       r   r   zClient.patch   s7     ,,T7;gt||GT@@@@r   c                 X    | j                  ||      \  }} | j                  d|fd|i|S )zH
        Parses DELETE request options and dispatches a request
        deleter   r   r   s       r   r   zClient.delete  s7     ,,T7;gt||HdAAAAr   c                 X    | j                  ||      \  }} | j                  d|fd|i|S )zE
        Parses PUT request options and dispatches a request
        putr   r   r   s       r   r   z
Client.put  s7     ,,T7;gt||E4>d>g>>r   c                     i }i }d|vrd|d<   |d   |d<   |D ]  }|dk7  s	||   |t        |      <     | j                  d|f||d|S )Nfiler   r   )filesr   )r   r   )r6   r)   r   r7   fileDict	fieldDictfieldss          r   r   zClient.file  sw    	DL<  	2Fv%)&\Ic&k"	2 t||FDTyTGTTr   c                 r    t        j                  |      }d|vri |d<   |d   j                  ddi       ||fS )z>
        Updates The resource data and header options
        r?   zContent-typezapplication/json)rv   rw   update)r6   r   r7   s      r   r   zClient._update_request$  sG     zz$G#!#GI	!!>3E"FGW}r   )NN)F)__name__
__module____qualname____doc__r   BASE_URLr/   r;   r-   rD   rA   rB   r_   rX   rb   r   r.   r   r   r   r   r   r   r#   r   r   r   r   #   sx     LLH-6	:- +XtC@AB?U"r   r   )r(   rv   r$   rR   r~   r   typesr   	constantsr   r   r   r   r   r	   errorsr
   r   r   r   r2   __dict__r3   r9   modulern   r5   r   r   r#   r   r   <module>r      s    	       8 8  " ";
  &&,,. NLD&&*%!$'6??:!'1Ft1L!MN
 $$**, CLD&&*%$//*;v*N &0A BC
L Lr   