Here are the examples of the python api requests.compat.urlencode taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
21 Examples
3
Example 1
Project: djangopackages Source File: test_package.py
def test_02_category_packages(self):
querystring_filter_app = {
'category__slug': self.app.slug
}
base_url = reverse('apiv3:package_list')
url_app_pkg = "%s?%s" % (base_url, urlencode(querystring_filter_app))
response_app_pkg = self.client.get(url_app_pkg)
# check that the request was successful
self.assertEqual(response_app_pkg.status_code, 200)
# check that we have correct number of packages in filter
raw_json_app_pkg = response_app_pkg.content
app_pkg = json.loads(raw_json_app_pkg)
app_pkg_count = int(app_pkg['meta']['total_count'])
self.assertEqual(app_pkg_count, self.app.package_set.count() + 1)
# Check that we have filter applied correclty
app_package_slug_list = self.app.package_set.values_list('slug', flat=True)
self.assertIn(self.pkg1.slug, app_package_slug_list)
self.assertIn(self.pkg2.slug, app_package_slug_list)
3
Example 2
Project: python-scrapinghub Source File: legacy.py
def _get(self, method, format, params=None, headers=None, raw=False):
"""Performs GET request"""
from requests.compat import urlencode
url = self._build_url(method, format)
if params:
url = "{0}?{1}".format(url, urlencode(params, True))
return self._request(url, None, headers, format, raw)
3
Example 3
Project: DPyLA Source File: api.py
def _singleValueFormatter(self, param_name, value):
"""
Creates an encoded URL fragment for parameters that contain only a single value
"""
return urlencode({param_name: value})
3
Example 4
Project: DPyLA Source File: api.py
def _multiValueFormatter(self, param_name, values):
"""
Creates an encoded URL fragment for parameters that may contain multiple values.
"""
return urlencode({param_name: ','.join(values)})
3
Example 5
Project: DPyLA Source File: api.py
def _searchFieldsFormatter(self, searchFields):
"""
Creates an encoded URL fragment for searching for a value within a specific field.
If multiple fields are specified, a single string is returned
"""
sf = [urlencode({k:v}) for k,v in searchFields.items() if k in settings.searchable_fields]
return '&'.join(sf)
3
Example 6
@property
def params(self):
return urlencode(OrderedDict([
('cbtt', self.getvalue('station')),
('interval', 'instant'),
('format', 2),
('back', 360)
]))
3
Example 7
Project: libgreader Source File: auth.py
def buildAuthUrl(self):
args = {
'client_id': self.client_id,
'redirect_uri': self.redirect_uri,
'scope': ' '.join(self.SCOPE),
'response_type': 'code',
}
return self.AUTHORIZATION_URL + '?' + urlencode(args)
0
Example 8
Project: SickRage Source File: generic.py
def _request(self, method='get', params=None, data=None, files=None, cookies=None): # pylint: disable=too-many-arguments, too-many-return-statements
"""
Makes the actual request for the client, for everything except auth
"""
if time.time() > self.last_time + 1800 or not self.auth:
self.last_time = time.time()
self._get_auth()
log_string = '{0}: Requested a {1} connection to url {2}'.format(
self.name, method.upper(), self.url)
if params:
log_string += '?{0}'.format(urlencode(params))
if data:
log_string += ' and data: {0}{1}'.format(
str(data)[0:99], '...' if len(str(data)) > 100 else '')
logger.log(log_string, logger.DEBUG)
if not self.auth:
logger.log('{0}: Authentication Failed'.format(self.name), logger.WARNING)
return False
try:
self.response = self.session.request(
method.upper(), self.url, params=params, data=data,
files=files, cookies=cookies, timeout=120, verify=False)
self.response.raise_for_status()
except Exception as error:
helpers.handle_requests_exception(error)
return False
logger.log('{0}: Response to the {1} request is {2}'.format
(self.name, method.upper(), self.response.text), logger.DEBUG)
return True
0
Example 9
Project: SickRage Source File: putio_client.py
def _get_auth(self):
self.url = 'https://api.put.io/login'
self.session.headers['Accept'] = 'application/json'
next_params = {
'client_id': self.client_id,
'response_type': 'token',
'redirect_uri': self.redirect_uri
}
post_data = {
'name': self.username,
'password': self.password,
'next': '/v2/oauth2/authenticate?' + urlencode(next_params)
}
try:
response = self.session.post(self.url, data=post_data,
allow_redirects=False)
response.raise_for_status()
response = self.session.get(response.headers['location'],
allow_redirects=False)
response.raise_for_status()
resulting_uri = '{redirect_uri}#access_token=(.*)'.format(
redirect_uri=re.escape(self.redirect_uri))
self.auth = re.search(resulting_uri, response.headers['location']).group(1)
except Exception as error:
helpers.handle_requests_exception(error)
self.auth = None
return self.auth
0
Example 10
@staticmethod
def _send_prowl(prowl_api=None, prowl_priority=None, event=None, message=None, force=False):
if not sickbeard.USE_PROWL and not force:
return False
if prowl_api is None:
prowl_api = sickbeard.PROWL_API
if len(prowl_api) == 0:
return False
if prowl_priority is None:
prowl_priority = sickbeard.PROWL_PRIORITY
title = sickbeard.PROWL_MESSAGE_TITLE
logger.log(u"PROWL: Sending notice with details: title=\"{0}\" event=\"{1}\", message=\"{2}\", priority={3}, api={4}".format(title, event, message, prowl_priority, prowl_api), logger.DEBUG)
http_handler = HTTPSConnection("api.prowlapp.com")
data = {'apikey': prowl_api,
'application': title,
'event': event,
'description': message.encode('utf-8'),
'priority': prowl_priority}
try:
http_handler.request("POST",
"/publicapi/add",
headers={'Content-type': "application/x-www-form-urlencoded"},
body=urlencode(data))
except (SSLError, HTTPException, socket.error):
logger.log(u"Prowl notification failed.", logger.ERROR)
return False
response = http_handler.getresponse()
request_status = response.status
if request_status == 200:
logger.log(u"Prowl notifications sent.", logger.INFO)
return True
elif request_status == 401:
logger.log(u"Prowl auth failed: {0}".format(response.reason), logger.ERROR)
return False
else:
logger.log(u"Prowl notification failed.", logger.ERROR)
return False
0
Example 11
Project: SickRage Source File: pytivo.py
def update_library(self, ep_obj):
# Values from config
if not sickbeard.USE_PYTIVO:
return False
host = sickbeard.PYTIVO_HOST
shareName = sickbeard.PYTIVO_SHARE_NAME
tsn = sickbeard.PYTIVO_TIVO_NAME
# There are two more values required, the container and file.
#
# container: The share name, show name and season
#
# file: The file name
#
# Some slicing and dicing of variables is required to get at these values.
#
# There might be better ways to arrive at the values, but this is the best I have been able to
# come up with.
#
# Calculated values
showPath = ep_obj.show.location
showName = ep_obj.show.name
rootShowAndSeason = ek(os.path.dirname, ep_obj.location)
absPath = ep_obj.location
# Some show names have colons in them which are illegal in a path location, so strip them out.
# (Are there other characters?)
showName = showName.replace(":", "")
root = showPath.replace(showName, "")
showAndSeason = rootShowAndSeason.replace(root, "")
container = shareName + "/" + showAndSeason
filename = "/" + absPath.replace(root, "")
# Finally create the url and make request
requestUrl = "http://" + host + "/TiVoConnect?" + urlencode(
{'Command': 'Push', 'Container': container, 'File': filename, 'tsn': tsn})
logger.log(u"pyTivo notification: Requesting " + requestUrl, logger.DEBUG)
request = Request(requestUrl)
try:
urlopen(request)
except HTTPError as e:
if hasattr(e, 'reason'):
logger.log(u"pyTivo notification: Error, failed to reach a server - " + e.reason, logger.ERROR)
return False
elif hasattr(e, 'code'):
logger.log(u"pyTivo notification: Error, the server couldn't fulfill the request - " + e.code, logger.ERROR)
return False
except Exception as e:
logger.log(u"PYTIVO: Unknown exception: " + ex(e), logger.ERROR)
return False
else:
logger.log(u"pyTivo notification: Successfully requested transfer of file")
return True
0
Example 12
def _get_title_and_url(self, item):
title = item.get('name', '').replace(' ', '.')
url = self.urls['download'] + '?' + urlencode({'id': item['id'], 'passkey': self.passkey})
return title, url
0
Example 13
def search(self, search_params, age=0, ep_obj=None): # pylint: disable=too-many-locals
''' Do the actual searching and JSON parsing'''
results = []
for mode in search_params:
items = []
logger.log('Search Mode: {0}'.format(mode), logger.DEBUG)
for search_string in search_params[mode]:
if mode != 'RSS':
logger.log('Search string: {0}'.format
(search_string.decode('utf-8')), logger.DEBUG)
post_data = {
'username': self.username,
'passkey': self.passkey,
'category': '2', # TV Category
'search': search_string,
}
self._check_auth()
parsed_json = self.get_url(self.urls['search'],
post_data=json.dumps(post_data),
returns='json')
if not parsed_json:
return results
if self._checkAuthFromData(parsed_json):
json_items = parsed_json.get('data', '')
if not json_items:
logger.log('Resulting JSON from provider is not correct, '
'not parsing it', logger.ERROR)
for item in json_items.get('torrents', []):
title = item.pop('name', '')
download_url = '{0}{1}'.format(
self.urls['download'],
urlencode({'id': item.pop('id', ''), 'passkey': self.passkey}))
if not all([title, download_url]):
continue
seeders = try_int(item.pop('seeders', 0))
leechers = try_int(item.pop('leechers', 0))
if seeders < self.minseed or leechers < self.minleech:
logger.log('Discarding torrent because it does not meet '
'the minimum seeders or leechers: {0} (S:{1} L:{2})'.format
(title, seeders, leechers), logger.DEBUG)
continue
info_hash = item.pop('info_hash', '')
size = convert_size(item.pop('size', -1), -1)
item = {'title': title, 'link': download_url, 'size': size, 'seeders': seeders, 'leechers': leechers, 'hash': info_hash}
if mode != 'RSS':
logger.log('Found result: {0} with {1} seeders and {2} leechers'.format(
title, seeders, leechers), logger.DEBUG)
items.append(item)
# For each search mode sort all the items by seeders if available
items.sort(key=lambda d: try_int(d.get('seeders', 0)), reverse=True)
results += items
return results
0
Example 14
def _repr(self):
return '<SearchIterator [{0}, {1}?{2}]>'.format(self.count, self.path,
urlencode(self.params))
0
Example 15
def url_for(action, **params):
url = ('/' if action[0] != '/' else '') + action
if params:
url += '?' + urlencode(params, doseq=True)
return url
0
Example 16
Project: DPyLA Source File: api.py
def _facetSpatialFormatter(self, spatial_facet):
coords = "sourceResource.spatial.coordinates:{}:{}".format(*spatial_facet)
return urlencode({"facets": coords})
0
Example 17
def req(self, url=None, method=None, params=None, body=None, headers={}):
if url is None:
url = self.url
if url is None:
raise LoadFailed("No URL provided")
if params is None:
params = getattr(self, 'params', None)
if isinstance(params, str):
url += '?' + params
params = None
if self.debug:
if params:
from requests.compat import urlencode
debug_url = url + '?' + urlencode(params, doseq=True)
else:
debug_url = url
self.debug_string = "%s: %s" % (method, debug_url)
print(self.debug_string)
if self.username is not None and self.password is not None:
auth = (self.username, self.password)
else:
auth = None
all_headers = self.headers.copy()
all_headers.update(headers)
resp = requests.request(
method, url,
params=params,
headers=all_headers,
auth=auth,
data=body,
)
resp.connection.close()
if resp.status_code < 200 or resp.status_code > 299:
raise LoadFailed(
resp.text,
path=url,
code=resp.status_code,
)
if self.binary:
return resp.content
else:
return resp.text
0
Example 18
Project: cleverbot.py Source File: cleverbot.py
def _send(self):
"""POST the user's question and all required information to the
Cleverbot API
Cleverbot tries to prevent unauthorized access to its API by
obfuscating how it generates the 'icognocheck' token. The token is
currently the md5 checksum of the 10th through 36th characters of the
encoded data. This may change in the future.
TODO: Order is not guaranteed when urlencoding dicts. This hasn't been
a problem yet, but let's look into ordered dicts or tuples instead.
"""
# Set data as appropriate
if self.conversation:
linecount = 1
for line in reversed(self.conversation):
linecount += 1
self.data['vText' + str(linecount)] = line
if linecount == 8:
break
# Generate the token
enc_data = urlencode(self.data)
digest_txt = enc_data[9:35]
token = hashlib.md5(digest_txt.encode('utf-8')).hexdigest()
self.data['icognocheck'] = token
# POST the data to Cleverbot's API and return
return self.session.post(Cleverbot.API_URL,
data=self.data,
headers=Cleverbot.headers)
0
Example 19
@property
def params(self):
start = self.getvalue('start_date')
end = self.getvalue('end_date')
params, params_is_complex = self.getlist('parameter')
pcodes = [
"%s %s" % (self.getvalue('station'), param)
for param in params
]
# Note: The USBR Perl scripts are pretty quirky: a specific ordering of
# URL parameters is important for proper function.
return urlencode(OrderedDict([
('parameter', ",".join(pcodes)),
('syer', start.year),
('smnth', start.month),
('sdy', start.day),
('eyer', end.year),
('emnth', end.month),
('edy', end.day),
('format', 2),
]))
0
Example 20
@staticmethod
def _encode_params(data):
"""Encode parameters in a piece of data.
Will successfully encode parameters when passed as a dict or a list of
2-tuples. Order is retained if data is a list of 2-tuples but arbitrary
if parameters are supplied as a dict.
"""
if data is None:
return ''
elif isinstance(data, six.string_types):
return data
elif hasattr(data, 'read'):
return data
elif hasattr(data, '__iter__'):
result = []
for k, vs in sorted(CaseInsensitiveDict(data).lower_items()):
if isinstance(vs, six.string_types) or not hasattr(vs, '__iter__'):
vs = [vs]
for v in vs:
if v is not None:
result.append(
(k.encode('utf-8') if isinstance(k, str) else k,
v.encode('utf-8') if isinstance(v, str) else v))
return urlencode(result, doseq=True)
else:
return data
0
Example 21
def getParameters(self, extraargs=None):
parameters = {'ck':time.time(), 'client':self.client}
if extraargs:
parameters.update(extraargs)
return urlencode(parameters)