modulitiz-micro 2.40.0__py311-none-any.whl → 2.42.0__py311-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. modulitiz_micro/ModuloMeteo.py +72 -72
  2. modulitiz_micro/ModuloSeriale.py +70 -70
  3. modulitiz_micro/ModuloTarghe.py +47 -46
  4. modulitiz_micro/database/AbstractDatabaseService.py +13 -13
  5. modulitiz_micro/database/AbstractSql.py +69 -69
  6. modulitiz_micro/database/ModuloSqlOracle.py +19 -19
  7. modulitiz_micro/database/ModuloSqlServer.py +43 -43
  8. modulitiz_micro/database/eccezioni/EccezioneDbNoData.py +6 -6
  9. modulitiz_micro/database/mysql/AbstractBasicMysql.py +114 -114
  10. modulitiz_micro/database/mysql/ModuloMysql.py +163 -163
  11. modulitiz_micro/database/mysql/MysqlCommonConverter.py +47 -47
  12. modulitiz_micro/database/mysql/eccezioni/EccezioneMysqlOffline.py +6 -6
  13. modulitiz_micro/database/sqlite/AbstractBasicSQLite.py +114 -114
  14. modulitiz_micro/database/sqlite/ModuloSQLite.py +82 -82
  15. modulitiz_micro/eccezioni/EccezioneCtrlC.py +7 -7
  16. modulitiz_micro/eccezioni/EccezioneScheduler.py +7 -7
  17. modulitiz_micro/eccezioni/http/EccezioneHttp.py +8 -8
  18. modulitiz_micro/eccezioni/http/EccezioneHttp404.py +7 -7
  19. modulitiz_micro/eccezioni/http/EccezioneHttpGeneric.py +7 -7
  20. modulitiz_micro/files/cache/DatabaseCache.py +91 -91
  21. modulitiz_micro/files/cache/decorators/cacheRam.py +26 -26
  22. modulitiz_micro/files/git/ModuloGit.py +28 -28
  23. modulitiz_micro/files/git/decorators/catchAndRaiseGitExceptions.py +19 -19
  24. modulitiz_micro/files/git/exceptions/EccezioneGit.py +7 -7
  25. modulitiz_micro/gestionedom/GestioneDom.py +44 -44
  26. modulitiz_micro/iot/ModuleIotDevice.py +4 -4
  27. modulitiz_micro/keylogger/EccezioneKeyLogger.py +7 -7
  28. modulitiz_micro/keylogger/ModuloKeylogger.py +73 -73
  29. modulitiz_micro/rete/ModuloNetworking.py +72 -72
  30. modulitiz_micro/rete/ModuloOpenVpn.py +15 -15
  31. modulitiz_micro/rete/email/EmailBean.py +5 -5
  32. modulitiz_micro/rete/email/ModuloEmail.py +90 -90
  33. modulitiz_micro/rete/http/ModuloHttp.py +119 -119
  34. modulitiz_micro/rete/http/ModuloHttpConnectionSafe.py +91 -91
  35. modulitiz_micro/rete/http/ModuloHttpUtils.py +69 -69
  36. modulitiz_micro/rete/http/beans/HttpResponseBean.py +5 -5
  37. modulitiz_micro/rete/http/decorators/catchAndRaiseHttpExceptions.py +22 -22
  38. modulitiz_micro/rete/ntp/AbstractModuloNtp.py +73 -73
  39. modulitiz_micro/rete/ntp/ModuloNtpIt.py +8 -8
  40. modulitiz_micro/rete/socketserver/AbstractBasicGetSocketServer.py +35 -35
  41. modulitiz_micro/rete/socketserver/AbstractSocketServer.py +267 -267
  42. modulitiz_micro/rete/ssl/ModuloSsl.py +56 -56
  43. modulitiz_micro/sistema/ModuloEnvVars.py +34 -34
  44. modulitiz_micro/sistema/ModuloSystemPipe.py +67 -67
  45. modulitiz_micro/social/telegram/AbstractModuloTelegram.py +53 -53
  46. modulitiz_micro/social/telegram/ModuloTelegramSimple.py +26 -26
  47. modulitiz_micro/util/beans/globalvar/AbstractBasicGlobalVarBean.py +15 -15
  48. modulitiz_micro/util/scheduler/{AbstractScheduler.py → ModuleScheduler.py} +26 -32
  49. {modulitiz_micro-2.40.0.dist-info → modulitiz_micro-2.42.0.dist-info}/METADATA +58 -65
  50. modulitiz_micro-2.42.0.dist-info/RECORD +56 -0
  51. {modulitiz_micro-2.40.0.dist-info → modulitiz_micro-2.42.0.dist-info}/WHEEL +1 -1
  52. {modulitiz_micro-2.40.0.dist-info → modulitiz_micro-2.42.0.dist-info/licenses}/LICENSE +21 -21
  53. modulitiz_micro/ModuleEnum.py +0 -8
  54. modulitiz_micro/ModuloBase64.py +0 -61
  55. modulitiz_micro/ModuloColorText.py +0 -35
  56. modulitiz_micro/ModuloDate.py +0 -295
  57. modulitiz_micro/ModuloFunzioni.py +0 -71
  58. modulitiz_micro/ModuloListe.py +0 -150
  59. modulitiz_micro/ModuloNumeri.py +0 -127
  60. modulitiz_micro/ModuloPyinstaller.py +0 -29
  61. modulitiz_micro/ModuloStatistiche.py +0 -31
  62. modulitiz_micro/ModuloStringhe.py +0 -180
  63. modulitiz_micro/android/ModuloAndroid.py +0 -18
  64. modulitiz_micro/android/ModuloAndroidAdb.py +0 -48
  65. modulitiz_micro/android/ModuloAndroidSim.py +0 -130
  66. modulitiz_micro/android/beans/SmsBean.py +0 -12
  67. modulitiz_micro/android/enums/AndroidSmsTypeEnum.py +0 -17
  68. modulitiz_micro/eccezioni/EccezioneBase.py +0 -7
  69. modulitiz_micro/eccezioni/EccezioneRuntime.py +0 -7
  70. modulitiz_micro/eccezioni/EccezioneSoNonSupportato.py +0 -7
  71. modulitiz_micro/files/ModuloFiles.py +0 -173
  72. modulitiz_micro/files/ModuloLogging.py +0 -69
  73. modulitiz_micro/files/ModuloZip.py +0 -42
  74. modulitiz_micro/files/cache/CacheBean.py +0 -5
  75. modulitiz_micro/files/cache/CacheRam.py +0 -29
  76. modulitiz_micro/init/AbstractBasicInit.py +0 -27
  77. modulitiz_micro/init/AbstractInit.py +0 -11
  78. modulitiz_micro/multithread/ModuloThread.py +0 -26
  79. modulitiz_micro/multithread/ModuloThreadLogger.py +0 -8
  80. modulitiz_micro/multithread/ModuloThreadWithCallbackError.py +0 -25
  81. modulitiz_micro/nlp/ModuloNlp.py +0 -36
  82. modulitiz_micro/nlp/ModuloNlpDateAndTime.py +0 -59
  83. modulitiz_micro/sistema/EnvVarsEnum.py +0 -9
  84. modulitiz_micro/sistema/ModuloSystem.py +0 -298
  85. modulitiz_micro/util/beans/conf/AbstractBasicConfBean.py +0 -11
  86. modulitiz_micro/util/beans/conf/AbstractConfBean.py +0 -16
  87. modulitiz_micro/util/beans/fileconf/AbstractBasicFileConfBean.py +0 -11
  88. modulitiz_micro/util/beans/fileconf/AbstractFileConfBean.py +0 -13
  89. modulitiz_micro/util/beans/globalvar/AbstractGlobalVarBean.py +0 -34
  90. modulitiz_micro/util/decorators/noAwait.py +0 -23
  91. modulitiz_micro/util/pip/AbstractModuloPip.py +0 -41
  92. modulitiz_micro/util/pip/ModuloPip.py +0 -49
  93. modulitiz_micro/util/spooler/AbstractSpooler.py +0 -14
  94. modulitiz_micro/util/spooler/Spooler.py +0 -18
  95. modulitiz_micro/util/spooler/beans/QueueBean.py +0 -8
  96. modulitiz_micro/util/spooler/decorators/spooler.py +0 -49
  97. modulitiz_micro/util/spooler/eccezioni/EccezioneSpooler.py +0 -7
  98. modulitiz_micro/util/spooler/eccezioni/EccezioneSpoolerFull.py +0 -7
  99. modulitiz_micro/util/unittesting/AbstractOverrideTestUtil.py +0 -31
  100. modulitiz_micro/util/unittesting/AbstractTestUtil.py +0 -11
  101. modulitiz_micro/util/unittesting/ModuloRunUnitTest.py +0 -25
  102. modulitiz_micro/util/wheel/ModuloBuildWheel.py +0 -118
  103. modulitiz_micro/util/wheel/ModuloCheckTestNamingConvention.py +0 -89
  104. modulitiz_micro/util/wheel/ModuloToml.py +0 -40
  105. modulitiz_micro/util/wheel/ModuloWheel.py +0 -12
  106. modulitiz_micro-2.40.0.dist-info/RECORD +0 -109
  107. {modulitiz_micro-2.40.0.dist-info → modulitiz_micro-2.42.0.dist-info}/top_level.txt +0 -0
