diff options
author | Xavier Ordoquy <xordoquy@linovia.com> | 2013-10-04 13:01:57 -0700 |
---|---|---|
committer | Xavier Ordoquy <xordoquy@linovia.com> | 2013-10-04 13:01:57 -0700 |
commit | 33e19809a4df81631ed42b24d82aa821d6ea91f2 (patch) | |
tree | 6c322df34c4a9cec6729671e3be23ec318d287f7 | |
parent | 2641a45670ea831450694b767accfb3c9c2a9a6f (diff) | |
parent | 906ce937c726db78dee63c39a04d2dbcce7b3a13 (diff) | |
download | raven-33e19809a4df81631ed42b24d82aa821d6ea91f2.tar.gz |
Merge pull request #370 from skorokithakis/master
Add requests support.
-rw-r--r-- | raven/transport/__init__.py | 2 | ||||
-rw-r--r-- | raven/transport/base.py | 23 | ||||
-rw-r--r-- | raven/transport/registry.py | 4 |
3 files changed, 27 insertions, 2 deletions
diff --git a/raven/transport/__init__.py b/raven/transport/__init__.py index 3a42fe5..5d0e14e 100644 --- a/raven/transport/__init__.py +++ b/raven/transport/__init__.py @@ -8,6 +8,6 @@ raven.transport from __future__ import absolute_import from raven.transport.base import (Transport, AsyncTransport, HTTPTransport, GeventedHTTPTransport, TwistedHTTPTransport, # NOQA - TornadoHTTPTransport, UDPTransport, EventletHTTPTransport) # NOQA + TornadoHTTPTransport, RequestsHTTPTransport, UDPTransport, EventletHTTPTransport) # NOQA from raven.transport.exceptions import InvalidScheme, DuplicateScheme # NOQA from raven.transport.registry import TransportRegistry, default_transports # NOQA diff --git a/raven/transport/base.py b/raven/transport/base.py index 12fa88f..ea1cd72 100644 --- a/raven/transport/base.py +++ b/raven/transport/base.py @@ -38,6 +38,12 @@ except: has_twisted = False try: + import requests + has_requests = True +except: + has_requests = False + +try: from tornado import ioloop from tornado.httpclient import AsyncHTTPClient, HTTPClient has_tornado = True @@ -340,6 +346,23 @@ class TornadoHTTPTransport(HTTPTransport): client.fetch(self._url, **kwargs) +class RequestsHTTPTransport(HTTPTransport): + + scheme = ['requests+http'] + + def __init__(self, parsed_url): + if not has_requests: + raise ImportError('RequestsHTTPTransport requires requests.') + + super(RequestsHTTPTransport, self).__init__(parsed_url) + + # remove the requests+ from the protocol, as it is not a real protocol + self._url = self._url.split('+', 1)[-1] + + def send(self, data, headers): + requests.post(self._url, data=data, headers=headers) + + class EventletHTTPTransport(HTTPTransport): scheme = ['eventlet+http', 'eventlet+https'] diff --git a/raven/transport/registry.py b/raven/transport/registry.py index 730be7a..5eadbcf 100644 --- a/raven/transport/registry.py +++ b/raven/transport/registry.py @@ -9,7 +9,8 @@ from __future__ import absolute_import from raven.transport.base import ( HTTPTransport, GeventedHTTPTransport, TwistedHTTPTransport, - TornadoHTTPTransport, UDPTransport, EventletHTTPTransport) + TornadoHTTPTransport, UDPTransport, EventletHTTPTransport, + RequestsHTTPTransport) from raven.transport.exceptions import DuplicateScheme from raven.transport.threaded import ThreadedHTTPTransport from raven.utils import urlparse @@ -74,6 +75,7 @@ default_transports = [ ThreadedHTTPTransport, GeventedHTTPTransport, TwistedHTTPTransport, + RequestsHTTPTransport, TornadoHTTPTransport, UDPTransport, EventletHTTPTransport, |