Skip to content

Commit

Permalink
Reading push.json values from environment variables
Browse files Browse the repository at this point in the history
Push.json.sample just has 4 key-value pairs which can be changed to ENV variables internally.

Hence, need to write code to read from Env variables.

Changing emission/net/ext_service/push/notify_interface.py to read from env variables.

Using helper class config.py, based on existing template.

First reading from .json file if exists, else read from env variables.
If env variables are all None, then say that values not configured.
  • Loading branch information
Mahadik, Mukul Chandrakant authored and Mahadik, Mukul Chandrakant committed Mar 29, 2024
1 parent a80d7e4 commit 20e1856
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 3 deletions.
37 changes: 37 additions & 0 deletions emission/net/ext_service/push/config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import json
import logging
import os

def get_config_data_from_env():
config_data_env = {
"provider": os.getenv("PUSH_PROVIDER"),
"server_auth_token": os.getenv("PUSH_SERVER_AUTH_TOKEN"),
"app_package_name": os.getenv("PUSH_APP_PACKAGE_NAME"),
"ios_token_format": os.getenv("PUSH_IOS_TOKEN_FORMAT")
}
return config_data_env

def get_config_data():
try:
config_file = open('conf/net/ext_service/push.json')
ret_val = json.load(config_file)
config_file.close()
except:
logging.debug("net.ext_service.push.json not configured, checking environment variables...")
ret_val = get_config_data_from_env()
# Check if all PUSH environment variables are not set
if (not any(ret_val.values())):
raise TypeError
return ret_val

try:
config_data = get_config_data()
except:
logging.debug("All push environment variables are set to None")

def get_config():
return config_data

def reload_config():
global config_data
config_data = get_config_data()
6 changes: 3 additions & 3 deletions emission/net/ext_service/push/notify_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@
import logging
import importlib

import emission.net.ext_service.push.config as pc

# Note that the URL is hardcoded because the API endpoints are not standardized.
# If we change a push provider, we will need to modify to match their endpoints.
# Hardcoding will remind us of this :)
# We can revisit this if push providers eventually decide to standardize...

try:
push_config_file = open('conf/net/ext_service/push.json')
push_config = json.load(push_config_file)
push_config_file.close()
push_config = pc.get_config_data()
except:
logging.warning("push service not configured, push notifications not supported")

Expand Down

0 comments on commit 20e1856

Please sign in to comment.