Skip to content

Commit d30566e

Browse files
committed
Create and use find_pem_file() #595
1 parent 0f3de25 commit d30566e

File tree

3 files changed

+34
-6
lines changed

3 files changed

+34
-6
lines changed

src/server/api/API_ingest/salesforce_contacts.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
from config import engine
88
from models import SalesForceContacts
99

10+
from api import pem
11+
1012
logger = structlog.get_logger()
1113

1214
TEST_MODE = os.getenv("TEST_MODE") # if not present, has value None
@@ -24,14 +26,13 @@ def store_contacts_all():
2426

2527
logger.debug("retrieving the latest salesforce contacts data")
2628

27-
if os.path.exists('server/bin/connected-app-secrets.pem'):
28-
pem_file = 'server/bin/connected-app-secrets.pem'
29-
elif os.path.exists('bin/connected-app-secrets.pem'):
30-
pem_file = 'bin/connected-app-secrets.pem'
31-
else:
29+
pem_file = pem.find_pem_file()
30+
31+
if pem_file == '':
3232
logger.error("Missing salesforce jwt private key pem file, skipping data pull")
3333
return
3434

35+
3536
sf = Salesforce(username=USERNAME, consumer_key=CONSUMER_KEY,
3637
privatekey_file=pem_file, domain=DOMAIN)
3738
results = sf.query("SELECT Contact_ID_18__c, FirstName, LastName, Contact.Account.Name, MailingCountry, MailingStreet, MailingCity, MailingState, MailingPostalCode, Phone, MobilePhone, Email FROM Contact")

src/server/api/pem.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from os import path
2+
3+
import structlog
4+
5+
logger = structlog.get_logger()
6+
7+
8+
def find_pem_file():
9+
"""
10+
Search likely places for the .pem file needed for SalesForce operations,
11+
returning filename if found or empty string if not.
12+
"""
13+
14+
locations = ['server/bin', 'bin', 'server/pem']
15+
file_name = 'connected-app-secrets.pem'
16+
17+
pem_file = ''
18+
19+
for file_path in locations:
20+
if path.exists(path.join(file_path, file_name)):
21+
pem_file = path.normpath(path.join(file_path, file_name))
22+
logger.info("Found pem file at %s ", pem_file)
23+
break
24+
25+
return pem_file

src/server/pub_sub/salesforce_message_publisher.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import structlog
1313
from datetime import datetime
1414

15+
from api import pem
16+
1517
logger = structlog.get_logger()
1618

1719
ISSUER = os.getenv("SALESFORCE_CONSUMER_KEY")
@@ -25,7 +27,7 @@
2527
UPDATE_TOPIC = "/event/updated_contacts_batched__e"
2628

2729
def send_pipeline_update_messages(contacts_list):
28-
pem_file = 'bin/connected-app-secrets.pem'
30+
pem_file = pem.find_pem_file() #TODO: Could we get here (and get errors) if we didn't have a pem file?
2931
with open(pem_file) as fd:
3032
private_key = fd.read()
3133
logger.info('Loaded PEM certificate')

0 commit comments

Comments
 (0)