#  pylint: disable=missing-module-docstring
#
# This module contains all the RPC-related functions the RHN code uses
#
# Copyright (c) 2016 Red Hat, Inc.
# Copyright (c) 2022 SUSE, LLC
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from sys import version_info

try:
    PY3 = version_info.major >= 3
except AttributeError:
    PY3 = False


def ustr(obj):
    # converts object to unicode like object
    if PY3:  # python3
        if isinstance(obj, str):
            return obj
        else:
            return str(obj, "utf8", errors="ignore")
    else:  # python2
        # pylint: disable-next=undefined-variable
        if isinstance(obj, unicode):
            return obj
        # pylint: disable-next=undefined-variable
        return unicode(obj, "utf8", "ignore")


def bstr(obj):
    # converts object to bytes like object
    if PY3:  # python3
        if isinstance(obj, bytes):
            return obj
        else:
            return bytes(obj, "utf8", errors="ignore")
    else:  # python2
        if isinstance(obj, str):
            return obj
        return str(obj.encode("utf8", "ignore"))


def sstr(obj):
    # converts object to string
    if PY3:  # python3
        if isinstance(obj, str):
            return obj
        else:
            return str(obj, "utf8", errors="ignore")
    else:  # python2
        if isinstance(obj, str):
            return obj
        return str(obj.encode("utf8", "ignore"))
