
    HE^j0                         d dl Z d dlmZ d dlmZ d dlmZmZmZ  ee	      j                  j                  j                         Zd dlZ ej                  edz         e G d d             Zej!                         Zy)    N)	dataclass)Path)OptionalDictListz.envc                   ,   e Zd ZU eed<   eed<   eed<   eed<   eed<   dZeed<   dZee	   ed	<   dZ
ee	   ed
<   dZee	   ed<   dZeed<   dZeed<   dZeed<   dZe	ed<   dZe	ed<   dZeed<   dZe	ed<   dZe	ed<   dZe	ed<   dZe	ed<   d Ze	ed!<   d"Ze	ed#<   d$Zeed%<   d&Zeed'<   dZee   ed(<   d)Zeed*<   dZe e	e	f   ed+<   dZ!e e	e	f   ed,<   d-Z"e	ed.<   dZ#e e	e	f   ed/<   dZ$ee	   ed0<   dZ%ee	   ed1<   dZ&ee	   ed2<   dZ'eed3<   dZ(ee	   ed4<   dZ)ee	   ed5<   d6Z*e	ed7<   dZ+eed8<   d9Z,eed:<   d;Z-e	ed<<   d=Z.e	ed><   d&Z/eed?<   d@Z0eedA<   d&Z1eedB<   dCZ2eedD<   dEZ3eedF<   dGZ4eedH<   dIZ5eedJ<   dKZ6eedL<   d@Z7eedM<   e8dNe	dOedPefdQ       Z9e:dSdR       Z;y)TSettingsPORT	DIRECTORY
STATIC_DIRDB_FILELOG_FILE<   POLL_INTERVALNADMIN_API_KEYFRONTEND_ORIGINSDISCORD_BOT_TOKENr   OWNER_USER_IDFDISCORD_ENABLEDTWATCHLIST_ENABLED!lenovo_outlet_india_tracker_alert
NTFY_TOPIC)lenovo_outlet_india_tracker_alert_removedNTFY_TOPIC_REMOVED   NOTIFICATION_BATCH_THRESHOLDzOhttps://openapi.lenovo.com/in/outletin/en/ofp/search/dlp/product/query/get/_tscAPI_URLz%https://www.lenovo.com/in/outletin/enLENOVO_BASE_URL.https://www.lenovo.com/in/outletin/en/laptops/LENOVO_LAPTOPS_URLzhttps://ntfy.shNTFY_BASE_URLz$afdcd3f7-d8e6-4e9e-a76a-d6060dc75ae9PAGE_FILTER_IDzCERTIFIED REFURBISHEDDEFAULT_CONDITION(   	PAGE_SIZE   MAX_PAGE_RETRIESRETRY_DELAYSg      ?INTER_PAGE_DELAYHEADERSCOMPARE_HEADERSzhttps://psref.lenovo.comPSREF_BASE_URLPSREF_HEADERSTELEGRAM_BOT_TOKENTELEGRAM_CHANNEL_IDTELEGRAM_OWNER_IDTELEGRAM_ENABLEDVAPID_PRIVATE_KEYVAPID_PUBLIC_KEYmailto:admin@trackfurb.xyzVAPID_SUBJECTPUSH_ENABLEDQ PUSH_TTL_SECONDShttps://discord.gg/exampleDISCORD_INVITE_URLhttps://t.me/exampleTELEGRAM_CHANNEL_URLMAX_FAILED_PAGES   PSREF_MAX_FAILEDSTABILITY_THRESHOLD  TIER0_DEBOUNCE_SECONDS  TIER1_DEBOUNCE_SECONDS4  TIER2_DEBOUNCE_SECONDS   FLAP_WINDOW_HOURS   TIER1_FLAP_THRESHOLDTIER2_FLAP_THRESHOLDkeydefaultreturnc                     	 t        t        j                  j                  | t	        |                  S # t
        $ r |cY S w xY w)N)intosenvirongetstr
