]> kaliko git repositories - sid.git/blob - sid/lib.py
Add Debian archive plugin
[sid.git] / sid / lib.py
1 # coding: utf-8
2
3 import json
4 import logging
5
6 from urllib.error import URLError, HTTPError
7 from urllib.request import Request, urlopen
8 from urllib.parse import urlencode
9
10
11 def get_pkg(pkg):
12     """
13     Uses the DAK HTTP api
14     https://ftp-team.pages.debian.net/dak/epydoc/dakweb.queries.madison-module.html
15     """
16     logger = logging.getLogger(__package__)
17     data = {}
18     data['package'] = pkg
19     data['f'] = ''
20     values = urlencode(data)
21     url = f'https://api.ftp-master.debian.org/madison?{values}'
22     logger.debug(url)
23     req = Request(url, method='GET')
24     try:
25         response = urlopen(req)
26         ans = response.read()
27         #print(response.getcode())
28     except HTTPError as err:
29         logger.info('The server couldn\'t fulfill the request.')
30         logger.debug('Error code: %s', err.code)
31     except URLError as err:
32         logger.info('We failed to reach a server.')
33         logger.debug('Reason: %s', err.reason)
34     try:
35         pkg_info = json.loads(ans)
36     except Exception as err:
37         logger.error('Failed to decode json')
38     if not pkg_info:
39         return []
40     return pkg_info[0][pkg]
41
42
43 # Script starts here
44 if __name__ == '__main__':
45     pass
46
47 # VIM MODLINE
48 # vim: ai ts=4 sw=4 sts=4 expandtab fileencoding=utf8