B °¤ï`O8ã@spddlZddlZddlZddlZddlZddlZddlZddlTddl Tddl m Z dd„Z Gdd„de ƒZdS) éNé)Ú*)Ú __version__cCs2|}i}dt ¡i|d<|dddkr:t ¡|dd<nN|dddkrˆtjjdkrftjdd…}ntj}d d d „|Dƒ¡|dd<tj d ¡r¶t ¡d r¶d t ¡d dœ|d<t  ¡rÒt  ¡|  di¡d<t  ¡rît  ¡|  di¡d<t  ¡rt  ¡|d<|r||d<|r ||d<t j t |¡¡S)NÚnameÚimplementation)ÚCPythonÚJythonÚ IronPythonÚversionÚPyPyÚfinaléÚ.cSsg|] }t|ƒ‘qS©)Ústr)Ú.0Úxrrúq/private/var/folders/7j/8686xlfs15q3tgljmghtvg0r0000gn/T/pip-target-isidps9b/lib/python/meraki_v0/rest_session.pyú !sz'user_agent_extended..ÚdarwinrÚmacOS)rr ÚdistroÚsystemÚreleaseÚcpuÚ be_geo_idÚcaller)ÚplatformÚpython_implementationÚpython_versionÚsysÚpypy_version_infoÚ releaselevelÚjoinÚ startswithÚmac_verrÚ setdefaultrÚmachineÚurllibÚparseÚquoteÚjsonÚdumps)rrÚuser_agent_extendedr!rrrr-s0   r-c speZdZeeeeeee e e e e eef ‡fdd„ Zdd„Zddd„Zdd d „Zdd d „Zddd„Zdd„Z‡ZS)Ú RestSessioncsftt|ƒ ¡t|_t|ƒ|_t|ƒ|_||_||_ ||_ ||_ ||_ | |_ | |_| |_| |_| |_||_||_t ¡|_d|j_d|jkr¢t d|j›d¡n|jddkrÀ|jdd…|_|jdd|j›d t|j|jƒd œ|j_||_d |ji|_|j tƒ¡|j  d ¡|j  d ¡|j  d¡d|jdd…|jd<|jrb|j !d|j›¡dS)Nzutf-8Zv1z5If you want to use the Python library with v1 paths (zˆ was configured as the base URL), then install the v1 library. See the "Setup" section @ https://github.com/meraki/dashboard-api-python/éÿÿÿÿú/zapplication/jsonzpython-meraki/ú )zX-Cisco-Meraki-API-Keyz Content-Typez User-Agentr ÚselfÚloggerÚ __class__z$************************************éüÿÿÿÚapi_keyz@Meraki dashboard API session initialized with these parameters: )"Úsuperr.Ú__init__rÚ_versionrZ_api_keyÚ _base_urlÚ_single_request_timeoutÚ_certificate_pathÚ_requests_proxyZ_wait_on_rate_limitÚ_nginx_429_retry_wait_timeÚ_action_batch_retry_wait_timeÚ_retry_4xx_errorÚ_retry_4xx_error_wait_timeÚ_maximum_retriesÚ _simulateZ _be_geo_idZ_callerÚrequestsÚsessionÚ _req_sessionÚencodingr Úexitr-ÚheadersÚ_loggerÚ _parametersÚupdateÚlocalsÚpopÚinfo)r2r3r6Úbase_urlZsingle_request_timeoutZcertificate_pathZrequests_proxyZwait_on_rate_limitZnginx_429_retry_wait_timeZaction_batch_retry_wait_timeZretry_4xx_errorZretry_4xx_error_wait_timeZmaximum_retriesZsimulaterr)r4rrr8;sD    $    zRestSession.__init__c Ks,|dd}|d}|jr(| d|j¡|jr@| dd|ji¡| d|j¡d|ks^d |krd|}n |j|}|j}|jr†|j |¡|jr¶|d kr¶|jr²|j  |›d |›d ¡dSd} xj|dkr&yB| rÖ|   ¡|j j ||fd di|—Ž} | j rþ| j nd} | j} Wnxtjjk r‚} zT|jrH|j |›d |›d| ›d¡t d¡|d8}|dkrpt|| ƒ‚nw¾Wdd} ~ XYnXt| ƒddkrÔ| jd}d} | |kr²d} |d| | ¡t| ƒd…|_q¾| jrèd|kr |d}|jrJ|j  |›d |›d|›d| ›d| › ¡n*|jrJ|j  |›d |›d| ›d| ›¡y"|d krj| j ¡rj|  ¡| Stjjk rä} zT|jrª|j |›d |›d| ›d¡t d¡|d8}|dkrÒt|| ƒ‚nw¾Wdd} ~ XYnXq¾| dkrvd| jkrt | jdƒ}nt! "d|j#¡}|jrN|j |›d |›d| ›d| ›d|›d ¡t |¡|d8}|dkr$t|| ƒ‚q¾| dkrÔ|jr¬|j |›d |›d| ›d| ›d¡t d¡|d8}|dkr$t|| ƒ‚q¾y |  ¡}Wn$t$k r| jdd…}YnXd d!gi}||krz|j%}|jrR|j |›d |›d| ›d| ›d|›d ¡t |¡|d8}|dkr$t|| ƒ‚q¾|j&rêt! "d|j'¡}|jrÂ|j |›d |›d| ›d| ›d|›d ¡t |¡|d8}|dkr$t|| ƒ‚q¾|jr|j (|›d |›d| ›d| ›d |› ¡t|| ƒ‚q¾WdS)"NÚtagsrÚ operationÚverifyÚproxiesÚhttpsÚtimeoutz meraki.comz meraki.cnÚGETz, z - SIMULATEDÚallow_redirectsFÚz - z, retrying in 1 secondrÚ3ZLocationzmeraki.com/api/vzmeraki.cn/api/vÚpagez; page r1i­z Retry-Afterz, retrying in z secondsiôédÚerrorsz]Too many concurrently executing batches. Maximum is 5 confirmed but not yet executed batches.))r<r&r=r;r:rBrJÚdebugrCrOÚcloserFÚrequestÚreasonÚ status_coderDÚ exceptionsÚRequestExceptionÚwarningÚtimeÚsleepZAPIErrorrrIÚfindÚlenÚokÚcontentÚstripr+ÚdecoderÚJSONDecodeErrorÚintÚrandomÚrandintr>Ú ValueErrorr?r@rAÚerror)r2ÚmetadataÚmethodÚurlÚkwargsÚtagrRZabs_urlÚretriesÚresponseraÚstatusÚeZ substringÚcounterÚwaitÚmessageZaction_batch_concurrency_errorrrrr`}sÈ         " *"     *    $     *   *   (zRestSession.requestNcCsPd|d<||d<||d<|j|d||d}d}|rL|j ¡rD| ¡}| ¡|S)NrWrurvÚparams)r€)r`rkrlr+r_)r2rtrvr€rzÚretrrrÚgets zRestSession.getr/Únextc Cs–t|ƒtkr| ¡dkrd}nt|ƒtkr:| ¡r:t|ƒ}d|d<|j|d||d}| ¡}x$|dkr‚|j}| ¡d}|dkr´d|kr´|dd7<| |d|dd¡}n:|d krìd |krì|dd7<| |d|d d¡}nPt|ƒt kr |  | ¡¡nlt|ƒt krx| ¡d } | ¡d } | ¡d } | |d krT| |d <| |d krj| |d <|d   | ¡|d8}q`W|r’| ¡|S) NÚallr/rr[rW)r€rƒrvÚprevZ pageStartAtZ pageEndAtÚevents) ÚtyperÚlowerÚ isnumericror`r+Úlinksr_ÚlistÚextendÚdict) r2rtrvr€Z total_pagesÚ directionrzÚresultsrŠÚstartÚendr†rrrÚ get_pagessB    zRestSession.get_pagescCsPd|d<||d<||d<|j|d||d}d}|rL|j ¡rD| ¡}| ¡|S)NÚPOSTrurvr+)r+)r`rkrlr+r_)r2rtrvr+rzrrrrÚpost@s zRestSession.postcCsPd|d<||d<||d<|j|d||d}d}|rL|j ¡rD| ¡}| ¡|S)NÚPUTrurvr+)r+)r`rkrlr+r_)r2rtrvr+rzrrrrÚputLs zRestSession.putcCs.d|d<||d<| |d|¡}|r*| ¡dS)NÚDELETErurv)r`r_)r2rtrvrzrrrÚdeleteXs zRestSession.delete)N)Nr/rƒ)N)N)Ú__name__Ú __module__Ú __qualname__ZDEFAULT_BASE_URLZSINGLE_REQUEST_TIMEOUTZCERTIFICATE_PATHZREQUESTS_PROXYZWAIT_ON_RATE_LIMITZNGINX_429_RETRY_WAIT_TIMEZACTION_BATCH_RETRY_WAIT_TIMEZRETRY_4XX_ERRORZRETRY_4XX_ERROR_WAIT_TIMEZMAXIMUM_RETRIESZSIMULATE_API_CALLSZ BE_GEO_IDZMERAKI_PYTHON_SDK_CALLERr8r`r‚r’r”r–r˜Ú __classcell__rr)r4rr.:s(2 / r.)r+rrpr rfÚ urllib.parser(rDÚconfigrcr8rr-Úobjectr.rrrrÚs +