Skip to content

Commit ffa3e94

Browse files
Harden Plivo app and use the current Plivo logo
- wrap the send in try/except so network errors are reported, not raised - drop ghost/no-op auth branch and unused run() reads carried from the template - narrow the bare except; reflect the actual HTTP status (Plivo returns 202) - replace the placeholder icon with the current Plivo brand logo
1 parent a9e3ad8 commit ffa3e94

2 files changed

Lines changed: 12 additions & 23 deletions

File tree

plivo/1.0.0/api.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,4 +105,4 @@ actions:
105105
schema:
106106
type: string
107107
example: '{"success": true, "status": "200", "url": "https://api.plivo.com/v1/Account/YOUR_AUTH_ID/Message/", "results": [{"success": true, "status": 202, "url": "https://api.plivo.com/v1/Account/YOUR_AUTH_ID/Message/", "headers": {}, "body": {"message": "message(s) queued", "message_uuid": ["db3ce55a-7f1d-11e1-8ea7-1231380bc196"], "api_id": "db342550-7f1d-11e1-8ea7-1231380bc196"}, "cookies": {}}]}'
108-
large_image: data:image/png;base64,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
108+
large_image: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABmJLR0QA/wD/AP+gvaeTAAAFLUlEQVR4nO3be4hUVRzA8e+uq2aZEUJGplhhJJRgFGlZgpJWaoUEvahIKKJ/JIiSHhD91T8R9qD3w4L6J3rZy6gMekgmFEW0ZtIDK60kpNXSdXf648yw4+w5Z+/szo47y/cDF3TOOb9779zfPefec2ZBkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJUvO0NXl/64GNwGPAjiHEGQ9sBg6v+bwbOA/4o/z/NuBG4CqgF3gOWDuE/WqIeoESsI9wMWYPMs6kcpzYdnJVvbsi5asGuU8N0RjiF+wTYDn19UZFEqAd2B0p/32I56FBGkf6opWALYS7c0KBWEUS4OhEeQ9hCFGTTSCfAJVtB3APMDkTq+gQ8EOk/MsGnY/qNJFiCVDZ/gWeB06JxCqaAEuAvVVl/wDnNva0VNRY4CvqS4IScAB4GZhbFatoAgDMBG4HbgVOaPxpqR5thLvyPepPhF5gTjlOPQkwkowHTgUWA8uA04GjDukRNdF1hLuxYjbwOKGrL5oEl5XbFk2Aj4FtNduWquNYGynfBnxI+q1kLGEuI9bu6USbxcArQFfkeLuBDcD1QEeifcubAHQCj0TKphAe+nbR+ATYm6gzv1x+XybOfOKWZtrcXVN3OuHiFk3w74FzEvttWVOAN+nrxlcT7qJaEwmzdp00LwFOJLwWxurEkhXgxUT9/8rnWjGPMCNZ71C3D1iZ2HfLmQf8Rv+T/IiDv6xqCxNthiMBIExPx+r8Sf9EPYJ4N14CnqyqdxKDu/iVrQe4NPH9tJxJwEv0jXc30X98bSfMBn5Gc4cAgBWZWBfVHOc1mbqVae0xhLmGwV78yrab9E3SctoJizf313w+HrgW+I5iX8pwJEAHsD1R74Wa4303UW99VZ2VA5zDRuAO4BbgNdJDUAl4glHkSmBG+d+TCQ9MO6nvrlhebt/IBAC4N1Gvi9DtAxxD6MFi9S6oivV55thiC1GLSA8re6v2PypMA9aQPuHc9inhQREanwDTCBNOsbpXlOusSpR30jekTaVvxbN2yy1D35w5nxWZdi0n94Qf23qBdwgPhtUanQAAbyTqvl4u35Qov6EqxqLMcZ2R+V4OI31T3Jlp13KKvOuXCOPiOuDMRJzhSIDU+/1+4Czid/YuDv5RytWZ45pI3teJdg8P0G5I2ocz+CB0AQ8S5uyXA180cd/vAj9HPh9LeBiMzQw+Skiyiq5M/EkD7D81JZyLOWQjJQF2Ep6MpxPG2l8OwTH0AE8lymZGPusmJEC1XzPxl2bKTiOce8z2TLuWkxoCltUZZziGAIBjCV1+kWEq9lDXAfyVqL+9HL/WOMLEWGo/s5LfQgOMlB6g+1AfQNkOwsNgEQ9FPjtAWPSJmUqY6LqEvhnGucAHwIJEm28IcySjRqoHWFJnnOHqAQDOz8SubBsy7Wcw8Apnd4E6JeDi7LfQACOlBxhJ3ge2DlDngUzZT4TVzZwOwqtfzqsU741aRiv0AAC3ZeJvZeAbpw14NhNjoG0zTZoBtAeIe4awvBuzhjAnkFMirAmsLlC31jrChNKeOtu1hNQT8uI64xyZiFPi4Fe2PYk6RX50EVv3/5uBJ3RqnU2xH4V0ApfT5L/Wavafhi0gLKpU6wXeJjwU1eNC+l+M/YQ7qHLXLaT/z8t7gLcIP7zIOY7+ifIjoXsejFmE1905wPGEZeOdwLeE899UPjZJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJo9b/qNt0VLkK4aMAAAAASUVORK5CYII=

