-
Notifications
You must be signed in to change notification settings - Fork 0
/
internals.py
67 lines (48 loc) · 2.05 KB
/
internals.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from requests import Request
from requests.compat import urljoin
from BeautifulSoup import BeautifulSoup
def _prepare_request(lex_session, url, params, data, auth, files):
"""Return a requests Request object that can be "prepared"."""
headers = {}
headers.update(lex_session.http.headers)
request = Request(method='GET', url=url, headers=headers, params=params, auth=auth, cookies=lex_session.http.cookies)
if not data and not files: # GET request
return request
if not auth:
data.setdefault('api_type', 'json')
request.method = 'POST'
request.data = data
request.files = files
return request
def _get_sorter(order=''):
"""Return a function to generate specific plugin listings."""
if order == '':
order = 'recent'
def _sorted(self, *args, **kwargs):
if not kwargs.get('params'):
kwargs['params'] = {}
for key, value in self._params.iteritems():
kwargs['params'].setdefault(key, value)
kwargs['params'].setdefault('order_by', order)
url = self._url
return self.lex_session.get_content(url, *args, **kwargs)
return _sorted
def _get_user_plugins(user_id='', query='downloaded'):
"""Return function to generate a list of a User's plugins."""
def _plugins(self, order='', *args, **kwargs):
"""Return a get_content generator for some LEXContentObject type."""
if not user_id:
user_id = self.user.id
if query == 'uploaded':
kwargs.setdefault('params', {})
kwargs['params'].setdefault('creator', user_id)