ValueError)rL   rM   s     !/home/container/backend/config.py_get_env_intzSettings._get_env_intd   s9    	rzz~~c3w<899 	N	s   14 AAc                 4   t         j                  j                  d      xs t         j                  j                  d      }|st        d      	 t	        |      }t        }|dz  dz  }|dz  dz  }|dz  d	z  }| j                  d
d      }t         j                  j                  d      }t         j                  j                  dd      }	|	j                  d      D 
cg c]#  }
|
j                         s|
j                         % }}
t         j                  j                  d      }| j                  dd      }	 dd l
}d}t        |xr |xr |      }t         j                  j                  dd      j                         dv }t         j                  j                  dd      }t         j                  j                  dd      }| j                  dd      }ddg}d d!d"d#}d$d%d&d'd(d)}d*d"d(d+}t         j                  j                  d,      }t         j                  j                  d-      }t         j                  j                  d.      }t        |xr |      }t         j                  j                  d/      }t         j                  j                  d0      }t         j                  j                  d1d2      }|r|sh	 dd3lm}  dd l}!| j#                  | j%                               }"|"j'                         }#|"j)                         j*                  j-                  d4d56      }$|!j/                  |$      j1                  d7      j3                  d8      }|#j5                         }%|%j6                  j-                  d4d56      }&|%j8                  j-                  d4d56      }'d9|&z   |'z   }(|!j/                  |(      j1                  d7      j3                  d8      }t;        d:       t;        d;       t;        d<       t;        d=|        t;        d>|        t;        d?       t;        d@       t        |xr |      })t         j                  j                  dAdB      }*t         j                  j                  dC      }+|+s7|r|j?                  dD      r	dE|dFd   }+n|r|j?                  dG      sdE| }+ndH}+| j                  dIdJ      },| j                  dKdL      }-| j                  dMdN      }.| j                  dOdL      }/| j                  dPdQ      }0| j                  dRdS      }1| j                  dTdU      }2| j                  dVdW      }3| j                  dXdF      }4| j                  dYdN      }5 | dei d|dZ|d[|d\|d]|d
|d|d|d|d|d^|d|d|d|d|d_|d`|da|db|d,|d-|d.|dc|d/|d0|d1|dd|)dI|,dA|*dC|+dK|-dM|.dO|/dP|0dR|1dT|2dV|3dX|4dY|5S # t
        $ r t        d|       w xY wc c}
w # t        $ r d}Y w xY w# t<        $ r Y w xY w)fNr
   SERVER_PORTziError: Neither PORT nor SERVER_PORT environment variables are set. FalixNodes requires a designated port.zError: Invalid PORT value: frontenddistdatazlenovo_tracker.dbzlenovo_tracker.logr   r   r   r   zhttp://localhost:3000,r   r   r   TFr   true)r^   1yesr   r   r   r   r   r   g      @g      @r   zhttps://www.lenovo.comz!application/json, text/plain, */*)RefererOriginAcceptzA"Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"z?0z"Linux"zhttps://www.lenovo.com/zeMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36)z	sec-ch-uazsec-ch-ua-mobilezsec-ch-ua-platformra   
User-Agentzhttps://psref.lenovo.com/)ra   rc   rd   r.   r/   r0   r2   r3   r5   r4   )ec    big)	byteorderzutf-8=   zQ
================================================================================z<WARNING: VAPID keys were not found in environment variables!z6Dynamically generated new VAPID keys for this session:zVAPID_PUBLIC_KEY=zVAPID_PRIVATE_KEY=z9To persist these keys, please add them to your .env file.zQ================================================================================
r:   r9   r<   @zhttps://t.me/rI   -r;   r8   r7   r=   r&   r?   r>   r@   rB   rA   rD   rC   rF   rE   rH   rG   rJ   rK   r   r   r   r   r   r(   r*   r+   r-   r1   r6    ) rQ   rR   rS   RuntimeErrorrP   rU   PACKAGE_DIRrW   splitstripdiscordImportErrorboollower)cryptography.hazmat.primitives.asymmetricre   base64generate_private_key	SECP256R1
public_keyprivate_numbersprivate_valueto_bytesurlsafe_b64encodedecoderstrippublic_numbersxyprint	Exception
startswith)6clsenv_portport	directory
static_dirdb_filelog_filepoll_intervaladmin_api_keyfrontend_origins_envofrontend_originsdiscord_bot_tokenowner_user_idrr   HAS_DISCORDdiscord_enabledwatchlist_enabled
ntfy_topicntfy_topic_removednotification_batch_thresholdretry_delaysheaderscompare_headerspsref_headerstelegram_bot_tokentelegram_channel_idtelegram_owner_idtelegram_enabledvapid_private_keyvapid_public_keyvapid_subjectre   rw   private_keyrz   private_derr   r   r   
public_derpush_enableddiscord_invite_urltelegram_channel_urlpush_ttl_secondsmax_failed_pagespsref_max_failedstability_thresholdtier0_debounce_secondstier1_debounce_secondstier2_debounce_secondsflap_window_hourstier1_flap_thresholdtier2_flap_thresholds6                                                         rV   loadzSettings.loadk   s    ::>>&)JRZZ^^M-J{ 	Ix=D  	+f4
f$'::v%(<<(("=

7  "zz~~.@BYZ/C/I/I#/N\/N!RSRYRYR[AGGI/N\JJNN+>?((!<	 K {R/@R]SJJNN+>GMMOSggZZ^^L2UV
ZZ^^,@Bmn'*'7'78VXY'Z$Sz H.9
 ] $"+0 B
 39 B
  ZZ^^,@A jjnn-BCJJNN+>? 2 J7JKJJNN+>?::>>*<=

8TU (8H !55bllnE(335
 *99;IIRRSUafRg$*$<$<[$I$P$PQX$Y$`$`ad$e!!+!:!:!<"$$--bE-B"$$--bE-B$q[1_
#)#;#;J#G#N#Nw#W#^#^_b#c m$TUNO)*:);<=*+<*=>?QRm$
 -B2BCZZ^^,@B^_!zz~~.DE#"':'E'Ec'J)67J127N6O'P$$-@-K-KC-P)67J6K'L$'=$++,>F++,>B++,>B!../DaH!$!1!12JC!P!$!1!12JD!Q!$!1!12JD!Q,,-@!D"//0FJ"//0FJ (
(
(
 "(
 	(

 (
 ((
 ((
 .(
 0(
 ((
 ,(
 0(
 "(
  2(
 *F(
  &!(
" #(
$ ,%(
& ('(
(  2)(
* !4+(
, 0-(
. ./(
0 01(
2 .3(
4 (5(
6 &7(
8 .9(
:  2;(
< "6=(
> .?(
@ .A(
B !4C(
D $:E(
F $:G(
H $:I(
J 0K(
L "6M(
N "6O(
 (	
u  	I!<XJGHH	I" ]  	 K	 J  s=   W W32W38W8 ;E'X
 W08XX
	XX)rN   r	   )<__name__
__module____qualname__rP   __annotations__r   r   r   r   rT   r   r   r   r   r   rt   r   r   r   r   r   r   r    r!   r"   r#   r%   r'   r(   floatr)   r*   r   r+   r,   r-   r.   r/   r0   r1   r2   r3   r5   r6   r8   r:   r<   r=   r?   r@   rB   rD   rF   rH   rJ   rK   staticmethodrW   classmethodr   rm       rV   r	   r	      s    IOMNM3#'M8C=' #'d3i& (,x}+M3!OT!"t" :J9II() #) eGSdBOSBNN*M3*@NC@4s4Isc $L$u+$!e! #GT#s(^"&*OT#s(^* 5NC4$(M4S>( )-,)-#-'+x}+"d" (,x}+&*hsm*5M35L$!c! ;: 6#6 c c  !  #&C%"&C&"&C&s !#! !#!#     k
 k
r   r	   )rQ   dataclassesr   pathlibr   typingr   r   r   __file__parentresolvero   dotenvload_dotenvr	   r   settingsrm   r   rV   <module>r      sv    	 !  ' ' 8n##**224    ;' (
H
 H
 H
V ==?r   