summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Ordoquy <xordoquy@linovia.com>2013-10-04 13:01:57 -0700
committerXavier Ordoquy <xordoquy@linovia.com>2013-10-04 13:01:57 -0700
commit33e19809a4df81631ed42b24d82aa821d6ea91f2 (patch)
tree6c322df34c4a9cec6729671e3be23ec318d287f7
parent2641a45670ea831450694b767accfb3c9c2a9a6f (diff)
parent906ce937c726db78dee63c39a04d2dbcce7b3a13 (diff)
downloadraven-33e19809a4df81631ed42b24d82aa821d6ea91f2.tar.gz
Merge pull request #370 from skorokithakis/master
Add requests support.
-rw-r--r--raven/transport/__init__.py2
-rw-r--r--raven/transport/base.py23
-rw-r--r--raven/transport/registry.py4
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,