aboutsummaryrefslogtreecommitdiff
path: root/addons/service.xbmc.versioncheck/resources/lib/version_check/json_interface.py
blob: fec2859448b3ac11c3254a11fd095a5d02497857 (plain)
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
63
64
65
66
67
# -*- coding: utf-8 -*-

"""

    Copyright (C) 2013-2014 Team-XBMC
    Copyright (C) 2014-2019 Team Kodi

    This file is part of service.xbmc.versioncheck

    SPDX-License-Identifier: GPL-3.0-or-later
    See LICENSES/GPL-3.0-or-later.txt for more information.

"""

from contextlib import closing
import json
import os
import sys

import xbmc  # pylint: disable=import-error
import xbmcvfs  # pylint: disable=import-error

from .common import ADDON_PATH


def get_installed_version():
    """ Retrieve the currently installed version

    :return: currently installed version
    :rtype: dict
    """
    query = {
        "jsonrpc": "2.0",
        "method": "Application.GetProperties",
        "params": {
            "properties": ["version", "name"]
        },
        "id": 1
    }
    json_query = xbmc.executeJSONRPC(json.dumps(query))
    if sys.version_info[0] >= 3:
        json_query = str(json_query)
    else:
        json_query = unicode(json_query, 'utf-8', errors='ignore')  # pylint: disable=undefined-variable
    json_query = json.loads(json_query)
    version_installed = []
    if 'result' in json_query and 'version' in json_query['result']:
        version_installed = json_query['result']['version']
    return version_installed


def get_version_file_list():
    """ Retrieve version lists from supplied version file (resources/versions.txt)

    :return: all provided versions
    :rtype: dict
    """
    version_file = os.path.join(ADDON_PATH, 'resources/versions.txt')
    with closing(xbmcvfs.File(version_file)) as open_file:
        data = open_file.read()

    if sys.version_info[0] >= 3:
        version_query = str(data)
    else:
        version_query = unicode(data, 'utf-8', errors='ignore')  # pylint: disable=undefined-variable
    version_query = json.loads(version_query)
    return version_query