plivo/1.0.0/src/app.py

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def prepare_response(self, request):
8888
jsondata = request.text
8989
try:
9090
jsondata = json.loads(jsondata)
91-
except:
91+
except (ValueError, TypeError):
9292
pass
9393

9494
return {
@@ -111,17 +111,10 @@ def prepare_response(self, request):
111111
def summarize_responses(self, one_response, summary):
112112
summary["results"].append(one_response)
113113

114-
# if ONE request fails, summary is marked as failed
115114
if not one_response["success"]:
116115
summary["success"] = False
117116

118-
# surface a non-2xx status code on the summary
119-
try:
120-
code = int(one_response["status"])
121-
except (ValueError, TypeError):
122-
code = 0
123-
if not (200 <= code < 300):
124-
summary["status"] = one_response["status"]
117+
summary["status"] = one_response["status"]
125118

126119
return summary
127120

@@ -132,14 +125,9 @@ def Send_SMS(self, url, headers="", username="", password="", body="", From="",
132125
parsed_headers = self.splitheaders(headers)
133126
parsed_headers["User-Agent"] = "Shuffle Automation"
134127

135-
auth=None
136-
if username or password:
137-
# Shouldn't be used if authorization headers exist
138-
if "Authorization" in parsed_headers:
139-
#print("Found authorization - skipping username & pw")
140-
pass
141-
else:
142-
auth = requests.auth.HTTPBasicAuth(username, password)
128+
auth = None
129+
if (username or password) and "Authorization" not in parsed_headers:
130+
auth = requests.auth.HTTPBasicAuth(username, password)
143131

144132
if not timeout:
145133
timeout = 5
@@ -153,7 +141,7 @@ def Send_SMS(self, url, headers="", username="", password="", body="", From="",
153141

154142
summary = {
155143
"success": True,
156-
"status": "200",
144+
"status": None,
157145
"url": url,
158146
"results": []
159147
}
@@ -166,8 +154,11 @@ def Send_SMS(self, url, headers="", username="", password="", body="", From="",
166154

167155
payload = {"src": From, "dst": dst, "text": body, "type": "sms"}
168156

169-
request = requests.post(url, headers=parsed_headers, auth=auth, json=payload, timeout=timeout)
170-
response = self.prepare_response(request)
157+
try:
158+
request = requests.post(url, headers=parsed_headers, auth=auth, json=payload, timeout=timeout)
159+
response = self.prepare_response(request)
160+
except Exception as e:
161+
response = {"success": False, "status": "XXX", "error": str(e)}
171162
summary = self.summarize_responses(response, summary)
172163

173164
return json.dumps(summary)
@@ -179,8 +170,6 @@ def run(request):
179170
action = request.get_json()
180171
print(action)
181172
print(type(action))
182-
authorization_key = action.get("authorization")
183-
current_execution_id = action.get("execution_id")
184173

185174
if action and "name" in action and "app_name" in action:
186175
PLIVO.run(action)

0 commit comments

Comments
 (0)