Beispiel #1
0
    def request(self, method, uri, **kwargs):
        data = kwargs.get("data")
        if data is not None:
            udata = {}
            for k, v in data.items():
                key = k.encode("utf-8")
                if isinstance(v, (list, tuple, set)):
                    udata[key] = [encode_atom(x) for x in v]
                elif isinstance(v, (int, bytes, str)):
                    udata[key] = encode_atom(v)
                else:
                    raise ValueError("data should be an integer, " "binary, or string, or sequence ")
            data = urlencode(udata, doseq=True)

        del kwargs["auth"]
        event = HttpEvent(method, uri, data)
        if "/messages" in uri.lower() or "/calls" in uri.lower():
            self.events.append(event)
        resp = super().request(method, uri, auth=self.auth, **kwargs)

        event.url = uri
        event.status_code = resp.status_code
        event.response_body = force_text(resp.content)

        return resp
Beispiel #2
0
    def request(self, method, uri, **kwargs):
        """
        Send an HTTP request to the resource.

        :raises: a :exc:`~twilio.TwilioRestException`
        """
        if 'timeout' not in kwargs and self.timeout is not UNSET_TIMEOUT:
            kwargs['timeout'] = self.timeout

        data = kwargs.get('data')
        if data is not None:
            udata = {}
            for k, v in six.iteritems(data):
                key = k.encode('utf-8')
                if isinstance(v, (list, tuple, set)):
                    udata[key] = [encode_atom(x) for x in v]
                elif isinstance(v, (six.integer_types, six.binary_type, six.string_types)):
                    udata[key] = encode_atom(v)
                else:
                    raise ValueError('data should be an integer, '
                                     'binary, or string, or sequence ')
            data = urlencode(udata, doseq=True)

        event = HttpEvent(method, uri, data)
        self.events.append(event)
        resp = make_twilio_request(method, uri, auth=self.auth, **kwargs)

        event.url = resp.url
        event.status_code = resp.status_code
        event.response_body = six.text_type(resp.content)

        if method == "DELETE":
            return resp, {}
        else:
            return resp, json.loads(resp.content)
Beispiel #3
0
    def request(self, method, uri, **kwargs):
        data = kwargs.get("data")
        if data is not None:
            udata = {}
            for k, v in data.items():
                key = k.encode("utf-8")
                if isinstance(v, (list, tuple, set)):
                    udata[key] = [encode_atom(x) for x in v]
                elif isinstance(v, (int, bytes, str)):
                    udata[key] = encode_atom(v)
                else:
                    raise ValueError("data should be an integer, "
                                     "binary, or string, or sequence ")
            data = urlencode(udata, doseq=True)

        del kwargs["auth"]
        event = HttpEvent(method, uri, data)
        if "/messages" in uri.lower() or "/calls" in uri.lower():
            self.events.append(event)
        resp = super().request(method, uri, auth=self.auth, **kwargs)

        event.url = uri
        event.status_code = resp.status_code
        event.response_body = force_text(resp.content)

        return resp