def _send(self, data): uri = Soup.URI.new(self._url) message = Soup.Message(method='POST', uri=uri) message.request_headers.append('x-api-key', self._api_key) message.set_request(self.TYPE, Soup.MemoryUse.COPY, data, len(data)) message.connect('network-event', self.__network_event_cb) message.connect('wrote-body-data', self.__wrote_body_data_cb) message.connect('finished', self.__finished_cb) session = Soup.SessionSync() session.add_feature_by_type(Soup.ProxyResolverDefault) session.send_message(message)
def _request(self, method, url, data, content): uri = Soup.URI.new(url) message = Soup.Message(method=method, uri=uri) message.request_body.append(data) message.request_headers.append('Content-Type', content) message.request_headers.append('Authorization', self._authorize()) #logger = Soup.Logger.new(Soup.LoggerLogLevel.BODY, -1) session = Soup.SessionSync() #session.add_feature(logger) session.add_feature_by_type(Soup.ProxyResolverDefault) session.send_message(message) self._data = message.response_body.data if not 200 <= message.status_code < 300: raise ZendeskError(self._data)
import json import logging import gi from contextlib import contextmanager gi.require_version('SoupGNOME', '2.4') from gi.repository import Gio, Soup, SoupGNOME from urllib.parse import urlencode from friends.errors import FriendsError log = logging.getLogger(__name__) # Global libsoup session instance. _soup = Soup.SessionSync() # Enable this for full requests and responses dumped to STDOUT. #_soup.add_feature(Soup.Logger.new(Soup.LoggerLogLevel.BODY, -1)) _soup.add_feature(SoupGNOME.ProxyResolverGNOME()) def _get_charset(message): """Extract charset from Content-Type header in a Soup Message.""" type_header = message.response_headers.get_content_type()[1] if not type_header: return None return type_header.get('charset') class BaseRateLimiter: """Base class for the rate limiting API.