Skip to content

Commit

Permalink
Merge pull request #332 from TeskaLabs/fix/replace-requests
Browse files Browse the repository at this point in the history
Webhook: Replace requests with http.client
  • Loading branch information
byewokko authored Jan 9, 2023
2 parents 5c5c799 + 726a8c7 commit 9850688
Showing 1 changed file with 26 additions and 17 deletions.
43 changes: 26 additions & 17 deletions asab/storage/upsertor.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import abc
import json
import urllib.parse
import uuid
import hashlib
import datetime
import logging
import asab.web.rest.json
import requests
import http.client
import typing

#
Expand Down Expand Up @@ -153,22 +154,30 @@ async def webhook(self, data: dict):


def _webhook(self, data, uri, auth=None):
u = urllib.parse.urlparse(uri)
if u.scheme == "https":
conn = http.client.HTTPSConnection(u.netloc)
else:
conn = http.client.HTTPConnection(u.netloc)
try:
with requests.Session() as session:
if self.Storage.WebhookAuth:
session.headers["Authorization"] = self.Storage.WebhookAuth
with session.put(
uri,
data=data,
headers={"Content-Type": "application/json"}
) as response:
if response.status_code // 100 != 2:
text = response.text
L.error(
"Webhook endpoint responded with {}:\n{}".format(response.status_code, text),
struct_data={"uri": uri})
return response.json()
conn.request(
"PUT", uri, data,
{"Authorization": auth, "Content-Type": "application/json"}
)
response = conn.getresponse()
if response.status // 100 != 2:
text = response.read()
L.error(
"Webhook endpoint responded with {}:\n{}".format(response.status, text),
struct_data={"uri": uri})
return
self.WebhookResponseData = json.load(response)
except ConnectionRefusedError:
L.error("Webhook call failed: Connection refused.", struct_data={"uri": uri})
return
except json.decoder.JSONDecodeError as e:
L.error("Failed to decode JSON response from webhook: {}".format(str(e)))
L.error("Failed to decode JSON response from webhook: {}".format(str(e)), struct_data={"uri": uri})
except Exception as e:
L.error("Webhook call failed with {}: {}".format(type(e).__name__, str(e)))
L.error("Webhook call failed with {}: {}".format(type(e).__name__, str(e)), struct_data={"uri": uri})
finally:
conn.close()

0 comments on commit 9850688

Please sign in to comment.