@@ -1,69 +1,69 @@
1
- import json
2
- import random
3
- from urllib.parse import quote_plus
4
- from urllib.parse import unquote_plus
5
-
6
- import requests
7
-
8
- from modulitiz_micro.ModuloStringhe import ModuloStringhe
9
- from modulitiz_micro.eccezioni.http.EccezioneHttpGeneric import EccezioneHttpGeneric
10
- from modulitiz_micro.files.ModuloLogging import ModuloLogging
11
- from modulitiz_micro.rete.http.ModuloHttp import ModuloHttp
12
- from modulitiz_micro.rete.http.ModuloHttpConnectionSafe import ModuloHttpConnectionSafe
13
- from modulitiz_micro.rete.http.decorators.catchAndRaiseHttpExceptions import catchAndRaiseHttpExceptions
14
-
15
-
16
- class ModuloHttpUtils(object):
17
- @staticmethod
18
- def isUrlAvailable(logger:ModuloLogging|None,url:str,retries:int,ignoreCerts:bool=False) -> bool:
19
- if retries!=0:
20
- connectionSafe=ModuloHttpConnectionSafe(logger)
21
- return connectionSafe.run(retries,0,ModuloHttpUtils.__isUrlAvailable,url,ignoreCerts)
22
- try:
23
- return ModuloHttpUtils.__isUrlAvailable(url,ignoreCerts)
24
- except EccezioneHttpGeneric:
25
- return False
26
-
27
- @staticmethod
28
- @catchAndRaiseHttpExceptions
29
- def __isUrlAvailable(url:str,ignoreCerts:bool) -> bool:
30
- with requests.get(url,stream=True,verify=(not ignoreCerts)) as response:
31
- return response.status_code==ModuloHttp.STATUS_OK
32
-
33
- @staticmethod
34
- def getIpV4() -> str|None:
35
- """
36
- Returns public external IpV4 address.
37
- """
38
- url=random.choice(ModuloHttp.URLS_GET_IPV4)
39
- http=ModuloHttp(url,None)
40
- try:
41
- response=http.doGet(2,False)
42
- except EccezioneHttpGeneric:
43
- return None
44
- if response is None:
45
- return None
46
- return response.responseBody.decode(ModuloStringhe.CODIFICA_UTF8)
47
-
48
- @classmethod
49
- def translate(cls,langFrom:str|None,langTo:str,msg:str) -> str|None:
50
- if langFrom is None:
51
- langFrom="auto"
52
- msg=cls.encodeUrl(msg)
53
- url=f'https://translate.googleapis.com/translate_a/single?client=gtx&sl={langFrom}&tl={langTo}&dt=t&q={msg}'
54
- http=ModuloHttp(url,None)
55
- try:
56
- response=http.doGet(3,False)
57
- except EccezioneHttpGeneric:
58
- return None
59
- responseText=response.responseBody.decode(ModuloStringhe.CODIFICA_UTF8)
60
- result=json.loads(responseText)
61
- output="".join(x[0] for x in result[0])
62
- return output
63
-
64
- @staticmethod
65
- def encodeUrl(url: str) -> str:
66
- return quote_plus(url)
67
- @staticmethod
68
- def decodeUrl(url: str) -> str:
69
- return unquote_plus(url)
1
+ import json
2
+ import random
3
+ from urllib.parse import quote_plus
4
+ from urllib.parse import unquote_plus
5
+
6
+ import requests
7
+
8
+ from modulitiz_nano.ModuloStringhe import ModuloStringhe
9
+ from modulitiz_micro.eccezioni.http.EccezioneHttpGeneric import EccezioneHttpGeneric
10
+ from modulitiz_nano.files.ModuloLogging import ModuloLogging
11
+ from modulitiz_micro.rete.http.ModuloHttp import ModuloHttp
12
+ from modulitiz_micro.rete.http.ModuloHttpConnectionSafe import ModuloHttpConnectionSafe
13
+ from modulitiz_micro.rete.http.decorators.catchAndRaiseHttpExceptions import catchAndRaiseHttpExceptions
14
+
15
+
16
+ class ModuloHttpUtils(object):
17
+ @staticmethod
18
+ def isUrlAvailable(logger:ModuloLogging|None,url:str,retries:int,ignoreCerts:bool=False) -> bool:
19
+ if retries!=0:
20
+ connectionSafe=ModuloHttpConnectionSafe(logger)
21
+ return connectionSafe.run(retries,0,ModuloHttpUtils.__isUrlAvailable,url,ignoreCerts)
22
+ try:
23
+ return ModuloHttpUtils.__isUrlAvailable(url,ignoreCerts)
24
+ except EccezioneHttpGeneric:
25
+ return False
26
+
27
+ @staticmethod
28
+ @catchAndRaiseHttpExceptions
29
+ def __isUrlAvailable(url:str,ignoreCerts:bool) -> bool:
30
+ with requests.get(url,stream=True,verify=(not ignoreCerts)) as response:
31
+ return response.status_code==ModuloHttp.STATUS_OK
32
+
33
+ @staticmethod
34
+ def getIpV4() -> str|None:
35
+ """
36
+ Returns public external IpV4 address.
37
+ """
38
+ url=random.choice(ModuloHttp.URLS_GET_IPV4)
39
+ http=ModuloHttp(url,None)
40
+ try:
41
+ response=http.doGet(2,False)
42
+ except EccezioneHttpGeneric:
43
+ return None
44
+ if response is None:
45
+ return None
46
+ return response.responseBody.decode(ModuloStringhe.CODIFICA_UTF8)
47
+
48
+ @classmethod
49
+ def translate(cls,langFrom:str|None,langTo:str,msg:str) -> str|None:
50
+ if langFrom is None:
51
+ langFrom="auto"
52
+ msg=cls.encodeUrl(msg)
53
+ url=f'https://translate.googleapis.com/translate_a/single?client=gtx&sl={langFrom}&tl={langTo}&dt=t&q={msg}'
54
+ http=ModuloHttp(url,None)
55
+ try:
56
+ response=http.doGet(3,False)
57
+ except EccezioneHttpGeneric:
58
+ return None
59
+ responseText=response.responseBody.decode(ModuloStringhe.CODIFICA_UTF8)
60
+ result=json.loads(responseText)
61
+ output="".join(x[0] for x in result[0])
62
+ return output
63
+
64
+ @staticmethod
65
+ def encodeUrl(url: str) -> str:
66
+ return quote_plus(url)
67
+ @staticmethod
68
+ def decodeUrl(url: str) -> str:
69
+ return unquote_plus(url)
@@ -1,5 +1,5 @@
1
- class HttpResponseBean(object):
2
- def __init__(self,status:int,responseBody:bytes,responseHeaders:dict):
3
- self.status=status
4
- self.responseBody=responseBody
5
- self.responseHeaders=responseHeaders
1
+ class HttpResponseBean(object):
2
+ def __init__(self,status:int,responseBody:bytes,responseHeaders:dict):
3
+ self.status=status
4
+ self.responseBody=responseBody
5
+ self.responseHeaders=responseHeaders
@@ -1,22 +1,22 @@
1
- import socket
2
- from functools import wraps
3
- from urllib.error import URLError
4
-
5
- import requests
6
-
7
- from modulitiz_micro.eccezioni.http.EccezioneHttpGeneric import EccezioneHttpGeneric
8
-
9
-
10
- def catchAndRaiseHttpExceptions(funzione):
11
- """
12
- Cattura tutte le eccezioni http di vario tipo e rilancia un'eccezione custom
13
- """
14
-
15
- @wraps(funzione)
16
- def wrapped(*args,**kwargs):
17
- try:
18
- return funzione(*args,**kwargs)
19
- except (ConnectionError,TimeoutError,URLError,
20
- requests.exceptions.ConnectionError,socket.gaierror) as ex:
21
- raise EccezioneHttpGeneric() from ex
22
- return wrapped
1
+ import socket
2
+ from functools import wraps
3
+ from urllib.error import URLError
4
+
5
+ import requests
6
+
7
+ from modulitiz_micro.eccezioni.http.EccezioneHttpGeneric import EccezioneHttpGeneric
8
+
9
+
10
+ def catchAndRaiseHttpExceptions(funzione):
11
+ """
12
+ Cattura tutte le eccezioni http di vario tipo e rilancia un'eccezione custom
13
+ """
14
+
15
+ @wraps(funzione)
16
+ def wrapped(*args,**kwargs):
17
+ try:
18
+ return funzione(*args,**kwargs)
19
+ except (ConnectionError,TimeoutError,URLError,
20
+ requests.exceptions.ConnectionError,socket.gaierror) as ex:
21
+ raise EccezioneHttpGeneric() from ex
22
+ return wrapped
@@ -1,73 +1,73 @@
1
- import socket
2
- import struct
3
- from abc import ABC
4
-
5
- from modulitiz_micro.ModuloDate import ModuloDate
6
- from modulitiz_micro.eccezioni.http.EccezioneHttpGeneric import EccezioneHttpGeneric
7
- from modulitiz_micro.files.ModuloLogging import ModuloLogging
8
- from modulitiz_micro.rete.http.ModuloHttpConnectionSafe import ModuloHttpConnectionSafe
9
- from modulitiz_micro.rete.http.decorators.catchAndRaiseHttpExceptions import catchAndRaiseHttpExceptions
10
-
11
-
12
- class AbstractModuloNtp(ABC):
13
- REFRESH_CACHE_EVERY_SECS=4*3600*1000 # NTP request frequency
14
- OFFSET_MILLIS=1 # offset correzione errore
15
- TIMEOUT=10
16
-
17
- __PORTA=123 # numero della porta (UDP)
18
- __BUF=1024
19
- __TIME1970=2208988800 # reference time, secondi da 1900-01-01 00:00:00 a 1970-01-01 00:00:00 = 70 anni
20
- __MSG=('\x1b' + 47 * '\0').encode()
21
-
22
-
23
- def __init__(self,host:str,logger:ModuloLogging):
24
- self.logger=logger
25
- self.connectionSafe = ModuloHttpConnectionSafe(logger)
26
- self.host=host
27
- self.lastNtpResponse=0
28
- self.lastNtpTimestampUtc=0
29
-
30
- def getTimestampUtcFromNtp(self,useCache:bool=True,retryIfError:bool=True)->int:
31
- if useCache is True and self.lastNtpResponse!=0:
32
- # controllo se e' passato poco tempo dall'ultima chiamata ntp
33
- diffMillisLastResponse=(ModuloDate.getMillis()-self.lastNtpResponse)
34
- if diffMillisLastResponse<self.REFRESH_CACHE_EVERY_SECS:
35
- # calcolo l'ora attuale usando il cronometro interno
36
- return self.lastNtpTimestampUtc+diffMillisLastResponse+self.OFFSET_MILLIS
37
- # invio la richiesta e in caso di errore...
38
- if not retryIfError:
39
- #... uso il cronometro interno
40
- try:
41
- timestampUtc=self.__ntpSendPacket()
42
- except EccezioneHttpGeneric:
43
- timestampUtc=None
44
- else:
45
- #... riprovo
46
- timestampUtc=self.connectionSafe.run(1,3,self.__ntpSendPacket)
47
- if timestampUtc is None:
48
- diffMillisLastResponse=(ModuloDate.getMillis()-self.lastNtpResponse)
49
- return self.lastNtpTimestampUtc+diffMillisLastResponse+self.OFFSET_MILLIS
50
- timestampUtc=timestampUtc*1000
51
- # successo
52
- self.lastNtpResponse=ModuloDate.getMillis()
53
- self.lastNtpTimestampUtc=timestampUtc
54
- return self.lastNtpTimestampUtc
55
-
56
- def getDatetimeFromNtp(self,useCache:bool=True,retryIfError:bool=True):
57
- tsSec=self.getTimestampUtcFromNtp(useCache,retryIfError)//1000
58
- return ModuloDate.timestampUtcToDate(tsSec)
59
-
60
- @catchAndRaiseHttpExceptions
61
- def __ntpSendPacket(self)->int:
62
- # connect to server
63
- client=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
64
- client.settimeout(self.TIMEOUT)
65
- client.sendto(self.__MSG,(self.host,self.__PORTA))
66
- # ricevo i dati
67
- response=client.recvfrom(self.__BUF)[0]
68
- # chiudo la socket
69
- client.close()
70
- # estraggo il timestamp
71
- tsSec=struct.unpack("!12I",response)[10]
72
- tsSec-=self.__TIME1970
73
- return tsSec
1
+ import socket
2
+ import struct
3
+ from abc import ABC
4
+
5
+ from modulitiz_nano.ModuloDate import ModuloDate
6
+ from modulitiz_micro.eccezioni.http.EccezioneHttpGeneric import EccezioneHttpGeneric
7
+ from modulitiz_nano.files.ModuloLogging import ModuloLogging
8
+ from modulitiz_micro.rete.http.ModuloHttpConnectionSafe import ModuloHttpConnectionSafe
9
+ from modulitiz_micro.rete.http.decorators.catchAndRaiseHttpExceptions import catchAndRaiseHttpExceptions
10
+
11
+
12
+ class AbstractModuloNtp(ABC):
13
+ REFRESH_CACHE_EVERY_SECS=4*3600*1000 # NTP request frequency
14
+ OFFSET_MILLIS=1 # offset correzione errore
15
+ TIMEOUT=10
16
+
17
+ __PORTA=123 # numero della porta (UDP)
18
+ __BUF=1024
19
+ __TIME1970=2208988800 # reference time, secondi da 1900-01-01 00:00:00 a 1970-01-01 00:00:00 = 70 anni
20
+ __MSG=('\x1b' + 47 * '\0').encode()
21
+
22
+
23
+ def __init__(self,host:str,logger:ModuloLogging):
24
+ self.logger=logger
25
+ self.connectionSafe = ModuloHttpConnectionSafe(logger)
26
+ self.host=host
27
+ self.lastNtpResponse=0
28
+ self.lastNtpTimestampUtc=0
29
+
30
+ def getTimestampUtcFromNtp(self,useCache:bool=True,retryIfError:bool=True)->int:
31
+ if useCache is True and self.lastNtpResponse!=0:
32
+ # controllo se e' passato poco tempo dall'ultima chiamata ntp
33
+ diffMillisLastResponse=(ModuloDate.getMillis()-self.lastNtpResponse)
34
+ if diffMillisLastResponse<self.REFRESH_CACHE_EVERY_SECS:
35
+ # calcolo l'ora attuale usando il cronometro interno
36
+ return self.lastNtpTimestampUtc+diffMillisLastResponse+self.OFFSET_MILLIS
37
+ # invio la richiesta e in caso di errore...
38
+ if not retryIfError:
39
+ #... uso il cronometro interno
40
+ try:
41
+ timestampUtc=self.__ntpSendPacket()
42
+ except EccezioneHttpGeneric:
43
+ timestampUtc=None
44
+ else:
45
+ #... riprovo
46
+ timestampUtc=self.connectionSafe.run(1,3,self.__ntpSendPacket)
47
+ if timestampUtc is None:
48
+ diffMillisLastResponse=(ModuloDate.getMillis()-self.lastNtpResponse)
49
+ return self.lastNtpTimestampUtc+diffMillisLastResponse+self.OFFSET_MILLIS
50
+ timestampUtc=timestampUtc*1000
51
+ # successo
52
+ self.lastNtpResponse=ModuloDate.getMillis()
53
+ self.lastNtpTimestampUtc=timestampUtc
54
+ return self.lastNtpTimestampUtc
55
+
56
+ def getDatetimeFromNtp(self,useCache:bool=True,retryIfError:bool=True):
57
+ tsSec=self.getTimestampUtcFromNtp(useCache,retryIfError)//1000
58
+ return ModuloDate.timestampUtcToDate(tsSec)
59
+
60
+ @catchAndRaiseHttpExceptions
61
+ def __ntpSendPacket(self)->int:
62
+ # connect to server
63
+ client=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
64
+ client.settimeout(self.TIMEOUT)
65
+ client.sendto(self.__MSG,(self.host,self.__PORTA))
66
+ # ricevo i dati
67
+ response=client.recvfrom(self.__BUF)[0]
68
+ # chiudo la socket
69
+ client.close()
70
+ # estraggo il timestamp
71
+ tsSec=struct.unpack("!12I",response)[10]
72
+ tsSec-=self.__TIME1970
73
+ return tsSec
@@ -1,8 +1,8 @@
1
- from modulitiz_micro.rete.ntp.AbstractModuloNtp import AbstractModuloNtp
2
-
3
-
4
- class ModuloNtpIt(AbstractModuloNtp):
5
- HOST_IT="ntp1.inrim.it"
6
-
7
- def __init__(self,*args,**kwargs):
8
- super().__init__(self.HOST_IT,*args,**kwargs)
1
+ from modulitiz_micro.rete.ntp.AbstractModuloNtp import AbstractModuloNtp
2
+
3
+
4
+ class ModuloNtpIt(AbstractModuloNtp):
5
+ HOST_IT="ntp1.inrim.it"
6
+
7
+ def __init__(self,*args,**kwargs):
8
+ super().__init__(self.HOST_IT,*args,**kwargs)
@@ -1,35 +1,35 @@
1
- from abc import abstractmethod
2
-
3
- from modulitiz_micro.ModuloStringhe import ModuloStringhe
4
- from modulitiz_micro.eccezioni.http.EccezioneHttp import EccezioneHttp
5
- from modulitiz_micro.rete.http.ModuloHttp import ModuloHttp
6
- from modulitiz_micro.rete.socketserver.AbstractSocketServer import AbstractSocketServer
7
-
8
-
9
- class AbstractBasicGetSocketServer(AbstractSocketServer):
10
-
11
- def __init__(self,*args,**kwargs):
12
- super().__init__(*args,**kwargs)
13
-
14
- @abstractmethod
15
- def processResponse(self,clientIp:str,path:str,params:dict)->str|None:
16
- """
17
- Cosa fare se la richiesta e' formalmente corretta.
18
- Deve ritornare un output per chi ha fatto la richiesta
19
- """
20
-
21
- def handleRequest(self,method:str,url:str,path:str,params:dict,httpType:str,clientIp:str,clientPort:int)->tuple:
22
- if method!='GET' or not ModuloStringhe.contains(httpType,'HTTP') or ModuloStringhe.isEmpty(url):
23
- return 500,None,None
24
- # controllo parametri
25
- httpCode=ModuloHttp.STATUS_OK
26
- responseBody=""
27
- try:
28
- responseBody=self.processResponse(clientIp,path,params)
29
- except Exception as ex:
30
- if not isinstance(ex, EccezioneHttp):
31
- self.callbackError(ex)
32
- httpCode=500
33
- else:
34
- httpCode=ex.httpCode
35
- return httpCode,None,responseBody
1
+ from abc import abstractmethod
2
+
3
+ from modulitiz_nano.ModuloStringhe import ModuloStringhe
4
+ from modulitiz_micro.eccezioni.http.EccezioneHttp import EccezioneHttp
5
+ from modulitiz_micro.rete.http.ModuloHttp import ModuloHttp
6
+ from modulitiz_micro.rete.socketserver.AbstractSocketServer import AbstractSocketServer
7
+
8
+
9
+ class AbstractBasicGetSocketServer(AbstractSocketServer):
10
+
11
+ def __init__(self,*args,**kwargs):
12
+ super().__init__(*args,**kwargs)
13
+
14
+ @abstractmethod
15
+ def processResponse(self,clientIp:str,path:str,params:dict)->str|None:
16
+ """
17
+ Cosa fare se la richiesta e' formalmente corretta.
18
+ Deve ritornare un output per chi ha fatto la richiesta
19
+ """
20
+
21
+ def handleRequest(self,method:str,url:str,path:str,params:dict,httpType:str,clientIp:str,clientPort:int)->tuple:
22
+ if method!='GET' or not ModuloStringhe.contains(httpType,'HTTP') or ModuloStringhe.isEmpty(url):
23
+ return 500,None,None
24
+ # controllo parametri
25
+ httpCode=ModuloHttp.STATUS_OK
26
+ responseBody=""
27
+ try:
28
+ responseBody=self.processResponse(clientIp,path,params)
29
+ except Exception as ex:
30
+ if not isinstance(ex, EccezioneHttp):
31
+ self.callbackError(ex)
32
+ httpCode=500
33
+ else:
34
+ httpCode=ex.httpCode
35
+ return httpCode,None,responseBody