Coverage for api/config.py: 100%

57 statements  

« prev     ^ index     » next       coverage.py v7.6.2, created at 2024-10-10 03:02 +0300

1import os 

2from contextlib import suppress 

3from os import environ 

4 

5with suppress(FileNotFoundError): 

6 with open(".env") as f: 

7 line = f.readline() 

8 while line: 

9 # print(line) 

10 if line.find("=") == -1: 

11 line = f.readline() 

12 continue 

13 k, v = line.split("=", 1) 

14 os.environ[k] = v.strip() 

15 line = f.readline() 

16 f.close() 

17 

18LOCATION_API_TIMEOUT = 15 * 60 

19 

20ENVIRONMENT = environ.get("ENVIRONMENT", "local") 

21APP_NAME = "SOTRANS Main Service" 

22 

23MONGO_URI = environ.get("MONGO_URL", "mongodb://sotrans_mongodb:27017") 

24 

25MONGO_DB_NAME = environ.get("MONGO_DB_NAME", "sotrans_main") 

26 

27TESTING = int(environ.get("TESTING", 0)) 

28 

29 

30class KeycloakConfig: 

31 SERVER_URL = environ["KEYCLOAK_URL"] 

32 CLIENT_ID = environ.get("KEYCLOAK_CLIENT_ID") 

33 CLIENT_SECRET = environ.get("KEYCLOAK_CLIENT_SECRET") 

34 ADMIN_CLIENT_ID = environ.get("KEYCLOAK_ADMIN_ID") 

35 ADMIN_CLIENT_SECRET = environ.get("KEYCLOAK_ADMIN_SECRET") 

36 REALM = environ.get("KEYCLOAK_REALM") 

37 LOGIN_CALLBACK_URL = environ.get("KEYCLOAK_LOGIN_CALLBACK_URL") 

38 TOKEN_URL = environ.get("KEYCLOAK_TOKEN_URL") 

39 

40 

41class TelegramConfig: 

42 INFO_CHAT_ID = int(environ.get("INFO_NOTIFICATION_CHAT", "0")) 

43 ALERT_CHAT_ID = int(environ.get("ALERT_NOTIFICATION_CHAT", "0")) 

44 BOT_TOKEN = environ.get("BOT_TOKEN", "") 

45 LOG_LEVEL = int(environ.get("LOG_LEVEL", 30)) 

46 

47 

48class SentryConfig: 

49 DSN = environ.get("SENTRY_DSN") 

50 

51 

52class LocationConfig: 

53 LOCATION_API_URL = environ.get("LOCATION_API_URL") 

54 

55 

56class RecommendationAPIConfig: 

57 RECOMMENDATION_API_URL = environ["RECOMMENDATION_API_URL"] 

58 

59 

60class DocumentsServiceConfig: 

61 DOCUMENTS_SERVICE_URL = environ["DOCUMENTS_API_URL"] 

62 

63 

64class DadataConfig: 

65 DADATA_TOKEN = environ.get("DADATA_TOKEN") 

66 

67 

68class NotificationAPIConfig: 

69 NOTIFICATION_API_URL = environ.get( 

70 "NOTIFICATION_API_URL", "https://sotrans-notification-dev.the-devs.com" 

71 ) 

72 KEYCLOAK_USERNAME = environ.get("NOTIFICATION_KEYCLOAK_USERNAME", "") 

73 KEYCLOAK_PASSWORD = environ.get("NOTIFICATION_KEYCLOAK_PASSWORD", "") 

74 

75 

76class OpenSearchConfig: 

77 HOST = environ["OPENSEARCH_HOST"] 

78 LOGIN = environ["OPENSEARCH_LOGIN"] 

79 PASSWORD = environ["OPENSEARCH_PASS"] 

80 PORT = int(environ["OPENSEARCH_PORT"]) 

81 

82 

83DEFAULT_RATE_STEP = 1000 

84 

85EMBEDDED_DOCUMENTS_LIMIT = 10 

86 

87LOG_LEVEL = int(environ.get("LOG_LEVEL", 10)) 

88 

89MIN_COUNT_TO_NOTIFY_ON_SCRAPED = int( 

90 environ.get("MIN_COUNT_TO_NOTIFY_ON_SCRAPED", 100) 

91)