Skip to content
This repository has been archived by the owner on Jul 15, 2019. It is now read-only.

Commit

Permalink
Merge pull request #40 from business-factory/dev
Browse files Browse the repository at this point in the history
Dev to Master

Co-authored-by:  <32jojo32@gmail.com>
  • Loading branch information
harpener committed May 6, 2019
2 parents a592711 + 976d5bf commit 5179f9d
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 92 deletions.
1 change: 0 additions & 1 deletion Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,3 @@ falcon = "*"
graypy = "*"
gunicorn = "*"
pika = "*"
requests = "*"
50 changes: 7 additions & 43 deletions Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ Create local configuration file `hooks/settings/_settings_local.py`.
* `/api/v1/hubspot/hooks`
* not scoped, as Hubspot doesn't have a staging version

* `/api/v1/proxy/?url={url}`
* *url* can be any url, e.g. http://www.google.com

## Docker

Expand Down
46 changes: 0 additions & 46 deletions hooks/api_server.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-

import eventlet
import falcon
import pika.exceptions

Expand Down Expand Up @@ -71,54 +70,9 @@ def on_post(self, req, resp):
resp.status = falcon.HTTP_500


class CorsProxy:
_DEFAULT_USER_AGENT = "ROI Hunter/CORS proxy; http://roihunter.com/"
_TIMEOUT_IN_SECONDS = (7, 10)

def __init__(self):
self._logger = services.logger()

def on_get(self, req, resp):
resp.set_header("access-control-allow-origin", "*")
resp.set_header("access-control-allow-methods", "GET")
resp.set_header("access-control-max-age", "21600")
allow_headers = req.get_header("access-control-request-headers")
if allow_headers:
resp.set_header("access-control-allow-headers", allow_headers)

url = req.get_param("url")

try:
self._logger.info("Trying to proxy URL: %s", url)
response = requests.get(url, timeout=self._TIMEOUT_IN_SECONDS, headers={"User-Agent": self._get_user_agent(req)})
response.raise_for_status()

resp.data = response.content
resp.content_type = response.headers["Content-Type"]
resp.status = falcon.HTTP_200
except requests.HTTPError:
self._logger.exception("Not able to proxy URL: %s", url)
resp.status = str(response.status_code) + " " + response.reason
except Exception:
self._logger.exception("Not able to proxy URL: %s", url)
resp.status = falcon.HTTP_400

@classmethod
def _get_user_agent(cls, api_request):
user_agent = api_request.headers.get("USER-AGENT")
if user_agent:
return user_agent
else:
return cls._DEFAULT_USER_AGENT


class API(falcon.API):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.add_route("/health", Health())
self.add_route(_API_PREFIX + "/{scope}/fb/hooks", FacebookHooks())
self.add_route(_API_PREFIX + "/hubspot/hooks", HubspotHooks())
self.add_route(_API_PREFIX + "/proxy", CorsProxy())

global requests
requests = eventlet.import_patched("requests")

0 comments on commit 5179f9d

Please sign in to comment.