<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def getState(self, **kwargs):
 """Get the state of a thing :param thing: a string with the name of the thing, which is then checked using getThings. :param thingUri: Uri (string) of the thing you are getting the state from, not checked against getThings. :return: a dict with the state of the Thing. :raises: ValueError if the requested thing does not exists. NameError if not logged in. SyntaxError when not exactly one of the params is given. """

        login_return = self._is_logged_in()
        if "thingUri" in kwargs:
            thingUri = kwargs['thingUri']
        elif "thing" in kwargs:
            thing = kwargs['thing']
            for t in self._getThings():
                if 'NAME' in t:
                    if  t['NAME'] == thing and 'thingUri' in t:
                        thingUri = t['thingUri']
                        break
                    else:
                        raise ValueError('Unknown thing: ' + thing)
                else:
                    raise ValueError('No things available.')
        else:
            return SyntaxError("Please provide either the 'thing' name or the 'thingUri' not both and at least one")
        data = {
            "path": "/thing" + thingUri,
            "host": "https://thing.brunt.co:8080" 
        }
        resp = self._http.request(data, RequestTypes.GET)
        resp.update(login_return)
        return resp